Indexing at Scale
Katta hajmda indekslash
Qalin lug'atda "aeroport" so'zini qidirayotganingizni tasavvur qiling: agar lug'at TARTIBSIZ bo'lsa, siz har bir sahifani BOSHIDAN oxirigacha varaqlashga majbur bo'lardingiz. Lug'at ALIFBO tartibida joylashgani uchun, siz to'g'ridan-to'g'ri "A" harfiga o'tib, o'sha yerdan qidirasiz — bu, MING marta tezroq. Baza indeksi — aynan shu alifbo tartibi vazifasini bajaradi.
Kichik jadvalda (yuzlab yozuv) indekssiz qidirish (full table scan — jadvalning HAR bir qatorini tekshirish) sezilarli sekinlik keltirmaydi. Lekin jadval MILLIONLAB qatorga yetganda, indekssiz qidirish sekundlab, hatto DAQIQALAB vaqt olishi mumkin — shu payt indeks HAYOTIY zarurat bo'lib qoladi.
| Indekssiz qidirish | Indeks bilan qidirish | |
|---|---|---|
| 1,000 qator | Sezilmaydi (millisekundlar) | Sezilmaydi |
| 10,000,000 qator | Sekundlab davom etishi mumkin | Millisekundlarda (deyarli o'zgarmaydi) |
Lekin indeks BEPUL emas — bu, tizim dizaynida takrorlanadigan yana bir murosa. Har bir indeks, o'zi ham QO'SHIMCHA disk joyi egallaydi, va — muhimi — HAR safar jadvalga YANGI qator qo'shilganda yoki mavjudi O'ZGARTIRILGANDA, indeks HAM yangilanishi kerak, bu yozish operatsiyalarini SEKINLASHTIRADI. Shuning uchun "har bir ustunga indeks qo'yish" — yaxshi strategiya EMAS: faqat TEZ-TEZ qidiruv shartida ishlatiladigan ustunlarga (masalan, WHERE email = ... yoki WHERE user_id = ...) indeks qo'yiladi.
Katta miqyosda indekslash bilan sharding (oldingi dars) BOG'LIQ: har bir shard O'ZINING indeksini alohida yuritadi, shuning uchun "barcha shard'lar bo'ylab qidirish" — har bir shard ICHIDA indeks orqali TEZ qidirib, natijalarni birlashtirishni anglatadi. To'g'ri tanlangan indeks — sharding kabi katta o'zgarishga BORMASDAN, bazadan olinadigan tezlikni sezilarli oshirishning ENG ARZON yo'li.
Key Takeaway
Key Takeaway:
Indeks — tez-tez qidiriladigan ustunlar bo'yicha, jadvalning HAR bir qatorini tekshirish o'rniga to'g'ridan-to'g'ri kerakli yozuvga o'tish imkonini beradi, va ma'lumot ko'paygani sari uning foydasi EKSPONENSIAL o'sadi. Narxi — qo'shimcha disk joyi va sekinroq yozish, shuning uchun faqat HAQIQATAN qidiriladigan ustunlarga qo'yiladi.
NEXT UP
SQL vs NoSQL at Scale