Write amplification — saqlash tizimiga foydalanuvchi mantiqan yozgan ma’lumot hajmiga nisbatan fizik qurilma yoki quyi qatlamlarda amalda ko‘proq bayt yozilishi hodisasidir. Masalan, ilova 1 GB yangi ma’lumot yuborgan, diskka esa log, indeks, qayta tashkil etish va nusxalash sababli jami 6 GB yozilgan bo‘lsa, kuzatilgan write amplification taxminan 6 ga teng. Nisbatni talqin qilishda qaysi qatlam va qaysi baytlar o‘lchanayotgani aniq ko‘rsatilishi kerak.
Ko‘p qatlamli sabablar
Ma’lumotlar bazasi bardoshlilik uchun o‘zgarishni avval write-ahead logga, keyin asosiy faylga yozishi mumkin. B-tree sahifasidagi kichik yangilanish butun sahifaning qayta yozilishiga, page split esa bir nechta sahifa va yuqori indeks tugunlarining o‘zgarishiga olib keladi. LSM daraxtida yozuv memtabledan SSTablega bir marta chiqariladi, keyin compaction davomida darajalar orasida yana bir necha marta ko‘chirilishi mumkin.
Fayl tizimi metadata va jurnal yozadi; RAID paritetni yangilaydi; SSD ichki flash translation layer orqali bloklarni ko‘chiradi va garbage collection bajaradi. Shuning uchun baza darajasida 3 ga teng ko‘rsatkich qurilma darajasida kattaroq bo‘lishi mumkin. Bir qatlamdagi fizik yozuv keyingi qatlam uchun mantiqiy kirish hisoblanadi.
LSM va B-tree xususiyatlari
LSM ketma-ket yozuvlardan samarali foydalanadi, biroq leveled compaction bir kalitni bir necha darajada qayta yozadi. Darajalar o‘sish koeffitsiyenti, yangilanishlarning kalitlar bo‘yicha taqsimoti, tombstone, compaction siyosati va fayl kesishuvlari natijaga ta’sir qiladi. Size-tiered siyosat ayrim ish yuklarida kamroq qayta yozishi mumkin, lekin ko‘proq disk joyi va read amplification evaziga.
B-tree yangilanishni kerakli sahifaga bevosita qo‘llaydi. Tasodifiy kichik yozuv sahifa hajmiga nisbatan juda kichik bo‘lsa, sahifa va WAL yozuvi sezilarli kuchayish beradi. Past fill factor bo‘linishlarni kamaytiradi, ammo indeksni kattalashtiradi. Demak, qaysi tuzilma yaxshiroq ekani yozuv turi, saqlash qurilmasi va o‘qish talablari bilan belgilanadi.
O‘lchash usuli
Oddiy nisbat quyidagicha ifodalanadi:
write amplification = fizik yozilgan baytlar / foydalanuvchi yozgan mantiqiy baytlar
Hisob davri yetarlicha uzun bo‘lishi kerak. Qisqa sinov paytida ma’lumot memtableda qolib, compaction hali boshlanmagan bo‘lsa, nisbat sun’iy past ko‘rinadi; keyingi fon ishlari esa boshqa davrga tushadi. Mantiqiy baytlarga takroriy urinishlar, replikatsiya nusxalari yoki siqilishdan oldingi hajm kiradimi, bu ham hujjatlashtiriladi.
Database metrikalari compaction o‘qish-yozish hajmini ko‘rsatishi mumkin, operatsion tizim blok qurilmasiga yuborilgan baytlarni, SSD esa NANDga yozilgan ichki hajmni hisoblaydi. Ularni vaqt belgisi va qatlam bo‘yicha ajratib solishtirish sababni topishga yordam beradi.
Ta’siri va muvozanat
Yuqori write amplification disk o‘tkazuvchanligini band qiladi, so‘rov kechikishini oshiradi va SSDning yozish chidamliligini tezroq sarflaydi. Replikatsiya ham tarmoq va boshqa qurilmalarda alohida yozuvlar hosil qiladi. Biroq nisbatni nolga yaqinlashtirish maqsad emas: WAL, ko‘p nusxa va indekslar bardoshlilik hamda tez o‘qish uchun ongli xarajatlardir.
Kamaytirish yo‘llari ish yukiga mos compaction tanlash, keraksiz indekslarni olib tashlash, kichik yozuvlarni guruhlash, sahifa va fill factorni sozlash, siqish hamda katta vaqtli ma’lumotni bo‘limlar bo‘yicha o‘chirishni o‘z ichiga oladi. Har o‘zgarish read amplification, space amplification, tiklanish va izchillik bilan birga sinovdan o‘tkaziladi. Eng yaxshi sozlama umumiy xizmat maqsadlariga mos muvozanatdir.
Bog‘liq tushunchalar
Read amplification, Space amplification, Compaction, Log-Structured Merge-tree, B-tree, Write-ahead log, SSD