对SQLite数据库的大小有限制吗?

hgc7kmma  于 2022-11-15  发布在  SQLite
关注(0)|答案(6)|浏览(897)

我看过他们的限制常见问题解答,他们谈到了很多限制,除了整个数据库的限制。

fzwojiic

fzwojiic1#

implementation limits页面可以很容易地推断出这一点:
SQLite数据库文件以页的形式组织。每页的大小是介于512和SQLITE_MAX_PAGE_SIZE之间的2的幂。SQLITE_MAX_PAGE_SIZE的默认值为32768。
..。
SQLITE_MAX_PAGE_COUNT参数通常设置为1073741823,是单个数据库文件中允许的最大页数。如果尝试插入可能导致数据库文件变大的新数据,将返回SQLITE_FULL。
所以我们有327681073741823,即35,184,372,056,064(35万亿*字节)!
您可以修改源代码中的SQLITE_MAX_PAGE_COUNTSQLITE_MAX_PAGE_SIZE,但这当然需要为您的应用程序自定义构建SQLite。据我所知,除了在编译时之外,没有其他方法可以通过编程来设置限制(但我很高兴被证明是错误的)。

brvekthn

brvekthn2#

它有new limits,现在数据库大小限制为256 TB:
每个数据库都由一个或多个“页”组成。在单个数据库中,每一页的大小都相同,但不同数据库的页大小可以是2的幂,介于512和65536之间。数据库文件的最大大小为4294967294页。在最大页面大小为65536字节时,这意味着最大数据库大小约为1.4E+14字节(281TB或256TB,或281474 GB或256,000 GB)。
这一特定的上限未经测试,因为开发人员无法访问能够达到此上限的硬件。但是,当数据库达到底层文件系统的最大文件大小(通常比最大理论数据库大小小得多)时,以及当数据库由于磁盘空间耗尽而无法增长时,测试确实验证了SQLite正确而正常地运行。

x33g5p2x

x33g5p2x4#

虽然这是一个古老的问题,但让我与达到这个问题的人分享我的发现。
尽管Sqlite文档规定数据库文件的最大大小约为140TB,但您的操作系统对任何类型的文件的最大文件大小都有自己的限制。
例如,如果您在Windows上使用FAT32磁盘,我可以为SQLite数据库文件实现的最大文件大小是2 GB。(根据微软网站,FAT 32系统的限制是4 GB,但我的SQLite数据库大小仍然限制在2 GB)。在Linux上,我能够达到3 GB(这是我停下来的地方。它本可以达到更大的尺寸)

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

pxyaymoc

pxyaymoc5#

SQLite中字符串或BLOB的最大字节数由预处理器宏SQLITE_MAX_LENGTH定义。此宏的缺省值为10亿(10亿或10亿)。
当前实现将仅支持最大长度为231-1或2147483647的字符串或Blob
SQLITE_MAX_COLUMN的默认设置为2000。您可以在编译时将其更改为最大为32767的值。另一方面,许多有经验的数据库设计人员会争辩说,一个标准化良好的数据库在一个表中永远不需要超过100列。
SQLite不支持包含64个以上表的联接。
表中理论上的最大行数是2^64(18446744073709551616或约1.8e+19)。由于首先将达到140 TB的最大数据库大小,因此无法达到此限制。
最大数据库大小:140 TB
有关更多信息,请查看URL:https://www.sqlite.org/limits.html

j2cgzkjk

j2cgzkjk6#

我刚刚开始为我正在从事的一个项目探索SQLite,但在我看来,数据库的“有效”大小实际上比文件系统似乎所允许的更灵活。
通过利用“附加”功能,编译的数据库可能会超过文件系统最大文件大小125倍……因此,FAT32的有效限制实际上是500 GB(125 X 4 GB)...如果数据可以在不同的文件之间完美地平衡。

相关问题