Пишу приложение на C++ с использованием sqlite
Требования к надежности слегка ослаблены: не обязательно восстановление базы после сбоя (выкл. компьтера\падение проги). То есть при чтении база не должна корраптиться, а при записи ей это разрешено (у нас запись двухэтапная — запись в tmp, затем полная подмена базы)
Мы уже получили хорошую оптимизацию за счет переноса журналов в память (memory db)
Появилась идея отключить поддержку hot journal, так как даже при чтении записей идет много обращений к диску для получения этого журнала (winAccess много раз вызывается)
можно ли как-то убрать эти вызовы ? адекватными методами (включить прагму, указать дефайн при компиляции) или через подмену vfs ?
возможно я чего-то не учел и не стОит отключать этот журнал?
Здравствуйте, uzhas, Вы писали:
u> Появилась идея отключить поддержку hot journal, так как даже при чтении записей идет много обращений к диску для получения этого журнала (winAccess много раз вызывается) u> можно ли как-то убрать эти вызовы ? адекватными методами (включить прагму, указать дефайн при компиляции) или через подмену vfs ?
Здравствуйте, uzhas, Вы писали:
u> искать Hot rollback journals
Понятно. При отключенных журналах большего добиться врядли возможно без вмешательства в код. Разве что отключить вообще любую синхронизацию нафиг (PRAGMA synchronous, но я не знаю имеет ли это эффект под виндой — под ней же приложение?). Вообще, вставка данных в SQLite, если она производится не большими пачками в рамках транзакции — это ее больное место. Улучшать можно отключением лога, увеличивая PRAGMA page_size, отключая PRAGMA auto_vacuum, а дальше уже идут дсятые доли процентов или использование нежурналируемых примитивных ФС (но как я понимаю, у вас вообще все в памяти).
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, uzhas, Вы писали:
u>> искать Hot rollback journals
AB>Понятно. При отключенных журналах большего добиться врядли возможно без вмешательства в код. Разве что отключить вообще любую синхронизацию нафиг (PRAGMA synchronous, но я не знаю имеет ли это эффект под виндой — под ней же приложение?). Вообще, вставка данных в SQLite, если она производится не большими пачками в рамках транзакции — это ее больное место. Улучшать можно отключением лога, увеличивая PRAGMA page_size, отключая PRAGMA auto_vacuum, а дальше уже идут дсятые доли процентов или использование нежурналируемых примитивных ФС (но как я понимаю, у вас вообще все в памяти).
это все не то
меня чтение напрягает тем, что часто ищет хот журнал =\
почему его нельзя было поискать один раз, а потом не искать?