Təsəvvür elə ki, sən məlumat okeanında üzən bir gəminin kapitanısan. Sadəcə gəminin üzməsini istəmirsən. Əmin olmaq istəyirsən ki, o, uzun sorğuların aysberqinə çırpılmayacaq, gözlənilməz blokirovka fırtınası səni yaxalamayacaq və gəmi bağlantıların həddindən artıq yüklənməsindən batmayacaq. Verilənlər bazasının monitorinqi — sənin radarın, barometrin və exolotundur, hansılar ki, aysberqlərdən, fırtınalardan və panikadan qaçmağa kömək edir.
Verilənlər bazasını niyə və necə monitorinq etmək lazımdır
Monitorinq bazanın stabil işləməsini təmin etməyə və mümkün problemləri qabaqcadan görməyə kömək edir. Təsəvvür elə ki, servis qəfil çökəndə yox, əvvəlcədən siqnal alırsan: «Ay bala, bax bu sorğu artıq 30 saniyədir işləyir, nəsə düz getmir». Sən əvvəlcədən bilirsən, harada tıxac var, kim blokirovkanı saxlayır və hansı mərhələdə baza resurs çatışmazlığından boğulacaq.
Bax bunlara diqqət yetirmək lazımdır:
Sorğuların və tranzaksiyaların aktivliyi. Sorğuların axınına nəzarət elə, necə ki, dispetçer kəsişmədə hərəkətə baxır. Hansı SQL-komandalar digərlərini ləngidir? Kim bazanı ən çox yükləyir? Bu suallar işin optimallaşdırılması üçün fürsət verir — tələsik və panikasız.
Resursların istifadəsi. CPU, operativ yaddaş və disk sahəsi — bunlar gəminin yanacağı və gövdəsi kimidir. Əgər resurslardan biri "sızır" və ya həddindən artıq yüklənibsə, bütün gəmi dayana bilər. Monitorinq göstərir, harada yüklənmə var və yükü bölüşdürmək imkanı verir.
Sorğuların performansı. Bəzi SQL-sorğular elə bil nazlı sərnişinlərdir: çox şey istəyirlər, digərlərini ləngidirlər və daim narazıdırlar. Monitorinq göstərir, hansılar xüsusilə "acgözdür" — ki, onları indeksləyəsən, yenidən yazasan və ya əvəzləyəsən.
Blokirovkalar və konfliktlər. Bəzən sorğular bir-biri ilə konfliktə girir: biri resursu saxlayır, digəri onu gözləyir. Elə bil biri qapını bir tərəfə çəkir, digəri isə başqa tərəfə dartır. Belə blokirovkaların monitorinqi vaxtında müdaxilə edib gərginliyi aradan qaldırmağa imkan verir.
Yaxşı monitorinq sadəcə bazanın "canlı" olduğunu demir. O, göstərir, harada həyatında problem çıxa bilər — və sənə vaxt verir ki, hər şeyi düzəldəsən, problemlər reallığa çevrilməmişdən əvvəl.
PostgreSQL üçün əsas monitorinq metrikləri
Bazanın vəziyyətini başa düşmək üçün, nəyə baxmaq lazım olduğunu bilməlisən. Bu metriklər — bazanın "nəbzi" və "təzyiqidir". Əsas parametrlər bunlardır:
Aktiv bağlantıların sayı.
Hazırda neçə istifadəçi qoşulub? Onlar bazanı düşünmədən sorğularla "sındırmağa" çalışırlar? Məsələn,
pg_stat_activityhaqqında növbəti mühazirələrdə danışacağıq, o, cari aktivliyi göstərəcək.Sorğuların icra müddəti.
Hansılar sorğular ən tez icra olunur? Və əksinə, hansılar elə bil "təqaüdə çıxıb"?
İndekslərin istifadəsi.
Əgər indekslərin var, amma istifadə etmirsən, deməli, nəsə düz getmir. Bunu
pg_stat_user_indexesilə yoxlayaq.Blokirovka və konflikt səviyyəsi.
"Deadlocks" (qarşılıqlı blokirovkalar) qarşısını almaq üçün geniş istifadə olunur.
CPU yüklənməsi və yaddaş istifadəsi.
Məsələn, serverinin resurslarından nə qədərini PostgreSQL "yeyir"?
Bu praktikada necə görünür?
Gəlin real bir nümunəyə baxaq. Budur, konkret bazanın ölçüsünü öyrənməyə kömək edən sadə bir sorğu:
SELECT pg_size_pretty(pg_database_size('sənin_bazanın_adı')) AS database_size;
Bu sadə sorğu bazanın ölçüsünü oxunaqlı formatda qaytaracaq — məsələn, 243 MB və ya 1.2 GB. Faydalıdır, əgər tez bir zamanda bazanın son vaxtlar nə qədər böyüdüyünü qiymətləndirmək lazımdırsa.
Əgər bütün bazaların ölçüsünə bir anda baxmaq istəyirsənsə — hər birini əl ilə yazmağa ehtiyac olmadan — belə bir variantdan istifadə edə bilərsən:
SELECT datname, pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database;
Bu artıq serverdəki bütün bazalara ümumi baxış verir — admin üçün rahatdır, hansı ki, disk istifadəsinə nəzarət edir və "acgözləri" hostinqdən "Səndə yer qurtarır" məktubu gəlməmişdən qabaq tutmaq istəyir.
GO TO FULL VERSION