我今天从一本关于 SQLite 的书中读到了关键字“:memory:”,但它只说了它是什么,如何使用,而且解释太短了。所以我在这里搜索了更多信息,但无法获得 SQLite 的具体信息。
':memory:' 模式有什么优点? (我什么时候需要这个?)
内存数据库的性能更快?
我还需要在内存数据库上使用事务吗?
A SQLite内存数据库 https://www.sqlite.org/inmemorydb.html其主要优点是性能:它将整个数据库保留在内存中,而不是读取和写入磁盘。内存比磁盘快得多。您将看到旋转磁盘或 IO 负载较重的服务器的性能提升最大,而 SSD 的性能提升较小。
然而,这并不是解决写得不好的查询和表的灵丹妙药。在使用内存数据库来提高性能之前,请务必优化表设计、查询和索引。
主要缺点是一旦进程关闭,数据库就会消失。并且数据库不能大于可用内存。
由于不需要写入磁盘,提交可能会更快,因此自动提交模式可能会更快,但事务仍应用于数据完整性目的。
请注意,不会变得太大的临时 SQLite 数据库可能会存储在内存中。
由于它的缺点,并且由于内存比存储少得多,因此在提交到内存数据库之前尝试使用临时数据库。这是通过使用完成的''
为数据库文件名。这将写入临时文件,但将工作缓冲在内存缓存中。这是两全其美的,您无需使用太多内存即可提高性能。
尽管为每个临时数据库分配了一个磁盘文件,但实际上临时数据库通常驻留在内存中分页缓存中,因此由“:memory:”创建的纯内存数据库和临时数据库之间几乎没有什么区别由空文件名创建。唯一的区别是“:memory:”数据库必须始终保留在内存中,而如果数据库变大或 SQLite 面临内存压力,则临时数据库的部分内容可能会刷新到磁盘。
对您的应用程序进行分析和基准测试,以确保其能够提高性能,考虑是否最好优化查询并添加索引,并确保数据消失也没关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)