IBAnalyst
IBAnalyst jest teraz częścią HQbird Standard!
IBAnalyst to narzędzie, które pozwala administratorowi bazy danych analizować szczegółowe statystyki bazy danych Firebird lub InterBase, a następnie identyfikować potencjalne problemy z wydajnością bazy danych, jej konserwacją oraz sposobem interakcji aplikacji z bazą danych.
Dokumentacja
IBAnalyst graficznie prezentuje statystyki bazy danych Firebird (lub InterBase) w przyjazny dla użytkownika sposób i podkreśla następujące problemy:
- fragmentacja tabel i BLOB-ów,
- wersjonowanie rekordów,
- odśmiecanie (garbage collection),
- efektywność indeksów itp.
Ponadto IBAnalyst może automatycznie formułować inteligentne sugestie dotyczące poprawy wydajności bazy danych i jej konserwacji.
IBAnalyst może pobierać statystyki z działających baz produkcyjnych przez Services API (zalecane) lub analizować tekstowe wyjście poleceń gstat -a -r …. Statystyki z okresów szczytowego obciążenia mogą dostarczyć wielu informacji o rzeczywistych problemach z wydajnością w bazach produkcyjnych.
Jak IBAnalyst może pomóc znaleźć problemy w Twojej bazie Firebird lub InterBase
Przeanalizujmy kluczowe funkcje IBAnalyst. Gdy po raz pierwszy spojrzysz na statystyki swojej bazy danych w IBAnalyst, niektóre rzeczy mogą być niejasne, zwłaszcza jeśli IBAnalyst pokazuje wiele ostrzeżeń oznaczonych czerwonymi i żółtymi komórkami w widokach Podsumowanie, Tabele i Indeksy. Rozważmy kilka rzeczywistych przykładów statystyk.
Widok podsumowania
Strona podsumowania pokazuje wiele informacji, ale najcenniejszy jest stan transakcji ( przeczytaj proszę opis możliwych stanów transakcji w pomocy IBAnalyst, dostępnej po naciśnięciu F1 lub w menu Pomoc).
Na tym zrzucie ekranu widać, że pewna transakcja jest aktywna od dłuższego czasu, „60% średniej dziennej". IBAnalyst oznacza stan takiej transakcji na czerwono, ponieważ transakcja ta może uniemożliwić serwerowi uznanie zgromadzonych wersji za śmieci, a tym samym ich odśmiecenie. To możliwa przyczyna spowolnienia: im więcej wersji istnieje dla danego rekordu, tym więcej czasu zajmie jego odczytanie.
Aby znaleźć tę długo działającą transakcję, możesz użyć modułu MON$Logger z FBScanner lub wykonać bezpośrednie zapytanie do tabel MON$. Następnie, aby dowiedzieć się, które tabele zostały dotknięte przez długo działające transakcje (tabele z wieloma wersjami rekordów), przejdź do widoku „Tabele" w IBAnalyst.
Widok tabel
W widoku „Tabele" możesz zobaczyć tabele i ich ważne parametry: liczbę rekordów, liczbę wersji rekordów, długość rekordu, maksymalną liczbę wersji itp.
Możesz sortować ten widok, aby znaleźć największe tabele. Szczególnie interesują nas tabele z wieloma wersjami rekordów - wiele wersji rekordów wydłuży odśmiecanie dla dotkniętych tabel. Zwykle konieczna jest zmiana algorytmów aktualizacji i usuwania, aby pozbyć się wielu wersji rekordów.
Wiersz Row Versions pokazuje całkowitą liczbę wersji dla danej tabeli, a wiersz Max Vers pokazuje maksymalną liczbę wersji osiągniętą przez pojedynczy rekord. Na przykład, jeśli spojrzysz na tabelę NAB, ma ona 11,9 miliona rekordów, całkowita liczba wersji to 20932, ale jeden rekord ma 176 wersji. Odczytanie i przeanalizowanie takiego pakietu z dysku zajmuje więcej czasu, więc odczytanie tego rekordu jest wolniejsze niż odczytanie innych.
Ten obraz pokazuje również wiele tabel, w których dane zostały usunięte. Jednak z powodu długo działającej transakcji serwer nie może usunąć tych wersji, pozostają one na dysku, są nadal indeksowane i nadal odczytywane przez serwer podczas odczytu danych.
Widok indeksów
Niektóre bazy produkcyjne mogą mieć indeksy z tylko jedną zindeksowaną wartością klucza. Może się tak zdarzyć, ponieważ baza danych została opracowana „z myślą o przyszłym rozszerzeniu" lub ktoś po prostu eksperymentował z indeksami podczas rozwoju lub testów. Możesz zobaczyć te indeksy jako „Bezużyteczne" w IBAnalyst:
SKIN04, SKIN05, SKOUT03 itp., zbudowane na kolumnie, która ma tylko jedną wartość dla wszystkich wierszy (miliony wierszy). Te indeksy są naprawdę bezużyteczne, ponieważ
- optymalizator może użyć tego indeksu, jeśli określisz „where field = …". Ponieważ pole zawiera tylko jedną wartość, użycie indeksu spowoduje bezużyteczne odczytywanie stron indeksu z dysku do pamięci oraz zużycie pamięci (i czasu), gdy serwer będzie przygotowywał, które wiersze pokazać dla tego zapytania.
- tworzenie indeksów jest częścią procesu przywracania. Dodatkowe indeksy wydłużają ten czas.
Oczywiście to nie wszystko, co możesz znaleźć o swojej bazie danych w IBAnalyst. Możesz również znaleźć
- średnią liczbę transakcji dziennie
- czy wystąpiły wycofania (rollbacki) lub utracone połączenia, i kiedy
- jak duże (w megabajtach) są każda tabela i każdy indeks
- tabele, w których rekordy są przeplatane blobami, przez co odczytywanie samych rekordów jest wolniejsze
- puste tabele - po prostu zapomniane lub puste w momencie pobierania statystyk
- indeksy z wieloma zduplikowanymi kluczami (możesz rozważyć rozkład wartości w kolumnie)
- indeksy o głębokości 4 i większej - być może musisz zwiększyć rozmiar strony, aby przyspieszyć działanie
Automatyczne rekomendacje
Jeśli czujesz się zagubiony czytając ostrzeżenia w kolorowych komórkach, po prostu otwórz „Reports\View recommendations" - wszystko, co istotne dla wydajności bazy danych, jest tutaj zebrane. Zachęcamy do zadawania pytań ( [email protected]).


