IBAnalyst
IBAnalyst је сада део HQbird Standard!
IBAnalyst је алат који омогућава администратору базе података да анализира детаљне статистике Firebird или InterBase базе података и потом идентификује могуће проблеме са перформансама базе, одржавањем и начином на који апликација комуницира са базом.
Документација
IBAnalyst графички приказује статистике Firebird (или InterBase) базе података на кориснички пријатан начин и истиче следеће проблеме:
- фрагментација табела и BLOB-ова,
- верзионисање записа,
- сакупљање смећа,
- ефикасност индекса, итд.
Штавише, IBAnalyst може аутоматски да даје интелигентне предлоге о побољшању перформанси базе података и одржавању базе.
IBAnalyst може да добије статистике са живих продукционих база података путем Services API-ја (препоручено), или да анализира текстуални излаз gstat -a -r … команди. Статистике из периода вршног оптерећења могу да пруже много информација о стварним проблемима са перформансама у продукционим базама.
Како IBAnalyst може помоћи у проналажењу проблема у вашој Firebird или InterBase бази података
Прођимо кроз кључне функције IBAnalyst-а. Када први пут погледате статистике ваше базе података у IBAnalyst-у, ствари могу бити нејасне, посебно ако IBAnalyst приказује много упозорења са црвеним и жутим ћелијама у приказима Summary, Tables и Index. Размотримо неколико примера стварних статистика.
Преглед резимеа
Страница резимеа приказује много информација, али највредније је стање трансакција ( молимо прочитајте опис могућих стања трансакција у IBAnalyst помоћи, доступно је кликом на F1 или у менију Help).
На овом снимку екрана можете видети да је нека трансакција активна дуго времена, “60% дневног просека”. IBAnalyst означава такво стање трансакције црвеном бојом, јер ова трансакција може спречити да сервер сматра акумулиране верзије смећем, и самим тим, да буду сакупљене као смеће. Ово је могући разлог успоравања: што више верзија постоји за неки запис, то ће више времена бити потребно да се прочита.
Да бисте пронашли ову дуготрајну трансакцију, можете користити MON$Logger модул FBScanner-а, или извршити директни упит над MON$ табелама. Затим, да бисте сазнали које табеле су погођене дуготрајним трансакцијама (табеле са много верзија записа), потребно је да одете на “Tables” приказ у IBAnalyst-у.
Приказ табела
У “Tables” приказу можете видети табеле и њихове важне параметре: број записа, број верзија записа, дужину записа, максимални број верзија, итд.
Можете сортирати овај приказ да бисте пронашли највеће табеле. Посебно нас занимају табеле са много верзија записа - много верзија записа ће продужити сакупљање смећа за погођене табеле. Обично је потребно променити алгоритме ажурирања и брисања да бисте се решили многих верзија записа.
Row Versions приказује укупан број верзија за одређену табелу, а ред Max Vers приказује максималне верзије које је достигао неки запис. На пример, ако погледате табелу NAB, постоји 11,9 милиона записа, укупан број верзија је 20932, али један запис има 176 верзија. Читање и парсирање таквог пакета са диска траје дуже, па је читање овог записа спорије од читања других.
Ова слика такође приказује много табела где су подаци обрисани. Али, због дуготрајне трансакције, сервер не може да обрише ове верзије, и оне су још увек на диску, још увек индексиране, и још увек их сервер чита приликом читања података.
Приказ индекса
Неке продукционе базе података могу имати индексе са само једном кључном вредношћу индексираном. Ово се може десити јер је база развијена “да буде проширена у будућности”, или је неко једноставно експериментисао са индексима током развоја или тестирања. Ове индексе можете видети као “Useless” у IBAnalyst-у:
SKIN04, SKIN05, SKOUT03, итд., изграђени на колони која има само једну вредност за све редове (милиони редова). Ови индекси су заиста бескорисни, јер
- оптимизатор може користити овај индекс ако наведете “where field = …”. Пошто поље садржи само једну вредност, коришћење индекса ће изазвати бескорисно читање страница индекса са диска у меморију, и трошити меморију (и време) када сервер припрема које редове да прикаже за тај упит.
- креирање индекса је део процеса враћања. Додатни индекси додају додатно време.
Наравно, то није све што можете сазнати о вашој бази података у IBAnalyst-у. Такође можете пронаћи
- просечан број трансакција дневно
- да ли је било враћања или изгубљених веза, и када
- колико су велике (у мегабајтима) свака табела и индекс
- табеле које имају записе испреплетане са blob-овима, па је самим тим читање само записа спорије
- празне табеле - једноставно заборављене, или празне у време када је статистика узета
- индексе са много дупликата кључева (можете размотрити дистрибуцију вредности колоне)
- индексе са дубином 4 и већом - можда треба повећати величину странице да бисте убрзали
Аутоматске препоруке
Ако сте збуњени читањем обојених ћелија упозорења, једноставно отворите “Reports\View recommendations” - све што је довољно за перформансе базе података је сакупљено овде. Слободно постављајте питања ( [email protected])


