2010-05-06 66 views
27

我已經閱讀了他們的限制FAQ,他們討論了除了整個數據庫的限制之外的許多限制。是否對SQLite數據庫的大小有限制?

+0

另請參閱[最大數量的行在一個sqlite表](http:// stackoverflow.com/questions/1546947/maximum-number-of-rows-in-a-sqlite-table) – nawfal 2013-06-12 08:53:30

+0

請看看他們自己的文檔http://www.sqlite.org/limits.html。 ,可這也http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems#Limits – VivekDev 2015-12-17 03:43:57

+1

同樣[可SQLite的處理千兆字節的數據?(https://www.quora.com/Can-SQLite-handle-gigabytes數據)和http://stackoverflow.com/q/3160987/632951和http://stackoverflow.com/q/784173/632951實際限制。 – Pacerier 2017-01-27 17:41:38

回答

36

這是很容易從implementation limits頁推斷:

SQLite數據庫文件被組織爲頁面。每個頁面的大小在512和SQLITE_MAX_PAGE_SIZE之間是2的冪。對於SQLITE_MAX_PAGE_SIZE的默認值是32768

...

的SQLITE_MAX_PAGE_COUNT參數,這是通常設置爲1073741823,是允許在一個單一的數據庫文件的最大頁數。嘗試插入新數據會導致數據庫文件增長得比此更大,將返回SQLITE_FULL。

因此,我們有32768 * 1073741823,這是35,184,372,056,064(35個萬億字節)!

您可以在源代碼中修改SQLITE_MAX_PAGE_COUNTSQLITE_MAX_PAGE_SIZE,但這當然需要爲您的應用程序定製生成SQLite。據我所知,除了編譯時,沒有辦法設置限制編程(但我很樂意被證明是錯誤的)。

+4

只是根據實施限制頁面(http://www.sqlite.org/limits.html)更新今天(2014年)的限制:現在限制大約爲140 TB(最大頁面大小= 65536,每個數據庫限制2,147,483,646個頁面) – laurent 2014-04-20 21:45:13

+0

您還必須生活在操作系統對文件夾和文件大小等的限制之內。 – ZuLu 2014-12-30 17:04:15

18

new limits,現在數據庫的大小限制爲128TB:

每個數據庫都包含一個或多個「頁」。在單個數據庫中,每個頁面的大小相同,但不同的數據庫的頁面大小可以在512到65536之間,包含兩個冪。數據庫文件的最大大小是2147483646頁。在最大頁面大小爲65536字節時,這會轉化爲大約1.4e + 14字節(140兆兆字節或128兆字節,或140,000千兆字節或128,000千兆字節)的最大數據庫大小。

這個特定的上限未經測試,因爲開發人員無法訪問能夠達到此限制的硬件。但是,當數據庫達到底層文件系統的最大文件大小(通常遠小於理論上的最大數據庫大小)以及由於磁盤空間耗盡而導致數據庫無法增長時,測試確實證實SQLite的行爲正確和理智。

0

SQLite中字符串或BLOB中的最大字節數由預處理器宏SQLITE_MAX_LENGTH定義。這個宏的默認值是10億(1億或1,000,000,000)。

當前實現只支持一個字符串或BLOB長度可達231-1或2147483647

爲SQLITE_MAX_COLUMN的默認設置爲2000。可以大在編譯時改變它值32767在另一方面,許多經驗豐富的數據庫設計人員會爭辯說,規範化良好的數據庫永遠不會需要超過100列的表格。

SQLite不支持包含超過64個表的連接。

表中的理論最大行數是264(18446744073709551616或約1.8e + 19)。這個限制是無法訪問的,因爲最大數據庫大小將達到140 TB。DB的

最大尺寸:140兆兆字節

請檢查網址以獲得更多信息:https://www.sqlite.org/limits.html

0

儘管這是一個老問題,但讓我分享我的發現爲人們誰達到了這個問題。

儘管Sqlite文檔聲明數據庫文件的最大大小是〜140 TB,但是您的操作系統強制它自己限制任何類型文件的最大文件大小。

例如,如果您在Windows上使用FAT32磁盤,我可以爲sqLite實現的最大文件大小爲2GB。 (根據微軟網站,對FAT 32系統的限制是4GB但仍然我的sqlite數據庫大小限制爲2GB)。在Linux上,我能夠達到3 GB(我停止了,它可能已經達到了更大的尺寸)

相關問題