Bosh sahifa Wiki Read amplification

Read amplification

Read amplification — foydalanuvchi so‘ragan mantiqiy ma’lumotni topish uchun saqlash tizimi undan ko‘proq fizik ma’lumot o‘qishi yoki ko‘proq ichki obyektni tekshirishi hodisasidir. Masalan, 4 KB qiymatni olish uchun bir nechta indeks sahifasi, sakkizta SSTable va jami 80 KB blok o‘qilsa, so‘rov sezilarli darajada kuchaygan. Atama baytlar nisbati, disk amallari soni yoki tekshirilgan tuzilmalar miqdori bilan o‘lchanishi mumkin; ko‘rsatkich ta’rifini aniq berish zarur.

Kelib chiqish sabablari

LSM daraxtida bir kalitning yangi va eski versiyalari turli SSTable fayllarida saqlanishi mumkin. Qidiruv memtable, kesh va bir necha disk qatlamini tekshiradi. Bloom filter kalit aniq yo‘q bo‘lgan fayllarni chetlab o‘tadi, compaction esa versiyalarni birlashtirib fayllar sonini kamaytiradi. Compaction ortda qolsa yoki size-tiered siyosatda kalit oralig‘i ko‘p faylda takrorlansa, nuqtaviy qidiruv narxi oshadi.

B-tree indeksida qidiruv ildizdan barggacha sahifalarni o‘qiydi. Indeksda kerakli ustunlar bo‘lmasa, topilgan har bir kalit uchun jadval sahifasiga alohida murojaat qilinadi. Past selektivlikdagi indeks minglab tasodifiy o‘qish hosil qilib, ketma-ket jadval skanidan qimmatroq bo‘lishi mumkin. Fayl tizimi blok hajmi va SSDning ichki o‘qish birligi ham kichik mantiqiy so‘rovni kattaroq fizik o‘qishga aylantiradi.

So‘rov turiga bog‘liqligi

Nuqtaviy qidiruv uchun “nechta fayl yoki sahifa tekshirildi” muhim. Range scan ko‘p foydali satrni ketma-ket olsa, umumiy bayt ko‘p bo‘lsa ham har bir natijaga to‘g‘ri keladigan xarajat past bo‘lishi mumkin. Aksincha, filtrdan o‘tmaydigan million satrni o‘qib, o‘nta satr qaytarish kuchli amplificationdir.

Ustunli saqlash analitik so‘rovga faqat kerakli ustunlarni o‘qitib baytlarni kamaytiradi. Biroq noto‘g‘ri partition, row group statistikasi yetishmasligi yoki juda keng proyeksiya ko‘p segmentni ochishga majbur qiladi. Siqish diskdan kam bayt olib keladi, lekin butun blokni ochish uchun protsessor va qo‘shimcha xotira sarflaydi.

O‘lchash

Bir xil nomdagi metrikalar turli tizimlarda farq qiladi. Amaliy kuzatuv quyidagilarni ajratadi:

  • storage qurilmasidan o‘qilgan baytlar va mijozga qaytgan baytlar;
  • blok keshiga murojaatlar va real disk o‘qishlari;
  • so‘rov ko‘rgan SSTable, partition yoki sahifalar soni;
  • skanerlangan va natijaga kiritilgan satrlar nisbati;
  • false positive sababli ochilgan fayllar.

Kesh issiq bo‘lgan sinov diskdagi muammoni yashirishi mumkin. Shuning uchun sovuq va issiq kesh holatlari, nuqtaviy hamda diapazonli so‘rovlar alohida o‘lchanadi. O‘rtacha qiymatdan tashqari yuqori percentildagi kechikish ham ko‘riladi.

Muvozanat

Read amplificationni kamaytirish uchun compaction, indeks, Bloom filter, partition pruning va ma’lumot joylashuvi sozlanadi. Ammo har yechim boshqa xarajat yaratadi: ko‘proq indeks write amplification va joy sarfini, agressiv compaction yozish yukini, katta kesh esa xotira talabini oshiradi. Maqsad bitta nisbatni mutlaq kamaytirish emas, xizmatning o‘qish kechikishi, yozish tezligi, chidamlilik va narx chegaralariga mos muvozanat topishdir.

Diagnostika misoli

Nuqtaviy qidiruv sekinlashganda avval query plan va storage statistikasi bir vaqt oralig‘ida olinadi. Kesh hit yuqori, ammo tekshirilgan SSTable soni ortgan bo‘lsa, muammo disk tezligidan ko‘ra compaction backlogiga yaqin. Jadval skanida qaytarilgan satr kam, o‘qilgan blok ko‘p bo‘lsa, indeks selektivligi yoki partition kaliti qayta baholanadi. O‘zgarishdan keyin faqat latency emas, yozish va disk joyi ham qayta o‘lchanadi.

Bog‘liq tushunchalar

Write amplification, Space amplification, Compaction, Bloom filter, SSTable, B-tree, Partition pruning