SQLITE: PRAGMA temp_store = MEMORY

3
在所有的优化指南中,人们都会谈论像JOURNAL_MODE或SYNCHRONOUS这样的pragma,但我从未读到过关于TEMP_STORE pragma的任何信息?我认为它会有很大的影响,所以为什么没有提到它呢?
它的目的是将SQLite的所有内部临时表从磁盘(temp目录)移动到内存中,这似乎比每次SELECT都访问磁盘要快得多?
1个回答

2

SQLite在进行写操作时会锁定整个数据库,因此在继续下一个任务之前最好将数据放入盘片中。

将数据存储在内存中很可能只适用于那些需要临时数据存储的情况(正如TEMP_STORE名称所示);如果您想保存数据,则仍需要提供定期刷新数据到磁盘的方法,而且由于锁定粒度不是非常细,您必须刷新整个数据库。

换句话说,TEMP_STORE不是缓存机制。


如果这个编译指示仅影响在内存中创建的数据库(使用 :memory:),那么你是对的。 - Maestro
3
查看TEMP_STORE文档,似乎只影响临时表和索引的使用。仅当页面缓存满时才使用临时表和索引,详情请见:http://www.sqlite.org/tempfiles.html。因此,在优化指南中未提及它的原因可能是在正常(即未受重负载)条件下作用不大。 - Robert Harvey

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