Сколько миллисекунд без читателей нужно SQLite, чтобы файл -wal перестал расти

habrahabr.ru · world
Full story

A measurement looked at how long SQLite can go without readers before the -wal file stops growing, since the documentation mentions reader pauses but not their length. The test used SQLite 3.46.1 in a container. On the test setup, a few milliseconds were enough: 2 ms at 50 commits per second and 5 ms at 1,000 commits per second. Faster writing required a wider pause. Without such a pause, three readers each pausing 50 ms made the -wal grow as much as a single reader pausing 20 seconds.

Документация SQLite говорит, что -wal перестаёт расти, только если у читателей, которые видят кадры из -wal, бывают общие паузы, но не говорит, какой длины. Я замерил в контейнере на SQLite 3.46.1: на моём стенде хватало единиц миллисекунд — 2 мс при 50 коммитах/с, 5 мс при 1000/с, и быстрой записи понадобилась пауза шире. Без паузы три читателя по 50 мс раздувают -wal так же, как один на 20 секунд, а случайные запросы по 5 мс почти не мешали, пока база была свободна хотя бы 13% времени. Читать далее

Read full article → Compare