2010-05-06 62 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(我停止了,它可能已经达到了更大的尺寸)

相关问题