sqlite表中的最大行数

时间:2009-10-10 03:31:23

标签: database sqlite sizing

给一个简单的sqlite3表(create table data (key PRIMARY KEY,value)),密钥大小为256字节,值大小为4096字节,这个sqlite3表中最大行数的限制(忽略磁盘空间限制)是多少?他们的限制是否与操作系统(win32,linux或Mac)相关联

7 个答案:

答案 0 :(得分:27)

截至2017年1月,sqlite3 limits page根据数据库的最大大小(140 TB)定义了此问题的实际限制:

  

表格中的最大行数

     

表中理论上的最大行数是2 ^ 64(18446744073709551616或大约1.8e + 19)。此限制无法访问,因为将首先达到最大数据库大小为140太字节。一个140 TB的数据库可以容纳不超过大约1e + 13行,然后只有在没有索引且每行包含非常少的数据的情况下。

因此,如果最大数据库大小为140太字节,那么你很幸运能得到大约1万亿行,因为如果你真的有一个包含数据的有用表格,那么行数就会受到数据大小的限制。在140 TB的数据库中,最多可能有数十亿行。

答案 1 :(得分:13)

我有大小3.3 GB的SQLite数据库,有2500万行存储的数字日志并对它们进行计算,它运行得很快。

答案 2 :(得分:11)

在SQLite3中,字段大小不固定。引擎将为每个单元格提供所需的空间

对于文件限制,请参阅此SO问题:
What are the performance characteristics of sqlite with very large database files?

答案 3 :(得分:7)

我有一个7.5GB的SQLite数据库,可存储1050万行。只要您有正确的索引,查询就很快。要使插入快速运行,您应该使用事务。另外,我发现在插入所有行之后创建索引会更好。否则插入速度很慢。

答案 4 :(得分:4)

您想要的答案is right here

您提到的每个操作系统都支持多种文件系统类型。实际限制将是每个文件系统,而不是每个操作系统。在SO上总结约束矩阵是很困难的,但是虽然有些文件系统对文件大小施加了限制,但是今天所有主要的OS内核都支持具有极大文件的文件系统。

sqlite3 db的最大页面大小非常大,2 ^ 32768,尽管这需要一些配置。我假设索引必须指定页码,但结果可能是首先达到操作系统或环境限制。

答案 5 :(得分:2)

基本上没有真正的限制

有关详细信息,请参阅http://www.sqlite.org/limits.html

答案 6 :(得分:0)

没有限制,但基本上在某一点之后sqlite数据库将变得无用。 PostgreSQL是大型数据库的顶级免费数据库BY FAR。就我而言,我的Linux 64位四核双处理器计算机上有大约100万行,带有8GB RAM和Raptor硬盘。即使是经过调优的MySQL数据库,PostgreSQL也是无与伦比的。 (发表于2011年)。