Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的SQLite数据库有大小限制吗?_Android_Database_Sqlite - Fatal编程技术网

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

android中的SQLite数据库有大小限制吗?,android,database,sqlite,Android,Database,Sqlite,实际上,我做了一些研究,找到了一个实现文档,但找不到确切的答案。i、 e.整个sqlite数据库的确切数据限制是多少?最大数据库大小约为1.4e+14字节 每个数据库由一个或多个“页面”组成。一蹴而就 数据库中,每个页面的大小都是相同的,但不同的数据库可以有不同的大小 页大小为512到65536(含)之间的二次幂。 数据库文件的最大大小为2147483646页。当最大页面大小为65536字节时,这将转换为最大值 数据库大小约为1.4e+14字节(140 TB或128 TB 十兆字节或十四万兆字节

实际上,我做了一些研究,找到了一个实现文档,但找不到确切的答案。i、 e.整个sqlite数据库的确切数据限制是多少?

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

每个数据库由一个或多个“页面”组成。一蹴而就 数据库中,每个页面的大小都是相同的,但不同的数据库可以有不同的大小 页大小为512到65536(含)之间的二次幂。 数据库文件的最大大小为2147483646页。当最大页面大小为65536字节时,这将转换为最大值 数据库大小约为1.4e+14字节(140 TB或128 TB 十兆字节或十四万兆字节或十二万八千兆字节)

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

有关更多信息,请参见以下网址:

1.0数据库文件

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

在事务处理过程中,SQLite在一秒钟内存储附加信息 名为“回滚日志”的文件,或者如果SQLite处于WAL模式,则 提前写入日志文件。如果应用程序或主机崩溃 在事务完成之前,回滚日志或 提前写入日志包含恢复所需的关键状态信息 将主数据库文件设置为一致状态。当回滚日志 或预写日志包含恢复所需的信息 在数据库的状态下,它们被称为“热日志”或“热日志” 文件”。热日志和WAL文件只是错误期间的一个因素 恢复场景等并不常见,但它们是状态的一部分 一个SQLite数据库,因此不能忽略。本文件定义了 回滚日志和预写日志文件的格式,但 重点是主数据库文件

1.1页

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

页码以1开头。最大页码为 2147483646 (231 - 2). SQLite数据库的最小大小是一个 512字节的页面。数据库的最大大小为2147483646页 每页65536字节或140737488224256字节(约140 TB)。通常SQLite将达到 底层文件系统或磁盘硬件大小限制在达到之前很久 它自己的内部大小限制

在常用情况下,SQLite数据库的大小往往从几个 千字节到几GB

在任何时候,主数据库中的每个页面都有一个单独的用途 以下哪一项是:

锁定字节页自由列表页自由列表主干页自由列表 叶页A b树页A表b树内部页A表b树 叶页索引b树内部页索引b树叶页A 有效负载溢出页指针映射页


数据库可以存储多少数据并不重要。问题是数据库中的演讲在什么级别不再有效!或者换句话说,在什么水平上有更好的选择。另一种选择是另一个DBMS,它可以更好地处理大量数据。或者另一个可能是NoSql数据库。
问题是效率的定义在每个应用程序中都是不同的。对于一个应用程序来说,等待1秒来检索数据可能是正常的,而在另一个应用程序中,即使是200毫秒也是致命的。
此外,在数据库上运行的查询类型对性能有很大影响,因此不仅仅是数据。疑问也很重要!
通常你不必考虑这些东西!您应该能够在每个表中存储上万行而没有任何问题!但是如果您愿意,您可以随时进行自己的测试,以查看应用程序的当前状况是否满足您的要求!!编写测试非常简单,例如,如果您有一个select查询,请首先确保在数据库中放入足够的测试数据(始终考虑值得的情况),然后使用循环执行查询10000次。通过测量时间并将其除以10000。您可以获得单个操作所需的时间。不要忘记在不同的设备上执行此操作,以获得更精确的结果。这种测试的结果比任何统计数据都更有价值,因为

  • 这是关于你的应用程序及其数据库的
  • 这关系到你所关心的性能和效率
  • 这是关于您在自己的数据库上运行的查询类型
另一个值得注意的想法是,在sqlite上运行查询不会返回实际数据!它为您提供了一个游标,您可以使用该游标检索数据。执行查询通常需要几毫秒,而使用循环检索数据则需要几百毫秒。如果您关心性能,了解这个时差是非常重要的。关键是你不必一次获得全部数据!在需要的时候获取数据。因此,如果查询返回100万行,只要逐个处理它们,这并不重要! 所以,如果您对我前面提到的测试不满意,您首先需要考虑的是如何处理游标对象?!
如果您有任何问题,请告知我们