Sqlite turn off hot journal
От: uzhas Ниоткуда  
Дата: 29.12.10 14:39
Оценка:
Пишу приложение на C++ с использованием sqlite
Требования к надежности слегка ослаблены: не обязательно восстановление базы после сбоя (выкл. компьтера\падение проги). То есть при чтении база не должна корраптиться, а при записи ей это разрешено (у нас запись двухэтапная — запись в tmp, затем полная подмена базы)
Мы уже получили хорошую оптимизацию за счет переноса журналов в память (memory db)
Появилась идея отключить поддержку hot journal, так как даже при чтении записей идет много обращений к диску для получения этого журнала (winAccess много раз вызывается)
можно ли как-то убрать эти вызовы ? адекватными методами (включить прагму, указать дефайн при компиляции) или через подмену vfs ?
возможно я чего-то не учел и не стОит отключать этот журнал?
Re: Sqlite turn off hot journal
От: Anton Batenev Россия https://github.com/abbat
Дата: 29.12.10 17:38
Оценка:
Здравствуйте, uzhas, Вы писали:

u> Появилась идея отключить поддержку hot journal, так как даже при чтении записей идет много обращений к диску для получения этого журнала (winAccess много раз вызывается)

u> можно ли как-то убрать эти вызовы ? адекватными методами (включить прагму, указать дефайн при компиляции) или через подмену vfs ?

PRAGMA journal_mode = OFF;


Оно?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[2]: Sqlite turn off hot journal
От: uzhas Ниоткуда  
Дата: 29.12.10 17:47
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>
PRAGMA journal_mode = OFF;


AB>Оно?

не, это обычные журналы (для транзакций)
Re[3]: Sqlite turn off hot journal
От: Anton Batenev Россия https://github.com/abbat
Дата: 29.12.10 23:16
Оценка:
Здравствуйте, uzhas, Вы писали:

U> не, это обычные журналы (для транзакций)


А о каких журналах идет речь? Потому как из начального сообщения не совсем понятно что и как именно сделали и в чем состоит трудность?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[4]: Sqlite turn off hot journal
От: uzhas Ниоткуда  
Дата: 29.12.10 23:28
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>А о каких журналах идет речь?

http://www.sqlite.org/atomiccommit.html
искать Hot rollback journals
Re[5]: Sqlite turn off hot journal
От: Anton Batenev Россия https://github.com/abbat
Дата: 29.12.10 23:47
Оценка:
Здравствуйте, uzhas, Вы писали:

u> искать Hot rollback journals


Понятно. При отключенных журналах большего добиться врядли возможно без вмешательства в код. Разве что отключить вообще любую синхронизацию нафиг (PRAGMA synchronous, но я не знаю имеет ли это эффект под виндой — под ней же приложение?). Вообще, вставка данных в SQLite, если она производится не большими пачками в рамках транзакции — это ее больное место. Улучшать можно отключением лога, увеличивая PRAGMA page_size, отключая PRAGMA auto_vacuum, а дальше уже идут дсятые доли процентов или использование нежурналируемых примитивных ФС (но как я понимаю, у вас вообще все в памяти).
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[6]: Sqlite turn off hot journal
От: uzhas Ниоткуда  
Дата: 30.12.10 00:55
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, uzhas, Вы писали:


u>> искать Hot rollback journals


AB>Понятно. При отключенных журналах большего добиться врядли возможно без вмешательства в код. Разве что отключить вообще любую синхронизацию нафиг (PRAGMA synchronous, но я не знаю имеет ли это эффект под виндой — под ней же приложение?). Вообще, вставка данных в SQLite, если она производится не большими пачками в рамках транзакции — это ее больное место. Улучшать можно отключением лога, увеличивая PRAGMA page_size, отключая PRAGMA auto_vacuum, а дальше уже идут дсятые доли процентов или использование нежурналируемых примитивных ФС (но как я понимаю, у вас вообще все в памяти).

это все не то
меня чтение напрягает тем, что часто ищет хот журнал =\
почему его нельзя было поискать один раз, а потом не искать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.