Здравствуйте, Sinclair, Вы писали:
НС>>Так а зачем лог и данные в одном файле держать? Сиквел держит в разных, и для лога MMF в одно место не уперся, там все операции последовательные. А для файла страниц MMF — то что дохтур прописал.
S>Даже если держим в разных, WAL требует, чтобы страницы лога были записаныдо того, как на диск уедут изменённые страницы данных.
Поэтому кеширование для таких файлов отключается.
S>В MMF мы не можем этого гарантировать.
Так не надо лог в MMF писать, о чем и речь.
S>2. Мы добавляем к логу запись (@x, oldX, newX); (без flush)
Нельзя. Все существующие сервера, АФАИК, отключают кеширование по записи полностью. А если (в силу кеша на диске и/или в контроллере) отключить не удается — от этого регулярно приключаются проблемы. На дисках сейчас спасает отчасти то, что современные диски умеют брать электричество от крутящегося диска или от конденсатора, чтобы успеть сбросить кеш. А контроллеры нужны специальные, энтерпрайзные.
Так что тут если какое то буферизирование при записи в лог и делать, то только чисто программное, на уровне прикладного кода. И, в любом случае, MMF для файла лога бессмысленен и бесполезен, там все равно запись и чтение строго последовательные.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>