Jen*_*nix 9 database memory sqlite performance temporary
我从今天关于SQLite的书中读到关键词":memory:",但它只说它是什么,如何使用,解释太短.所以我在这里搜索了更多信息,但无法获得SQLite特定信息.
"记忆:"模式有哪些优点?(我什么时候需要这个?)
内存数据库的性能更快?
我是否仍需要在内存数据库中使用事务?
Sch*_*ern 29
一个SQLite的内存数据库的主要优点是性能:而不是读取和写入磁盘,它会保持整个数据库在内存中.内存比磁盘快得多.使用旋转磁盘或负载较重的IO服务器,您会看到最大的性能提升,而SSD的性能则更低.
但是,这不是解决错误的查询和表格的灵丹妙药.在到达内存数据库以提高性能之前,请确保优化表设计,查询和索引.
主要缺点是一旦进程关闭数据库就消失了.并且数据库不能大于可用内存.
提交可能更快,因为不需要写入磁盘,因此自动提交模式可能更快,但仍应将事务用于数据完整性目的.
请注意,不会太大的临时SQLite数据库可能会存储在内存中.
由于它的缺点,并且因为内存比存储少得多,所以在提交到内存数据库之前,请尝试使用临时数据库.这是通过使用''数据库文件名来完成的.这将写入临时文件,但缓冲内存缓存中的工作.它是两全其美的,你可以在不使用太多内存的情况下提高性能.
即使为每个临时数据库分配了磁盘文件,实际上临时数据库通常驻留在内存中的寻呼机缓存中,因此":memory:"创建的纯内存数据库与临时数据库之间的差别很小.由空文件名创建.唯一的区别是":memory:"数据库必须始终保留在内存中,而如果数据库变大或SQLite受到内存压力,临时数据库的某些部分可能会刷新到磁盘.
对应用程序进行概要分析和基准测试,以确保它会带来性能改进,考虑优化查询和添加索引是否更好,并确保数据消失后即可.
| 归档时间: |
|
| 查看次数: |
14217 次 |
| 最近记录: |