Проверяет понимание того, как данные физически записываются на диск, почему современные системы хранилищ делают много лишних записей, и как это влияет на производительность.
Write amplification — это эффект, когда система записывает на диск намного больше данных, чем было изменено логически. В PostgreSQL это проявляется через WAL + страницы 8KB, в SSD — через перезапись больших erase-block, в LSM-деревьях — через постоянное перемещение данных между уровнями.
Write amplification (WA) — это феномен, при котором фактический объём записи на диск превышает логический объём данных, который изменил пользователь. Это важно для производительности, износа SSD и прогнозирования реального throughput.
В Postgres WA возникает из-за:
WAL (Write-Ahead Log)
Каждая операция дублируется: запись идёт в WAL и затем — в основную таблицу.
Страничная организация (8KB pages)
Даже если изменился 1 байт, переписывается вся страница.
VACUUM / HOT-update
Старые версии строк не удаляются сразу — VACUUM создаёт дополнительные операции записи.
CHECKPOINT
На checkpoint Postgres вынужден сбрасывать dirty pages на диск.
Итог: WA для Postgres может достигать 3–10x при высокой write-нагрузке.
SSD выполняют запись блоками («erase blocks»), например по 256 KB.
Если изменить 4 KB, SSD перезапишет весь 256 KB блок → WA = 64x.
Современные контроллеры mitigate проблему через:
wear leveling
over-provisioning
write combining
Используются в ClickHouse, RocksDB, Cassandra.
Write amplification возникает из-за compaction — данные многократно перемещаются между уровнями.
WA в LSM может достигать 10–30x, зато скорость записи остаётся высокой.
Write amplification — ключевой фактор в производительности хранилищ. Его нужно учитывать при проектировании систем с высокой нагрузкой на запись.