FBMonLogger
FBMonLogger је сада део HQbird Standard-а!
FBMonLogger је алат за анализу излаза мониторинг табела у Firebird-у и проналажење проблема са спорим SQL упитима, лоше дизајнираним трансакцијама (дуготрајне трансакције, трансакције са погрешним нивоом изолације, итд.) и идентификацију проблематичних апликација.
FBMonLogger се може повезати на Firebird базу података са проблемима у перформансама и идентификовати шта је разлог спорости: да ли је то неки кориснички прикључак, спор SQL упит или дуготрајна трансакција?
FBMonLogger подржава Firebird 2.1, 2.5 и 3.0 - за старије верзије Firebird-а или InterBase-а користите FBScanner.
FBMonLogger вам може показати:
- Најбоље прикључке са највећим бројем IO операција, неиндексираних и индексираних читања
- Најбоље SQL изјаве са највећим бројем IO операција, неиндексираних и индексираних читања
- Проблематичне трансакције: дуготрајне трансакције, трансакције са погрешним нивоом изолације, read/write трансакције и повезане информације: када су почеле, које апликације су их покренуле, са које IP адресе, итд.
- Прикључке и изјаве са најинтензивнијим акцијама garbage collection-а
- Read/write однос, INSERT/UPDATE/DELETE однос и још много тога.
Након повезивања на базу података у којој желите да пронађете проблеме са перформансама, потребно је направити неколико снимака мониторинг табела - кликните на «Get Snapshot» да бисте направили снимак.
Агрегирана статистика перформанси за корисничке прикључке
На првом екрану можемо видети агрегирану статистику за конекције на базу података и идентификовати конекције са највећим проблемима:
Секвенцијална читања / Индексирана читања
“Секвенцијална читања / Индексирана читања” нам показује укупан однос између секвенцијалних (неиндексираних) читања и индексираних читања у апликацији. Обично број неиндексираних читања треба да буде низак, тако да велики проценат секвенцијалних читања је знак да многи SQL упити имају NATURAL планове извршавања и да могу бити разлог спорог времена одговора.
Клик на запис у «TOP attachments: sequential/indexed reads» ће вас одвести на таб «Attachments», где можете видети више детаља о прикључку, а затим прећи на таб «Transactions» или «Statements», где ћете видети трансакције и прикључке повезане са изабраним прикључком (ако је ознака «Link to selected attachment» укључена, у супротном ће бити приказане све трансакције/изјаве за све прикључке).
Детаљи о упису
«Write details» вам даје преглед операција уписа: однос између INSERT/UPDATE/DELETE операција међу свим прикључцима на базу. У табели највећих писаца можете видети прикључке са највећим бројем операција уписа. Корисно је за идентификацију апликација или софтверских модула који обављају прекомеран број ажурирања или брисања (које су најопасније операције у погледу garbage collection-а).
Детаљи о garbage collection-у
Шта значе операције garbage collection-а?
- Purge - мотор уклања позадинске верзије, само примарна верзија је у бази.
- Expunge - и примарна верзија и све позадинске верзије су обрисане.
- Backout - уклања само примарну верзију (због rollback-а).
Обично purge можемо повезати са UPDATE операцијом, Expunge са DELETE, а Backout са rollback-ом INSERT или UPDATE операције. Много backout-а може значити да постоји проблем са управљањем трансакцијама у апликацији.
Коришћење меморије
Графикон «Memory usage» нам показује укупну меморију коју тренутно користе сви активни прикључци и врхунац додељене меморије за њих у прошлости.
Листа најбољих прикључака по коришћењу меморије нам показује највеће потрошаче меморије међу вашим прикључцима. Корисно је за проналажење апликација или софтверских модула са прекомерним коришћењем меморије.
Агрегирана статистика перформанси за изјаве
На другом табу можете пронаћи агрегирану статистику перформанси за изјаве. Ова статистика боље одражава тренутну ситуацију у бази - пошто мониторинг табеле прикупљају информације од почетка живота сваког објекта, изјаве које овде можете видети су оне које су се извршавале у тренутку када је снимак направљен.
Секвенцијална читања / Индексирана читања
У овој листи можемо видети најбоље изјаве које обављају много секвенцијалних читања из базе. Обично такве изјаве захтевају подешавање SQL-а - било кроз подешавање индекса, било кроз редизајн SQL упита.
Да бисте подесили упит, проверите његов план извршавања: обично је могуће побољшати брзину упита елиминисањем NATURAL-а у плановима са новим индексима или редизајном упита. Кликните на изјаву у овој листи да отворите таб «Statements», где можете пронаћи више детаља о изабраној изјави и прећи на повезану трансакцију или прикључак.
Читања страница / Уписи страница
Овај графикон и листа показују кратке информације о најбољим изјавама које обављају много читања - то значи да троше значајан IO и могу утицати на перформансе других упита. SQL изјаве са врхунским вредностима треба пажљиво проверити за оптималне перформансе.
Детаљи о упису за изјаве
На овом графикону можете видети шта су SQL изјаве за упис радиле у тренутку када је снимак мониторинг табела направљен и идентификовати UPDATE и DELETE операције које су направиле много промена у бази.
Детаљи о garbage collection-у за изјаве
На овом графикону можемо видети колико операција garbage collection-а је обављено од стране изјава које су се извршавале у тренутку снимка.
Коришћење меморије за изјаве
За разлику од агрегиране статистике коришћења меморије за прикључке, коришћење меморије изјава нам може показати листу тачних изјава које тренутно троше много меморије.
Прикључци
Трећи таб је «Attachments». Можете отворити овај таб директно да бисте прешли тамо кликом на један од записа у «Aggregated performance statistics».
Прикључци показују листу корисника повезаних на Firebird базу података, са многим корисним детаљима: USER и ROLE прикључка, време почетка и ID прикључка, да ли је garbage collection омогућен за прикључак, име удаљеног процеса који је успоставио прикључак и неколико акумулираних бројача перформанси за прикључак: број секвенцијалних читања [које је прикључак обавио од свог почетка], број индексираних читања, број insert-а, update-а и delete-а, као и records backout-а, purge-а и expunge-а.
Подразумевано, неке колоне прикључка су искључене, да би се приказале само најважније информације.
Наравно, сваки пут када кликнете на прикључак, можете прећи на трансакције које се извршавају унутар њега, а затим на изјаве. Постоји поље за потврду у горњем левом углу табова Transactions и Statements, које контролише понашање - када је означено, биће приказане само трансакције и изјаве означене изабраним ID-јем прикључка.
Трансакције
Таб «Transactions» приказује активне трансакције у тренутку када је снимак направљен. Ако је поље за потврду «Link to selected attachment» омогућено, биће приказане само трансакције за изабрани прикључак, у супротном су приказане све трансакције.
Једна од најважнијих карактеристика је животни век трансакција: пошто је Firebird дизајниран да ради са кратким write трансакцијама, важно је да их одржавате што краћим. FBMonLogger истиче трансакције са режимима изолације и read-write подешавањима које држе Oldest Active транскакцију и зато провоцирају да се прекомерне верзије записа не чисте. Ако видите такву трансакцију и она је почела пре неког времена, то значи да може бити одговорна за прекомерне верзије записа.
Сортирајте по колони «started at» и потражите старе трансакције, означене црвеном бојом: све writeable трансакције и read only snapshots држе Oldest Active Transaction и провоцирају задржавање прекомерних верзија записа. Идентификујте где су ове трансакције почеле (десни клик и изаберите «View parent attachment») и поправите свој код да бисте раније завршили ову трансакцију.
Izjave
Kartica «Izjave» prikazuje izjave koje su aktivne u trenutku snimka: ako treba da uhvatite sve izjave, treba koristiti FBPerfMon ili FBScanner (svi ovi alati su deo IBSurgeon Optimization Pack-a).
Ako je omogućena opcija «Poveži sa izabranom vezom», prikazaće se samo izjave za konkretnu vezu, u suprotnom će se u listi nalaziti sve aktivne izjave.
Neke izjave nemaju povezani ID transakcije (=0): ovi upiti su pripremljeni, ali nisu izvršeni.




