Podstawowe problemy bazodanowe
Krótki przewodnik po chorobach baz danych.
[Pierwsze kroki] [Lock] [Indeksy] [Dlaczego to nie jest problem sieciowy] [Jak poszerzać wiedzę o postgresie]
Pierwsze kroki
Na początku pada nie tyle słowo, co zdanie, na dodatek pochodzi ono nie od boga, tylko od developera i na ogół brzmi tak:
Pierwszą czynnością jaką wykonujemy jest połączenie po ssh i uruchomienie htop - zanim trochę bardziej szczegółowo omówimy, co możemy tam zobaczyć, załóżmy że nie widzimy nic szczególnego - parametry są trochę podwyższone (albo i nawet nie), nie ma zapytania-killera. Jeśli i przeszukanie logów po “FATAL|ERROR“ nie zwraca nic konkretnego, pierwszą czynnością naprawczą jest wykonanie analyze:
opcjonalnie z vacuum:
Powyższe instrukcje wykonujemy z shella i wykonają się dla wszystkich tabel - proces odpalamy w screenie i przechodzimy do dalszej diagnostyki. O ANALYZE, martwych krotkach i VACUUM poczytasz tu.
Lock
Krótka ściąga z locków jest tu (myślę, że warto w ogóle zapoznać się z tym artykułem), tu powtórzymy podstawowe zapytanie diagnostyczne:
Niepokojące informacje mogą czekać w kolumnie blocked_cnt, wskazuje ona ilość zapytań, które zostały zablokowane przez inne zapytania. Tym zapytaniem natomiast zobaczysz co konkretnie powoduje locki.
Problemy z lockami mogą objawiać się różnie i sprawdzenie tego jest elementem każdej diagnostyki, ale dość typowe jest połączenie wysokiego loadu i wysycania puli połączeń.
Indeksy
Duplikaty
Dlaczego to nie jest problem sieciowy
Z jakiegoś powodu często i szczególnie, kiedy wyeliminuje się najbardziej podstawowe przyczyny (nie ma podwyższonego loadu, dysk / CPU / RAM są w porządku), podejrzenia kierowane są do sieci. Jeśli jednak przejrzy się dokumenty typu RCA, okazuje się, że sieć nie była przyczyną nawet 1% przypadków.
To, co wskazuje na problem sieciowy to znamiona awarii globalnej. Jeśli zatem cały świat wokół Ciebie nie przypomina syreny strażackiej a ludzie zaczynają wypowiedź od powitania a nie od wulgaryzmów, serio, zostaw sieć w spokoju.
Jak poszerzać wiedzę o postgresie
PostgreSQL to jeden z najbardziej zaawansowanych silników bazodanowych, w dodatku bardzo “elokwentny“ - chętnie powie Ci dużo na swój temat, trzeba tylko zapytać. Jest świetna dokumentacja i oczywiście mnóstwo informacji znajdziesz w logach (większość parametrów przy zmianie wymaga tylko reloadu, ale ale uważaj, żeby plik z logami nie ważył za dużo). Trzecim źródłem wiedzy jest sama baza - postres ma mnóstwo metadanych, z których możesz dowiedzieć co w bazie jest i co się z nią dzieje. Jest też sztuczka, która bez dokumentacji ułatwi Ci zebranie wiedzy:

Jak widzisz, uruchomienie natywnego klienta PostgreSQL z