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_COUNT或SQLITE_MAX_PAGE_SIZE源,但这个过程将需要的SQLite的自定义生成您的应用.据我所知,除了编译时,没有办法以编程方式设置限制(但我很高兴被证明是错误的).
Man*_*ero 20
它有新的限制,现在数据库大小限制为128TB:
每个数据库都包含一个或多个"页面".在单个数据库中,每个页面的大小相同,但不同的数据库的页面大小可以是512到65536之间的2的幂.数据库文件的最大大小为2147483646页.在最大页面大小为65536字节时,这意味着最大数据库大小约为1.4e + 14字节(140太字节,或128 tebibytes,或140,000千兆字节或128,000千字节).
由于开发人员无法访问能够达到此限制的硬件,因此未经测试此特定上限.但是,当数据库达到基础文件系统的最大文件大小(通常远小于最大理论数据库大小)并且数据库由于磁盘空间耗尽而无法增长时,测试会验证SQLite是否正确且正确地运行.
虽然这是一个老问题,但让我向提出这个问题的人分享我的发现。
尽管 Sqlite 文档指出数据库文件的最大大小约为 140 TB,但您的操作系统对任何类型的文件的最大文件大小都有自己的限制。
例如,如果您在 Windows 上使用FAT32 磁盘,我可以为 sqLite 数据库文件实现的最大文件大小为2GB。(根据 Microsoft 网站,FAT 32 系统的限制为4GB,但我的 sqlite 数据库大小仍然限制为 2GB)。在 Linux 上,我能够达到 3 GB(我停了下来。它本来可以达到更大的大小)
注意:我编写了一个小型 java 程序,它将从 0 行开始填充 sqlite 数据库,并继续填充直到给出停止命令。