android中的SQLite数据库是否有任何大小限制?

时间:2014-07-28 11:16:29

标签: android database sqlite

实际上我做了一些研究,发现了一个实施文件,http://sqlite.org/limits.html但是找不到确切的答案。即整个sqlite数据库的确切数据限制是什么?

3 个答案:

答案 0 :(得分:6)

最大数据库大小约为 1.4e + 14字节

  

每个数据库都包含一个或多个“页面”。在一个单一的   数据库,每个页面大小相同,但不同的数据库可以有   页面大小为512到65536之间的2的幂,包括端点。   数据库文件的最大大小为2147483646页。在最大页面大小为65536字节时,这会转换为最大值   数据库大小约 1.4e + 14字节(140太字节,或128   tebibytes,或140,000千兆字节或128,000千兆字节)。

     

这个特定的上限未经测试,因为开发人员没有   可以访问能够达到此限制的硬件。但是,测试   在数据库中验证SQLite的行为是否正确和合理   达到底层文件系统的最大文件大小(即   通常远小于最大理论数据库大小)和何时   由于磁盘空间耗尽,数据库无法增长。

有关详细信息,请参阅Maximum Database Size

答案 1 :(得分:2)

数据库可以存储多少数据并不重要。问题是数据库中的演说在什么级别不再有效!或者换句话说,在什么级别有更好的选择。一种替代选项可以是另一个更好地处理大量数据的DBMS。或者另一个可能是NoSql数据库。
事情是每个应用程序的效率定义不同。对于一个等待1秒用于检索数据的应用程序可能是OK,而在另一个应用程序中甚至200毫秒是一个杀手。
您在数据库上运行的查询类型也会对​​性能产生巨大影响,因此不仅仅是数据。查询也很重要!
通常你不必考虑这些东西!您应该能够在每个表中存储数万行而没有任何问题!但如果您愿意,您可以随时进行自己的测试,看看您的应用程序的当前情况是否满足您!编写测试非常简单,例如,如果您有一个select查询,请首先确保在数据库中放置足够的测试数据(总是考虑值得的情况)然后使用循环执行查询10,000次。通过测量时间和划分它是10,000。你需要一次手术所需的时间。不要忘记在不同设备上执行此操作以获得更精确的结果。从这种测试中得到的结果比任何统计数据更有价值,因为

  • 关于您的应用及其数据库!
  • 关于你关心的表现和效率的数量。
  • 关于您在数据库上运行的查询类型。

另一个值得关注的想法是在sqlite上运行查询并不返回实际数据!它为您提供了一个光标,并使用光标可以检索数据。执行查询通常需要几毫秒,而使用循环来检索数据需要几百毫秒。如果您关心性能,了解这个时差是非常重要的。关键是你不必一次获得整个数据!在您需要的时候获取数据。因此,只要您逐个处理它们,查询返回100万行并不重要! 所以如果你对我之前提到的测试不满意,首先想到你需要考虑的是你是如何处理光标对象的?
如果您有任何问题,请告诉我们。

答案 2 :(得分:0)

来自:http://sqlite.org/faq.html

  

1.0数据库文件

     

SQLite数据库的完整状态通常包含一个   磁盘上的文件称为“主数据库文件”。

     

在事务期间,SQLite会在一秒钟内存储其他信息   文件称为“回滚日志”,或者如果SQLite处于WAL模式,a   预写日志文件。如果应用程序或主机崩溃   在事务完成之前,然后是回滚日志或   预写日志包含还原所需的关键状态信息   主数据库文件为一致状态。当一个回滚期刊   或预写日志包含恢复所需的信息   数据库的状态,它们被称为“热门日记”或“热门WAL”   文件“。热门日志和WAL文件只是错误时的一个因素   恢复方案等不常见,但它们是国家的一部分   一个SQLite数据库,所以不能忽略。本文档定义   回滚日志的格式和预写日志文件,但是   重点是主数据库文件。

     

1.1页

     

主数据库文件由一个或多个页面组成。一个大小   page是512和65536之间的2的幂。所有页面   在同一个数据库中的大小相同。一个页面大小   数据库文件由位于偏移处的2字节整数确定   从数据库文件的开头起16个字节。

     

页面从1开始编号。最大页码为   2147483646(231 - 2)。 SQLite数据库的最小大小是单一的   512字节页面。最大大小的数据库将是2147483646页   每页65536字节或140,737,488,224,256字节(约140   兆兆字节)。通常SQLite将达到最大文件大小限制   基础文件系统或磁盘硬件大小限制在它命中之前很久   它自己的内部大小限制。

     

通常,SQLite数据库的大小范围很小   千字节到几千兆字节。

     

在任何时候,主数据库中的每个页面都只有一次使用   这是以下之一:

     

锁定字节页面空闲列表页面空闲列表主干页面空闲列表   leaf page a b-tree page一个表b-tree内部页面一个表b-tree   leaf page索引b-tree内部页面索引b-tree叶子页面A.   有效载荷溢出页面指针映射页面