Как я добавила групповой коммит в свою LSM‑базу на Go и не пожалела

Синхронный WAL очень частое явление в базах данных, делая их durability максимальной. При таком исходе каждый батч записи это вызов fsync, и это дало мне 956k opr/s на 16кб значениях, звучит хорошо, но на самом деле: скорость записи упала в 5 раз.
В этой статье я расскажу:
— Что такое групповой коммит на пальцах
— Почему групповой коммит не для финтеха
— Как это реализовано у меня
— Как изменились цифры до и после внедрения
— Во сколько раз ScoriaDB с group commit быстрее BadgerDB и Pebble.
Если вы пишете хранилище, логгер, кэш или просто любите копаться в LSM‑движках — добро пожаловать на борт, нас ждет короткое путешествие