LSM-tree (Log-Structured Merge-Tree) tabanlı motorlar, RocksDB, LevelDB, Cassandra, TiKV, yazma performansı için optimize edilmiş yapılarıyla dikkat çeker. Ne var ki bu tercih, lsm tree write amplification sorununu beraberinde getirir; bu sorun yeterince kavranmadan üretim sistemleri beklenmedik disk ömrü kısalmasıyla karşılaşır. Write amplification (WA), bir mantıksal yazma operasyonunun tetiklediği gerçek disk yazma miktarının oranını ifade eder. WA = fiziksel yazılan byte / kullanıcı tarafından yazılan byte olarak tanımlanır. Değer 1'den büyük olduğunda disk degrade riski artar; SSD'ler için bu özellikle kritiktir çünkü P/E döngüsü sınırlıdır. LSM-tree yazma akışı şu şekilde ilerler: 1. Yazma önce MemTable'a (RAM içi Red-Black Tree veya Skip List) düşer. 2. MemTable dolu olduğunda immutable hale gelir ve arka planda L0 SSTable'a flush edilir. 3. Compaction süreci, katmanlar arasında SSTable'ları birleştirir ve eski sürümleri atar. Compaction stratejisi WA değerini doğrudan belirler: **Leveled Compaction:** L0 → L1 → L2 ... Ln hiyerarşisinde her katman bir üsttekinden genellikle 10x büyüktür. Bir SSTable'ın alt katmanla birleştirilmesi sırasında lsm tree write amplification teorik maksimumu ~30x'e ulaşabilir. Buna karşılık okuma amplifikasyonu düşük tutulur (her seviyede en fazla bir SSTable okunur). **Tiered / STCS (Size-Tiered Compaction):** Benzer boyutlu SSTable'lar gruplandırılarak birleştirilir. WA değeri daha düşüktür (~10x) fakat okuma amplifikasyonu ve alan tüketimi artar; bu yüzden write-heavy workload'larda tercih edilir. **FIFO Compaction:** Yalnızca en eski SSTable atılır; time-series verisi için uygundur ancak compaction yoktur. WA'yı pratik olarak ölçmek için RocksDB'de şu metrik kullanılır: ``` rocksdb.compaction.write.bytes / rocksdb.write.bytes ``` Tüning stratejileri: - `write_buffer_size` artırıldığında MemTable büyür → L0 flush sıklığı azalır → erken WA düşer, ancak crash recovery süresi uzar. - `max_bytes_for_level_base` ve `max_bytes_for_level_multiplier` değerleri artırılarak compaction sıklığı azaltılabilir. - Bloom filtresi kullanımı okuma amplifikasyonunu düşürür ama WA'yı etkilemez. - `compaction_style = kUniversal` seçeneği tiered compaction'a karşılık gelir; yazma yoğun sistemlerde test edilmesi önerilir. Donanım perspektifinden: NVMe SSD'lerde yüksek WA, P/E döngüsünü tüketir ve garanti süresini kısaltır. WAL (Write-Ahead Log) da ek WA kaynağıdır; WAL senkronizasyon politikası (`sync_file_range` vs `fsync`) kritik etkendir. LSM motorlarının write-heavy workload'larda B-tree motorlarına (InnoDB, PostgreSQL heap) kıyasla avantajı, random write'ları sequential write'a dönüştürmesinden kaynaklanır. Ancak bu dönüşümün bedeli olan compaction I/O'sunun kabul edilebilir sınırlar içinde tutulması, sistem mühendisliğinin ayrılmaz parçasıdır.