我试图让SQLite在内存中完全运行。我使用以下连接字符串:
var conn = new SQLiteConnection(@"Data Source=:memory:;Synchronous=OFF;
Journal Mode=OFF;Cache Size=10000");
我在事务中写入10,000,000个插入 - 这种情况发生的速度和我预期的一样快,并且没有触及磁盘。
一旦我开始在表上创建索引,IO就会出现峰值,我可以看到它正在将临时文件写入AppData文件夹。
我认为有一个设置/ PRAGMA我不见了,但我还没有找到它。任何帮助将不胜感激!
答案 0 :(得分:0)
我更多地设置了设置并增加了页面大小和缓存大小:
var conn = new SQLiteConnection(@"Data Source=:memory:;Synchronous=OFF;
Journal Mode=OFF;Cache Size=1000000;Page Size=8192;");
我相信当总页数耗尽时,它开始写入临时商店。我试图设置temp_store pragma,但它没有任何效果 - 我可以编译使用的版本来覆盖该设置。
无论哪种方式,拥有更大的页面大小和更多的总页数都允许表和索引保留在内存中。