sqlite - временные данные в памяти

Моя ситуация: у меня есть файл на базе sqlite db и я хочу, чтобы все временные вещи делались в памяти (временные базы данных для больших запросов и т. д.). я попытался использовать команду PRAGMA temp_store = 2, но я не уверен на 100%, действительно ли она выполняет то, что я хочу. Странно то, что во время отладки я дохожу до функции winGetTempname, которая открывает временный файл на диске!

я подумал, как только у меня будет установлен этот прагма, он даже не должен пытаться открыть временный файл...

я также попытался использовать флаг препроцессора TEMP_STORE, но опять же, вызов winGetTempname все еще сделан...

есть идеи?

3 ответа

Из документации

Файлы журнала отката, основного журнала и журнала выписок всегда записываются на диск. Но другие виды временных файлов могут храниться только в памяти и никогда не записываться на диск. Записываются ли временные файлы, кроме журналов отката, мастера и оператора, на диск или сохраняются только в памяти, зависит от SQLITE_TEMP_STORE параметр времени компиляции, прагма temp_store и размер временного файла.

Из вышесказанного ясно, что если вы установите правильные флаги, все временные действия будут выполняться в памяти, кроме механизмов журналирования.

Если вы хотите быть уверенным, используйте утилиту для мониторинга вашего приложения на предмет активности файловой системы, например Process Monitor в Windows.

Прочитайте это http://www.sqlite.org/inmemorydb.html

Другие вопросы по тегам