ÖZET VE TEKNİK CEVAP
Log-Structured Merge-Trees (LSM-tree), yazma işlemlerini önce bellekteki MemTable'a ve sıralı WAL loguna yazarak diske L0 seviyesinde SSTable dosyaları olarak dökerek olağanüstü bir yazma hızı sunar. Ancak L0 seviyesinde dosyalar biriktikçe, arka plan thread'leri bu dosyaları okuyup birleştirerek (merge-sort) alt katmanlara (L1, L2) taşımak ve silinen anahtarları (tombstone) temizlemek zorundadır. Gelen yazma hızı diskin arka plan birleştirme hızını aştığında L0 dolar. Veritabanı diskin patlamasını önlemek için 'Write Stall' (Yazma Tıkanması) devreye sokar: Gelen yazma istekleri arka plan temizliği bitene kadar mikrosaniyelerden 5 saniyenin üzerine kadar bilerek dondurulur. Bunu önlemek için Boyut Kademeli (Size-Tiered) veya Seviyeli (Leveled) sıkıştırma doğru seçilmeli, compaction I/O'su dengelenmeli ve NVMe IOPS kapasitesi artırılmalıdır.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
LSM-Tree sıkıştırma dinamikleri 3 fiziksel kurala bağlıdır: (1) Yazma Amplifikasyon Faktörü (WAF): Uygulamanın yazdığı 1KB'lık veri, katmanlar arasında taşınırken diske 10 ila 30 kez yeniden yazılır ve disk bant genişliğini tüketir. (2) Tıkanma Eşikleri: RocksDB'de L0 dosya sayısı eşiği (ör. 4) aşılınca sıkıştırma başlar; 20'yi aşınca yazmalar yavaşlatılır; 36'yı aşınca tüm yeni yazmalar %100 durdurulur (freeze). (3) Sıkıştırma Stratejileri: Leveled Compaction disk alanını korur ancak yüksek WAF üretir; Size-Tiered Compaction ise zaman serisi verilerde WAF'ı düşürür ancak %50 geçici boş disk alanı ister.
2. Doğru Kullanım Senaryosu
Yüksek hacimli zaman serisi loglama, finansal işlem kayıtları, dağıtık NoSQL ve analitik veritabanları (RocksDB, TiKV, Cassandra, ClickHouse MergeTree).
3. Prodüksiyon Arıza Modları
Ani bir 3 katlık yazma patlamasında RocksDB L0 katmanının 10 saniyede dolması ve 6 saniyelik tam yazma donması yüzünden ön uç API ağ geçitlerinin zaman aşımına uğrayıp 50.000 işlemi kaybetmesi; Size-Tiered compaction sırasında diskin %100 dolup veritabanının kilitlenmesi.
4. Teşhis ve Telemetri Sinyalleri
`rocksdb.write.stall.micros` metriğinde ani dikey sıçramalar; CPU boşta iken p99 yazma gecikmesinin 2 ms'den 3.000 ms'ye fırlaması; disk yazma I/O kullanımının %100'e kilitlenmesi.
5. Önleme ve Mimari Bariyerler
Dinamik seviye boyutlandırmalı Leveled Compaction kullanın; `rate_limiter` ile arka plan sıkıştırma thread'lerine ayrılan disk bant genişliğini sınırlayın; ani kilitlenmeler yerine yumuşak bir frenleme için `delayed_write_rate` ayarını devreye alın.
6. Mimari Ödünleşimler (Trade-offs)
Compaction optimizasyonu yazma donmalarını bitirir; ancak Yazma Amplifikasyonu (disk ömrü), Okuma Amplifikasyonu (aranan SSTable sayısı) ve Alan Amplifikasyonu (geçici disk alanı) arasında ince bir mühendislik dengesi gerektirir.
Vaka İncelemesi (TinyCTO Örneği)
Bir kripto para borsası, RocksDB katmanındaki periyodik 4 saniyelik gecikme sıçramaları yüzünden müşteri emirlerini kaçırıyordu. İncelemede yoğun anlarda L0 yazma tıkanmasının tetiklendiği görüldü. Dinamik seviye boyutlandırmasına geçilip arka plan thread sayısı 2'den 8'e çıkarıldığında ve 64MB/sn'lik yumuşak `delayed_write_rate` konulduğunda, tepe 80.000 işlem/sn yük altında p99 yazma gecikmesi 4.200 ms'den 4,1 ms'ye indi.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaLSM-Tree depolama motorunda 'Write Stall' (Yazma Tıkanması) nedir?
Yazma Amplifikasyon Faktörü (WAF) nedir?
LSM-Tree Compaction Tıkanmaları (Stalls) ve Yazma Amplifikasyonu Gecikme Sıçramaları — Sıkça Sorulan Sorular
Zaman serisi ve log verilerinde neden Size-Tiered Compaction tercih edilir?
Çünkü zaman serisi verileri sadece kronolojik ekleme (append-only) yapar; eski anahtarların üzerine yazma olmadığı için Leveled Compaction'a göre yazma amplifikasyonunu çok düşürür.
LSM-Tree yapısında 'Tombstone' (Mezar Taşı) nedir?
Bir anahtarın silindiğini belirten özel bir silme kaydıdır; verinin diskten fiziksel olarak silinmesi ancak arka plan compaction işlemi sırasında gerçekleşir.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸LSM-trees append to memory MemTables and flush immutable SSTables to Level 0 (L0).
- ▸Write Stalls freeze incoming writes when L0 SSTable count crosses safety thresholds.
- ▸Write Amplification Factor (WAF) rewrites data 10-30x across disk levels.
- ▸Tune background compaction thread concurrency and apply smooth delayed write rate limits.
Yaygın Yanılgılar
- ✗Yanılgı: LSM-trees eliminate disk I/O bottlenecks (Gerçek: They convert random writes into sequential writes but create high background compaction I/O).
- ✗Yanılgı: Deleting data in an LSM tree immediately frees disk space (Gerçek: Deleted keys create tombstones and only free space after compaction runs).
Karar Kılavuzu & Önceliklendirme
Monitor `rocksdb.write.stall.micros` as a critical p99 latency leading indicator. Allocate high-IOPS NVMe storage and dedicated background thread pools for compaction.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL_DOCUMENTATION]RocksDB Tuning Guide: Managing Compaction, Write Stalls, and Memory— Meta / RocksDB Engineering
