2015-04-04 180 views
6

我想建立一個teampeak 3服務器。我可以選擇SQLite和MySQL作爲數據庫。那麼我通常傾向於「不要在生產中使用SQLite」。但另一方面,這是一個團隊協作的服務器。好吧好吧,就讓我google一下...我發現這一點:SQLite比MySQL快嗎?

  • 速度
    的SQLite3比MySQL數據庫快得多。這是因爲文件數據庫總是比unix套接字更快。當我請求頻道的編輯花了上SQLite的3 MySQL數據庫(127.0.0.1)和幾乎瞬間(0.1秒)約0.5-1秒[...]
  • http://forum.teamspeak.com/showthread.php/77126-SQLite-vs-MySQL-Answer-is-here

    我不想啓動一個SQLite vs MySQL的辯論。我只想問:他的論點甚至有效嗎?我無法想象他說的是真的。但不幸的是,我並不擅長自己回答這個問題。

    也許TeamSpeak dev的SQLite和MySQL之間的db體系結構有一些主要差異,這說明了速度的巨大差異(我無法想象這一點)。

    +0

    我可以合理確定地說,SQLite在DROPPING表中速度較慢。我相信原因是MySQL存儲在獨立文件中的每個表,而SQLite的存儲整個數據庫在一個文件...需要搜索並摧毀,而不是僅僅刪除文件。花了1.5分鐘,刪除我的表,1秒刪除SQLite數據庫。 – gunslingor 2017-02-15 17:58:20

    回答

    4

    我還沒有親自測試SQLite vs MySQL,但很容易在Web上找到相反的示例(for instance)。你的確提出了一個不那麼虔誠的問題:這個論證是否有效?

    首先,論證的本質有點似是而非。 Unix套接字將用於與數據庫服務器進行通信。 「文件數據庫」似乎指的是通過編譯接口進行通信的事實。在SQLite的術語中,它是server-less。大多數數據庫將數據存儲在文件中,所以術語「文件數據庫」有點誤導。一個數據庫的

    性能涉及多種因素,如:查詢到數據庫

    • 通信。
    • 編譯速度(在此存儲預編譯查詢的能力)。
    • 加工速度。
    • 能夠處理複雜的處理。
    • 編譯器優化和執行引擎算法。
    • 將結果傳回給應用程序。

    將接口編譯進來會影響其中的第一個和最後一個。沒有什麼能夠阻止無服務器的數據庫在其他方面出類拔萃。但是,數據庫服務器通常是數百萬行代碼 - 比SQLite大得多。很多這些支持額外的功能。它的一些支持改進的優化和更好的算法。

    與大多數性能問題一樣,答案是要根據環境中的數據自行測試系統。無服務器不是自動性能增益。有一臺服務器不會使數據庫「更好」。它們是針對不同優化點設計的不同應用程序。

    +11

    [SQLite的自己的網站(https://www.sqlite.org/whentouse.html)說, 「SQLite不與客戶機/服務器的數據庫競爭。SQLite的有競爭的fopen()。」 – 2015-04-05 00:42:28

    0

    相關的區別在於SQLite使用更簡單的鎖定算法(簡單的全局數據庫鎖定)。

    使用細粒度鎖(如MySQL和大多數其他數據庫服務器做)是更復雜,如果只有一個單一的數據庫用戶比較慢,但是如果你想要讓更多的併發性要求。

    6

    在第一個接入時間將在SQLite的

    SQLite的訪問時間將在第一時間出現更快出現更快,但是這是一個小的用戶在線。 SQLite使用一個非常簡單的訪問算法,它的速度很快,但不處理併發。

    隨着數據庫開始增長,同時訪問的數量將開始受到影響。服務器處理多個請求的方式完全不同,方式也更復雜並且針對高併發性進行了優化。例如,如果更新正在進行,SQLite將鎖定整個表並排列訂單。

    RDBMS的讓很多額外的工作,使他們更具可擴展性

    的MySQL例如,即使單個用戶將創建一個訪問隊列,鎖表部分,而不是讓用戶每次執行只有單,以及其他非常複雜的任務,以確保數據庫仍然可以被任何其他同時訪問訪問。

    這將使單個用戶的連接速度較慢,但​​在未來,當用戶100的在線不負有心人,在這種情況下,簡單的 「鎖定整個表並執行一個查詢每次」 程序的SQLite會佔用服務器。

    SQLite是爲了簡單和自包含的數據庫應用程序而製作的。

    如果您希望一次有10個同時訪問數據庫的寫入操作,那麼SQLite可能會表現良好,但您不希望使用SQLite不斷向數據庫寫入和讀取數據的100個用戶應用程序。它不是爲這種情況設計的,它會浪費資源。

    考慮您的TeamSpeak情況下,你很可能會確定使用SQLite,甚至一些業務是好的,一些網站需要增加新的內容時將只讀除非數據庫。

    對於這種用途SQLite是一個便宜,易於實施,自包含,完美的解決方案,將完成工作。

    +0

    你能提供一些資料嗎? – ranisalt 2017-01-25 16:35:51