Analiza statystyk w bazie danych PostgreSQL za pomocą narzędzi EuroDB

Analiza statystyk w bazie danych PostgreSQL za pomocą narzędzi EuroDB

Monitorowanie bazy danych bardzo często jest niedoceniane przez deweloperów. Bywa przesuwane na dalszy plan, mimo iż jest ono jednym z najprostszych i najskuteczniejszych narzędzi służących do utrzymania i optymalizacji bazy danych oraz znalezienia w niej błędów. Dlatego dziś przyjrzymy się kwestii analizy statystyk w bazie danych PostgreSQL.

Monitorowanie bazy danych bardzo często jest niedoceniane przez deweloperów. Bywa przesuwane na dalszy plan, mimo iż jest ono jednym z najprostszych i najskuteczniejszych narzędzi służących do utrzymania i optymalizacji bazy danych oraz znalezienia w niej błędów.

W ostatnim artykule dotyczącym tematyki bazodanowej poruszyliśmy kwestie monitorowania logów w Postgresie za pomocą modułu analizy logów EuroDB. Dziś uzupełnimy ten temat i przyjrzymy się dokładniej kwestii analizy statystyk w bazie danych PostgreSQL.

Pełny obraz funkcjonowania bazy danych

Drugim, obok logów, źródłem informacji o stanie systemu są wewnętrzne statystyki bazy danych. Dzięki takiemu zestawieniu dwóch rzetelnych źródeł informacji mamy pełny obraz funkcjonowania klastra, który gwarantuje spokój zarówno klientowi, jak i administratorowi opiekującemu się projektem. Niestety standardowa implementacja kolektora statystyk wbudowana w silnik PostgreSQL jest dosyć kłopotliwa w obsłudze. Częstą praktyką jest więc pozostawanie jedynie przy samych informacjach z logów, co jest złą praktyką. Najlepszym, a jednocześnie najprostszym rozwiązaniem jest więc wykorzystanie narzędzia z pakietu EuroDBmodułu analizy statystyk. Został on zaprojektowany do tworzenia czytelnych raportów, które są gotowe do użycia przez administratorów, deweloperów czy nawet działy biznesowe. Z myślą właśnie o automatyzacji i wspieraniu biznesu zaimplementowane zostały wyliczenia zarówno średnich oraz szczytowych wartości, jak i trendy aktywności. Moduł analizy statystyk cechuje się niezwykle przyjaznymi, klarownymi statystykami, pozwalającymi na monitorowanie stanu bazy danych w wybranych przedziałach czasowych, a nawet na analizę porównawczą dwóch wybranych okresów. Niewątpliwie połączenie modułu analizy statystyk z informacjami czerpanymi z logów bazy daje nieocenioną pomoc przy analizie wszelkich rodzajów błędów.

Statistics analysis welcome

Szybka konfiguracja modułu analizy statystyk

Moduł do analizy statystyk jest nieodłącznym narzędziem pakietu EuroDB. Jego konfiguracja opiera się więc o platformę EuroDB, której silnikiem jest PostgreSQL. Instrukcję dotyczącą konfiguracji modułu przedstawiliśmy w punktach. Jest ona oczywiście również dostępna po zainstalowaniu pakietu. Tutaj jednak zawarliśmy dodatkowe informacje i ‘półkroki’ dla deweloperów, którzy mają jedynie podstawowe doświadczenie z bazami danych. Konfigurację rozpoczynamy od zainstalowania modułu instalatorem od EuroDB. Następnie należy:

  1. Uruchomić serwis httpd.service (np. komendą: systemctl start httpd).
  2. Używając przeglądarki, przejść do http://HOST_IP/statsanalyzer/index.php, gdzie HOST_IP to adres IP hosta. Najczęściej jest to ‘localhost’, zatem link, który nas interesuje to http://localhost/statsanalyzer/index.php.
  3. Wygenerować, zgodnie z instrukcją podaną na stronie, skrypt tworzący bazę danych PostgreStats, podając nazwę użytkownika, który otrzyma do niej dostępy. Można nadać te prawa istniejącemu użytkownikowi postgres lub utworzyć własnego w bazie.
  4. Wykonać otrzymany skrypt w powłoce systemowej jako użytkownik z prawami dostępu do bazy danych. Takim użytkownikiem jest domyślnie postgres.
  5. W pliku /opt/eurodb/statsanalyzer/scripts/ps_conf.php zmienić nazwę użytkownika i hasło na użytkownika, którego podaliśmy podczas generowania skryptu.
  6. W przypadku gdy zapomnieliśmy hasła lub nie jest nam ono znane, możemy wykonać zapytanie do bazy danych, nadające na nowo hasło dla użytkownika. Powłokę bazy danych uruchomimy za pomocą skryptu psql, natomiast zapytanie będzie wyglądało np. ALTER USER postgres PASSWORD 'password';.
  7. Przeładować stronę /statsanalyzer/index.php i podać tymczasową nazwę administratora wraz z hasłem. Informacje te będą dostępne w domyślnej zakładce ‘Set-up’ w punkcie 3.
  8. W zakładce ‘Servers and Databases’ dodać serwer i interesującą nas bazę danych. Przykładowo dla serwera lokalnego będzie to: Name: local Host: localhost Port: 5432. Bazę dodaje się w podobny sposób, podając faktyczną nazwę bazy danych oraz użytkownika, z którego nawiązywane jest połączenie.
  9. Zalecane jest, aby na poprawnie skonfigurowanej bazie danych wykonać zapytanie SELECT pg_stat_reset(); w celu stworzenia aktualnego obrazu jej działania.
  10. Dodać do Cron nowy wpis aktualizujący informacje w module do analizy statystyk (np. komendą: crontab -e, dodając: 55 23 * * * /usr/bin/php /opt/eurodb/statsanalyzer/scripts/ps_cron.php). Manualne wykonanie skryptu ps_cron.php również wykonuje aktualizację.

Nowe podejście do analizy

Już po pierwszym dniu używania modułu można stwierdzić, że wyświetlanych danych jest dużo. Jednak dopiero wykorzystując narzędzie Cron do systematycznego aktualizowania modułu analizy statystyk można zauważyć prawdziwy ogrom informacji. Bardzo przemyślaną stroną modułu jest też strona graficzna, która jest przejrzysta.

Daily statistics report

Dla przykładowego podsumowania dnia statystyki obejmują:

  • zatwierdzenia (commity)
  • wycofania (rollbacki)
  • odczyty bloków
  • trafienia w pamięć podręczną
  • konflikty
  • zastoje (deadlock)
  • inserty użytkowników
  • update użytkowników
  • delete użytkowników
  • skanowania sekwencyjne
  • skanowania indeksowane.

Natomiast dla każdej z tych grup raport uwzględnia:

  • ilość
  • zmianę względem analogicznego poprzedniego dnia
  • średnią godzinową
  • średnią minutową
  • średnią sekundową.

Technologia przyjazna optymalizacji kosztów

Używając modułu analizy statystyk, jesteśmy w stanie w szybszy sposób dostrzec potencjalne zagrożenie, znaleźć błąd czy zwiększyć optymalizację bazy danych. Weźmy pod uwagę następujący problem:

Po wdrożeniu nowej wersji aplikacji administrator bazy danych zaobserwował znaczący wzrost skanów sekwencyjnych.

Przykładowe rozwiązanie za pomocą modułu analiza statystyk:

Dzięki zestawieniu ze sobą analogicznych okresów udało się stwierdzić, że zmiana ilości skanów pojawia się dopiero po dacie wdrożenia. Korelacja tych danych z informacjami uzyskanymi przez analizę logów doprowadziła do wykrycia nieoptymalnej kwerendy. Jej korekta spowodowała redukcję kosztów utrzymania całego systemu.

Podsumowanie

Jak widać, moduł analizy statystyk to przydatne narzędzie, które w przejrzysty sposób pokazuje, jak działa baza danych. W połączeniu z modułem analizy logów zapewnia on cały obraz funkcjonowania naszego klastra. Więcej przykładów zastosowań wraz z informacjami na temat samego modułu znajduje się w zakładce Analiza statystyk.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.