安卓 Room 数据库大小

6

我想知道 Room Database 的最大可用大小是多少?文档中没有相关说明。

是否有编程选项可以设置数据库大小?

我已经查阅了文档,但未能找到任何信息。

2个回答

4

由于 Room 只是 SQLite 的一个抽象层。Room 具有与 SQLite 相同的限制。

字符串或 BLOB 的最大长度 默认大小为 1 GB,最大大小为 2.147483647

列的最大数量 默认大小为 2000,最大大小为 32767

SQL 语句的最大长度 默认大小为 1 MB,最大大小为 1.073741824

联接中允许的最大表数 默认为 64 张表

附加数据库的最大数量 默认为 10,最大大小为 125

表中允许的最大行数 最大大小为 18446744073.709552765

最大数据库大小 140 TB,但它将取决于您设备的磁盘大小。

来自 SQLite 文档 https://www.sqlite.org/limits.html


1
但通常设备内存不会达到140TB,那么它怎么可能是140TB呢? - Keerthi Prasad B V
@KeerthiPrasadBV 这意味着我们可以将您的数据库扩展到设备存储大小。 - a0x2

1

我也曾经想过这个问题。由于Room使用SQLite,因此以下是SQLite数据库网站关于SQLite数据库最大大小和在巨大大小下的性能的说明。

每个数据库都由一个或多个“页面”组成。在单个数据库中,每个页面的大小相同,但是不同的数据库可以具有介于512和65536之间的2的幂次方的页面大小。数据库文件的最大大小为2147483646个页面。在页面大小的最大值为65536字节的情况下,这相当于最大约为1.4e + 14字节(140万亿字节,或128 tebibytes,或140,000 GB或128,000 gibibytes)的数据库大小。

由于开发人员无法访问能够达到此限制的硬件,因此尚未测试此特定上限。但是,测试确实验证了当数据库达到底层文件系统的最大文件大小(通常远小于最大理论数据库大小)并且由于磁盘空间耗尽而无法增长时,SQLite会正确且明智地运行。

我认为任何应用程序都不会消耗甚至一小部分这样的大小。

SQLite limits


我达到了这个限制;不是关于服务器的大小,而是行数的数量。 我编写了一个简单的程序,向DAO(SQLite)文件添加大约10k行。它一直运行良好,直到达到限制并崩溃。那么,你知道如何增加该值吗? - Marcelo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接