Sekin so'rov tashxisi va texnik xizmat
terminal
Amaliy lablar
Ushbu darsga biriktirilgan interaktiv topshiriqlar — real Kubernetes muhitida bajaring va natijani tekshiring.
terminal
PostgreSQL: EXPLAIN ANALYZE o'qish — baho va haqiqat farqi
Osonbolt+20 XP
So'rov sekin. Birinchi qadam — TAXMIN qilmaslik, balki EXPLAIN (analyze, buffers) bilan bazaning O'ZIDAN nima bo'layotganini so'rash. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa kod = 599 so'rovining to'liq tashxis rejasini /root/db/reja.txt fayliga yozing: ⚠Fayl ichida actual time (haqiqiy vaqt), Rows Removed by Filter (tashlab yuborilgan qatorlar) va Buffers (o'qilgan bloklar) satrlari bo'lishi kerak — bu uchtasi tashxisning asosiy o'lchovlari. Muvaffaqiyat mezoni (jonli) Fayl mavjud; actual time, Rows Removed by Filter, Buffers, Seq Scan satrlari bor; Execution Time yozilgan
terminal
PostgreSQL: pg_stat_statements — so'rov statistikasini yoqish
Murakkabbolt+30 XP
"Baza sekin" degan shikoyat keldi. Qaysi so'rov sekin? Taxmin qilish o'rniga bazaning o'zi hisoblab bergan statistikani o'qish kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa pg stat statements kengaytmasini yoqing: alter system set shared preload libraries = 'pg stat statements'; Serverni QAYTA ISHGA TUSHIRING (pg ctl restart) — bu sozlama faqat restart bilan qo'llanadi create extension pg stat statements; Bir xil so'rovni KAMIDA IKKI marta bajaring: select count( ) from hodisa where kod = 599 Muvaffaqiyat mezoni (jonli) Kengaytma o'rnatilgan; shared preload libraries sozlangan; pg stat statements ko'rinishi so'rov qayd etgan va calls = 2; baza ishlab turadi
terminal
PostgreSQL: eng og'ir so'rovlarni topish (pg_stat_statements bo'yicha hisobot)
Murakkabbolt+30 XP
Statistika yig'ilyapti — endi undan foyda olish kerak. Ishlab chiqarishda eng ko'p ishlatiladigan tashxis so'rovi aynan shu. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa /root/db/query.sql fayliga so'rov yozing: pg stat statements dan eng ko'p UMUMIY vaqt olgan so'rovlarni chiqarsin. Ustunlar: calls, umumiy vaqt (total exec time), o'rtacha vaqt (mean exec time) va so'rov matnining boshi. Natija umumiy vaqt KAMAYISHI bo'yicha tartiblangan, birinchi 5 qator. ⚠SEED pg stat statements ni allaqachon yoqib, bir necha so'rov bajargan. Muvaffaqiyat mezoni (jonli) So'rov xatosiz bajariladi va kamida 3 qator qaytaradi; total exec time, mean exec time va calls ustunlari ishlatilgan; natija tartiblangan va cheklangan
terminal
PostgreSQL: ishlatilmagan indekslarni topish va o'chirish
Murakkabbolt+30 XP
Vaqt o'tib jadvalga indekslar qo'shiladi, lekin hech kim ularni o'chirmaydi. Har ortiqcha indeks — yozishdagi qo'shimcha yuk va isrof qilingan disk. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa SEED ikki indeks yaratgan: idx kod (kod bo'yicha) va idx daraja (daraja bo'yicha), keyin FAQAT kod bo'yicha qidiruv bajargan. pg stat user indexes dan HECH QACHON ishlatilmagan indeksni aniqlang (idx scan = 0) Uni o'chiring (drop index) ⚠Ishlatilgan indeks va primary key QOLISHI kerak. Muvaffaqiyat mezoni (jonli) idx daraja o'chirilgan; idx kod va hodisa pkey joyida; kod bo'yicha qidiruv hamon indeksdan foydalanadi
terminal
PostgreSQL: to'liq tashxis va himoya (I temasi yakuni)
Murakkabbolt+30 XP
Panel so'rovi sekin, jadval shishgan, va bazani "abadiy" so'rovlardan himoyalash kerak. Uchala muammoni birga hal qilish — real SRE ishi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa Uch qadamni bajaring: Tezlashtirish : select from hodisa where xizmat = 'audit' and daraja = 'fatal' order by vaqt desc limit 10 so'rovi uchun BITTA indeks yarating — nomi idx panel, ustunlar tartibi to'g'ri bo'lsin (tenglik ustunlari oldin, tartiblash ustuni oxirida desc) Tozalash : vacuum (analyze) hodisa bajarib o'lik qatorlarni tozalang (SEED yangilash qilgan) Himoya : hn bazasi uchun statement timeout ni 5s qilib belgilang (alter database) Muvaffaqiyat mezoni (jonli) Indeks mavjud va panel so'rovi aynan undan foydalanadi, rejada Sort YO'Q; n dead tup = 0 va statistika yangilangan; statement timeout baza darajasida 5s va uzun so'rov RAD etiladi
terminal
PostgreSQL: Rows Removed by Filter ni indeks bilan yo'q qilish
Osonbolt+20 XP
Tashxis qildik: Seq Scan 50 000 qator o'qib, ulardan 50 000 tasini tashlab yuboryapti (Rows Removed by Filter). Bu — indeks yo'qligining eng aniq belgisi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa kod = 599 so'rovini tezlashtiring: kod ustuniga idx hodisa kod nomli indeks yarating analyze hodisa; ⚠Natijada reja Seq Scan BO'LMASLIGI va alohida Filter qadami QOLMASLIGI kerak — shart indeksning O'ZIDA bajariladi (Index Cond). ⚠Reja Index Scan yoki Bitmap Index Scan bo'lishi mumkin — ikkovi ham TO'G'RI (planner statistika namunasiga qarab tanlaydi). Muvaffaqiyat mezoni (jonli) Reja Seq Scan EMAS va aynan idx hodisa kod dan foydalanadi; rejada Filter YO'Q; keng shartda (kod = 200) esa hamon Seq Scan (planner to'g'ri qaror qabul qiladi)
terminal
PostgreSQL: statistika tashxisi — past kardinallikdagi ustunlar
Osonbolt+20 XP
Planner qarorlari STATISTIKAGA tayanadi. Statistika noto'g'ri bo'lsa reja ham noto'g'ri bo'ladi — indeks bor bo'lsa ham ishlatilmaydi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa /root/db/query.sql fayliga so'rov yozing: hodisa jadvalida n distinct qiymati 0 dan 10 gacha bo'lgan ustunlar NOMINI chiqarsin (pg stats dan), attname o'sish tartibida. Bitta ustun — bitta qator. ⚠Aniq n distinct SONINI chiqarmang: ANALYZE namuna oladi va son ishga tushirishga qarab o'zgaradi. Unikal ustunlar (id, vaqt) n distinct MANFIY qiymat oladi va ro'yxatga tushmaydi. Muvaffaqiyat mezoni (jonli) Natija AYNAN: daraja;kod;xizmat
terminal
PostgreSQL: o'lik qatorlarni VACUUM bilan tozalash
Murakkabbolt+30 XP
Jadvalning yarmi yangilandi. PostgreSQL da UPDATE — bu eski qator versiyasini O'LIK deb belgilash va YANGI versiya yozish. O'lik qatorlar joyni egallaydi va so'rovlarni sekinlashtiradi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa SEED barcha juft id li qatorlarni yangilagan — natijada 25 000 dan ortiq o'lik qator bor. hodisa jadvaliga VACUUM (ANALYZE) bajaring. ⚠Diqqat: vacuum o'lik qatorlarni QAYTA ISHLATISH uchun bo'shatadi, lekin jadval HAJMINI diskda KICHRAYTIRMAYDI — tekshiruv shuni ham o'lchaydi. Muvaffaqiyat mezoni (jonli) n dead tup = 0; last vacuum qayd etilgan; statistika yangilangan (last analyze); jadval hajmi HAMON katta (5 MB dan ortiq) — vacuum hajmni qaytarmaydi
terminal
PostgreSQL: VACUUM FULL — shishgan jadvaldan diskni qaytarish
Murakkabbolt+30 XP
Jadvaldan yarim ma'lumot o'chirildi, lekin disk hajmi kamaymadi. Bu — "bloat": fayl ichida bo'sh joy qolgan. Uni QAYTARISH alohida amal. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa SEED barcha qatorlarni yangilab, keyin yarmini O'CHIRGAN — jadval shishgan (6 MB dan ortiq). VACUUM FULL bilan jadvalni QAYTA QURIB, diskni qaytaring. ⚠VACUUM FULL jadvalni TO'LIQ bloklaydi va yangi fayl yozadi — ishlab chiqarishda faqat texnik xizmat oynasida bajariladi. Muvaffaqiyat mezoni (jonli) Jadval hajmi 3.5 MB dan KICHIK bo'lgan (disk qaytarilgan); qolgan qatorlar soni to'g'ri (25 001); indeks ham qayta qurilgan
terminal
PostgreSQL: CREATE STATISTICS — ko'p ustunli baho xatosini tuzatish
Murakkabbolt+30 XP
Planner ustunlarni MUSTAQIL deb hisoblaydi: xizmat = 'api' and daraja = 'info' bahosini ikki ehtimollikni KO'PAYTIRIB chiqaradi. Ustunlar bog'liq bo'lsa baho keskin xato bo'ladi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hodisa jadvalida 50 001 qator: xizmat (api/web/db + bitta audit), daraja (info/warn/error + bitta fatal), kod (200-204 + bitta 599), vaqt (kamayish tartibida kiritilgan). Ish katalogi /root/db/ — postgres uchun ochiq. Vazifa xizmat va daraja ustunlari uchun st xizmat daraja nomli kengaytirilgan statistika yarating — dependencies (funksional bog'liqlik) va ndistinct (birgalikdagi turlilik) turlari bilan. Keyin analyze hodisa; bajaring. Muvaffaqiyat mezoni (jonli) Statistika obyekti katalogda mavjud va IKKI turi (dependencies + ndistinct) so'ralgan; ikkala ustun qamrab olingan; analyze bajarilgan va pg stats ext da yozuv paydo bo'lgan
