可能重複:
What are the performance characteristics of sqlite with very large database files?數據庫含7億條記錄
我想創建一個使用數據庫的.NET應用程序將包含在一個約700萬條記錄的表格。我想知道SQLite的性能是否會滿足這種情況,或者我應該使用SQL Server。我喜歡SQLite給我的可移植性。
可能重複:
What are the performance characteristics of sqlite with very large database files?數據庫含7億條記錄
我想創建一個使用數據庫的.NET應用程序將包含在一個約700萬條記錄的表格。我想知道SQLite的性能是否會滿足這種情況,或者我應該使用SQL Server。我喜歡SQLite給我的可移植性。
肯定用於SQL Server。 SQLite中的7億條記錄太多了。
使用SQLite你有以下限制
退房此線程:What are the performance characteristics of sqlite with very large database files?
的SQLite應該能夠處理這麼多的數據。但是,您可能必須將其配置爲允許它增長到這種大小,並且根據一般原則,您不應該在SQLite的「內存中」實例中擁有這麼多數據。
有關更多詳細信息,請參見this page,它解釋了SQLite引擎的實際限制。相關的配置設置是頁面大小(通常爲64KB)和頁數(高達64位int的最大值約爲21億)。做數學,整個數據庫可能會佔用超過140TB。一個由700米行組成的單個數據庫的數據庫數量將達到數十個演出的數量級;易於管理。
但是,僅僅因爲SQLite可以存儲那麼多的數據並不意味着你應該。 SQLite用於大型數據存儲的最大缺點是SQLite代碼作爲流程的一部分運行,使用調用它的線程並佔用沙箱中的內存。您無法獲得面向服務器的DBMS中可用於「分而治之」大型查詢或數據存儲的工具,如複製/集羣。在處理這樣的大型表格時,插入/刪除操作需要很長時間才能將其放在正確的位置並更新所有索引。選擇可以是可居住的,但只能在索引查詢中使用;一個頁面或表格掃描將絕對會殺死你。
我已經有類似的記錄計數和檢索明智的問題沒有問題的表。
對於初學者來說,硬件和服務器分配是您可以啓動的地方。爲例子看到這一點:http://www.sqlservercentral.com/blogs/glennberry/2009/10/29/suggested-max-memory-settings-for-sql-server-2005_2F00_2008/
無論規模還是隻要記錄數的你:
你應該罰款。另外,爲每列設置適當的列類型/大小將有所幫助。
700m是很多。
給你一個想法。假設您的記錄大小爲4個字節(基本上存儲單個值),那麼您的數據庫將超過2GB。如果您的記錄大小接近100個字節,則它接近65GB ...(這不包括索引和事務日誌文件等使用的空間)。
我們在大型數據庫方面做了很多工作,我從來不會考慮SQLLite來處理這些大小的任何事情。坦率地說,「可移植性」是您在這方面最擔心的問題。爲了以任何類型的響應性查詢該大小的數據庫,您將需要適當大小的數據庫服務器。我會開始與32GB的RAM和快速驅動器。
如果它的寫入重量高達90%以上,則可能會使用較小的RAM。如果讀取的數據量很大,那麼您需要嘗試構建它,以便機器可以儘可能多地將數據庫(或至少索引)加載到RAM中。否則,您將依賴於磁盤主軸速度。
可移植性被高估。 – jason 2012-04-10 17:17:34