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

时间:2010-05-06 01:53:02

标签: sqlite

我已经阅读了他们的限制常见问题解答,他们谈到了除了整个数据库的限制之外的许多限制。

5 个答案:

答案 0 :(得分:40)

这很容易从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。据我所知,除了编译时,没有办法以编程方式设置限制(但我很高兴被证明是错误的)。

答案 1 :(得分:20)

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

  

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

     

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

答案 2 :(得分:3)

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

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

例如如果您在Windows上使用 FAT32磁盘,我可以为sqLite db文件实现的最大文件大小为 2GB 。 (据微软网站称,FAT 32系统的限制是 4GB ,但我的sqlite数据库大小仍被限制为2GB)。在Linux上,我能够达到3 GB(我停在哪里。它可以达到更大的尺寸)

注意:我编写了一个小的java程序,它将从0行开始填充sqlite db并继续填充,直到给出stop命令。

答案 3 :(得分:1)

新的限制是 281 TB。 https://www.sqlite.org/limits.html

enter image description here

答案 4 :(得分:0)

SQLite中字符串或BLOB中的最大字节数由预处理器宏SQLITE_MAX_LENGTH定义。此宏的默认值为10亿(十亿或1,000,000,000)。

当前实现仅支持字符串或BLOB长度最大为231-1或2147483647

SQLITE_MAX_COLUMN的默认设置是2000.您可以在编译时将其更改为最大值32767.另一方面,许多有经验的数据库设计人员会认为,规范良好的数据库永远不会需要超过100列。一张桌子。

SQLite不支持包含超过64个表的连接。

表中的理论最大行数为2^64(18446744073709551616或约1.8e + 19)。此限制无法访问,因为将首先达到140 TB的最大数据库大小。

DB的最大大小:140 TB

请查看网址以获取更多信息:https://www.sqlite.org/limits.html