2012-04-10 53 views

回答

2

的SQLite應該能夠處理這麼多的數據。但是,您可能必須將其配置爲允許它增長到這種大小,並且根據一般原則,您不應該在SQLite的「內存中」實例中擁有這麼多數據。

有關更多詳細信息,請參見this page,它解釋了SQLite引擎的實際限制。相關的配置設置是頁面大小(通常爲64KB)和頁數(高達64位int的最大值約爲21億)。做數學,整個數據庫可能會佔用超過140TB。一個由700米行組成的單個數據庫的數據庫數量將達到數十個演出的數量級;易於管理。

但是,僅僅因爲SQLite可以存儲那麼多的數據並不意味着你應該。 SQLite用於大型數據存儲的最大缺點是SQLite代碼作爲流程的一部分運行,使用調用它的線程並佔用沙箱中的內存。您無法獲得面向服務器的DBMS中可用於「分而治之」大型查詢或數據存儲的工具,如複製/集羣。在處理這樣的大型表格時,插入/刪除操作需要很長時間才能將其放在正確的位置並更新所有索引。選擇可以是可居住的,但只能在索引查詢中使用;一個頁面或表格掃描將絕對會殺死你。

0

我已經有類似的記錄計數和檢索明智的問題沒有問題的表。

對於初學者來說,硬件和服務器分配是您可以啓動的地方。爲例子看到這一點:http://www.sqlservercentral.com/blogs/glennberry/2009/10/29/suggested-max-memory-settings-for-sql-server-2005_2F00_2008/

無論規模還是隻要記錄數的你:

  • 建立外鍵(S)指標,
  • 店常用的查詢視圖中(HTTP:// en.wikipedia.org/wiki/View_%28database%29)
  • 和維護數據庫和表定期

你應該罰款。另外,爲每列設置適當的列類型/大小將有所幫助。

2

700m是很多。

給你一個想法。假設您的記錄大小爲4個字節(基本上存儲單個值),那麼您的數據庫將超過2GB。如果您的記錄大小接近100個字節,則它接近65GB ...(這不包括索引和事務日誌文件等使用的空間)。

我們在大型數據庫方面做了很多工作,我從來不會考慮SQLLite來處理這些大小的任何事情。坦率地說,「可移植性」是您在這方面最擔心的問題。爲了以任何類型的響應性查詢該大小的數據庫,您將需要適當大小的數據庫服務器。我會開始與32GB的RAM和快速驅動器。

如果它的寫入重量高達90%以上,則可能會使用較小的RAM。如果讀取的數據量很大,那麼您需要嘗試構建它,以便機器可以儘可能多地將數據庫(或至少索引)加載到RAM中。否則,您將依賴於磁盤主軸速度。

相關問題