Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

IBAnalyst je nyní součástí HQbird Standard!

IBAnalyst je nástroj, který umožňuje správci databáze analyzovat podrobné statistiky databáze Firebird nebo InterBase a následně identifikovat možné problémy s výkonem databáze, údržbou a tím, jak aplikace interaguje s databází.

Dokumentace

IBAnalyst graficky zobrazuje statistiky databáze Firebird (nebo InterBase) uživatelsky přívětivým způsobem a zvýrazňuje následující problémy:

  • fragmentace tabulek a BLOBů,
  • verzování záznamů,
  • garbage collection,
  • efektivita indexů atd.

Kromě toho může IBAnalyst automaticky vytvářet inteligentní návrhy na zlepšení výkonu databáze a údržby databáze.

IBAnalyst může získávat statistiky z živých produkčních databází prostřednictvím Services API (doporučeno), nebo analyzovat textový výstup příkazů gstat -a -r …. Statistiky z období špičkového zatížení mohou poskytnout mnoho informací o skutečných problémech s výkonem v produkčních databázích.

Jak může IBAnalyst pomoci najít problémy ve vaší databázi Firebird nebo InterBase

Projdeme si klíčové funkce IBAnalyst. Když se poprvé podíváte na statistiky vaší databáze v IBAnalyst, věci nemusí být jasné, zejména pokud IBAnalyst zobrazuje mnoho varování pomocí červených a žlutých buněk v zobrazeních Summary, Tables a Index. Podívejme se na několik příkladů skutečných statistik.

Souhrnné zobrazení

IBAnalyst Summary

Stránka Summary zobrazuje mnoho informací, ale nejcennější je stav transakcí ( přečtěte si prosím popis možných stavů transakcí v nápovědě IBAnalyst, která je dostupná stisknutím F1 nebo v menu Help).

Na tomto snímku obrazovky můžete vidět, že některá transakce je aktivní po dlouhou dobu, “60% denního průměru”. IBAnalyst označuje stav takové transakce červeně, protože tato transakce může zabránit tomu, aby server považoval nahromaděné verze za garbage, a tedy aby byly garbage collected. To je možný důvod zpomalení: čím více verzí existuje pro určitý záznam, tím více času zabere jeho čtení.

Chcete-li najít tuto dlouho běžící transakci, můžete použít modul MON$Logger z FBScanner, nebo provést přímý dotaz na tabulky MON$. Poté, abyste zjistili, které tabulky byly ovlivněny dlouho běžícími transakcemi (tabulky s mnoha verzemi záznamů), musíte přejít do zobrazení “Tables” v IBAnalyst.

Zobrazení Tables

IBAnalyst Tables

V zobrazení “Tables” můžete vidět tabulky a jejich důležité parametry: počet záznamů, počet verzí záznamů, délku záznamu, maximální počet verzí atd.

Toto zobrazení můžete seřadit, abyste našli největší tabulky. Zvláště nás zajímají tabulky s mnoha verzemi záznamů - mnoho verzí záznamů prodlouží garbage collection pro dotčené tabulky. Obvykle je nutné změnit algoritmy aktualizace a mazání, abyste se zbavili mnoha verzí záznamů.

Row Versions ukazuje celkový počet verzí pro konkrétní tabulku a row Max Vers ukazuje maximální počet verzí dosažený některým záznamem. Například pokud se podíváte na tabulku NAB, je zde 11,9 milionů záznamů, celkový počet verzí je 20932, ale jeden záznam má 176 verzí. Čtení a parsování takového paketu z disku trvá déle, takže čtení tohoto záznamu je pomalejší než čtení ostatních.

Tento obrázek také ukazuje mnoho tabulek, kde byla data smazána. Ale kvůli dlouho běžící transakci server nemůže tyto verze smazat, a stále jsou na disku, stále indexované a stále čtené serverem při čtení dat.

Zobrazení Index

IBAnalyst Indices

Některé produkční databáze mohou mít indexy s indexovanou pouze jedinou hodnotou klíče. To se může stát, protože databáze byla vyvinuta “aby byla v budoucnu rozšířena”, nebo někdo jen experimentoval s indexy během vývoje nebo testů. Tyto indexy můžete vidět jako “Useless” v IBAnalyst:

SKIN04, SKIN05, SKOUT03 atd., postavené na sloupci, který má pouze jednu hodnotu pro všechny řádky (miliony řádků). Tyto indexy jsou skutečně zbytečné, protože

  • optimalizátor může použít tento index, pokud zadáte “where field = …”. Protože pole obsahuje pouze jednu hodnotu, použití indexu způsobí zbytečné čtení stránek indexu z disku do paměti a spotřebuje paměť (a čas), když server připravuje, které řádky zobrazí pro tento dotaz.
  • vytváření indexů je součástí procesu obnovy. Extra indexy přidávají extra čas.

Samozřejmě to není vše, co můžete o své databázi v IBAnalyst zjistit. Můžete také najít

  • průměrný počet transakcí za den
  • zda došlo k rollbackům nebo ztraceným připojením, a kdy
  • jak velké (v megabajtech) jsou jednotlivé tabulky a indexy
  • tabulky, které mají záznamy proložené bloby, a proto je čtení pouze záznamů pomalejší
  • prázdné tabulky - buď zapomenuté, nebo prázdné v době, kdy byly statistiky pořízeny
  • indexy s mnoha duplicitními klíči (můžete zvážit distribuci hodnot sloupce)
  • indexy s hloubkou 4 a více - možná potřebujete zvýšit velikost stránky pro zrychlení

Automatická doporučení

Pokud jste zmateni čtením varování v barevných buňkách, stačí otevřít “Reports\View recommendations” - vše potřebné pro výkon databáze je zde shromážděno. Neváhejte se ptát na jakékoli dotazy ( [email protected])