SQLite数据库的大小是否有限制?

use*_*291 30 sqlite

我已经阅读了他们的限制FAQ,除了整个数据库的限制之外,他们谈论了许多限制.

Mar*_*off 40

这很容易从实现限制页面中推断出来:

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的自定义生成您的应用.据我所知,除了编译时,没有办法以编程方式设置限制(但我很高兴被证明是错误的).

  • 只是根据实施限制页面(http://www.sqlite.org/limits.html)更新今天的(2014)限制:现在的限制大约为140太字节(最大页面大小= 65536,每个数据库的限制为2,147,483,646页) (6认同)
  • 您还必须遵守操作系统对文件夹和文件大小等的限制。 (2认同)

Man*_*ero 20

它有新的限制,现在数据库大小限制为128TB:

每个数据库都包含一个或多个"页面".在单个数据库中,每个页面的大小相同,但不同的数据库的页面大小可以是512到65536之间的2的幂.数据库文件的最大大小为2147483646页.在最大页面大小为65536字节时,这意味着最大数据库大小约为1.4e + 14字节(140太字节,或128 tebibytes,或140,000千兆字节或128,000千字节).

由于开发人员无法访问能够达到此限制的硬件,因此未经测试此特定上限.但是,当数据库达到基础文件系统的最大文件大小(通常远小于最大理论数据库大小)并且数据库由于磁盘空间耗尽而无法增长时,测试会验证SQLite是否正确且正确地运行.


try*_*arn 5

虽然这是一个老问题,但让我向提出这个问题的人分享我的发现。

尽管 Sqlite 文档指出数据库文件的最大大小约为 140 TB,但您的操作系统对任何类型的文件的最大文件大小都有自己的限制。

例如,如果您在 Windows 上使用FAT32 磁盘,我可以为 sqLite 数据库文件实现的最大文件大小为2GB。(根据 Microsoft 网站,FAT 32 系统的限制为4GB,但我的 sqlite 数据库大小仍然限制为 2GB)。在 Linux 上,我能够达到 3 GB(我停了下来。它本来可以达到更大的大小)

注意:我编写了一个小型 java 程序,它将从 0 行开始填充 sqlite 数据库,并继续填充直到给出停止命令。