gstat интерфейс

Разгледани са проблемите, необходими на разработчика за създаване на приложения клиент-сървър, използвайки СУБД Firebird, която е разработката на СУБД Borland Interbase 6. Предоставен е преглед на концепциите и моделите на архитектурата клиент/сървър, както и практически препоръки за работа с клиентските библиотеки на Firebird. Характеристиките на типовете данни SQL, Data Manipulation Language (DML), както и синтаксисът и операторите на Data Definition Language (DDL) са описани подробно. Обръща се голямо внимание на описанието на транзакциите и съветите за тяхното използване при разработването на приложения. Той описва програмиране от страна на клиента и сървъра, писане на тригери и съхранени процедури, създаване и използване на събития в базата данни, обработка на грешки в кода на сървъра и много повече. Материалът е придружен с множество примери, съвети и практически препоръки.
За разработчици на бази данни
Книга: РЪКОВОДСТВО ЗА РАЗРАБОТЧИЧ НА БАЗА ДАННИ Firebird
gstat интерфейс
Секции на тази страница:
За разлика от някои други инструменти на командния ред, gstat няма собствен интерфейс на командния ред. Всяка заявка се състои от извикване на gstat с ключове.
gstat [превключватели] име на база данни
където име на база данни е пълният път до базата данни.
Графични инструменти
gstat не е удобен за потребителя инструмент. Някои графични инструменти (като IBAnalyst) очевидно изпълняват същата gstat задача за показване на резултати с помощта на API за услуги. Формите на екрана са взети от помощната програма с отворен код IBOConsole[60].
Превключватели
В табл. 18.1 описва превключвателите gstat.
Таблица 18.1. gstat превключватели
Проверкипотребителско име преди достъп до базата данни
Проверява паролата преди достъп до базата данни
Показва информация за заглавната страница, след което излиза
Показва информация за заглавката и страницата на журнала, след което излиза
Извлича и показва статистически данни за индексите на бази данни
Извлича и показва статистически данни за потребителските таблици на базата данни
Това е по подразбиране, освен ако не сте поискали -index, -data или -all. Извлича и показва статистики по -index и -data
Като -всички, но допълнително включва статистика за системните таблици
Намира и показва статистически данни за размера и версиите на записите (включително всички версии)
Използва се във връзка с -данни. Ограничава показаните данни до таблици от списъка с таблици
Отпечатва версията на помощната програма gstat
ЗАБЕЛЕЖКА. Тъй като gstat извършва собствен анализ на ниво файл, той не се извършва в контекста на транзакция. Следователно статистиката на индекса също включва информация за онези индекси, които се използват в чакащи транзакции. Например, няма да има предупреждение, ако отчетът показва някои дублиращи се записи в индекса на първичния ключ.
-индексен превключвател
gstat -i[индекс] база данни
Този ключ извлича и показва статистически данни за индексите в базата данни: средна дължина на ключа (в байтове), общ брой дубликати и максимален брой дубликати на един ключ. Включете превключвателя -s[система], ако искате информация за системните индекси.
За съжаление няма начин да получите статистика за единичен индекс, но можете да ограничите резултата до една таблица, като използвате ключа -t, последван от името на таблицата. Можете да пишете разделениинтервали списък с имена на таблици, за да получите резултати за повече от една таблица. Ако имената на вашите таблици са чувствителни към главни и малки букви - бяха декларирани като идентификатори в кавички - аргументите към превключвателя -t трябва да бъдат написани с правилен регистър, но не трябва да бъдат в кавички. За таблици с интервали в имената си gstat изобщо не работи.
Можете да добавите превключвателя -system, за да включите информация за системните индекси в отчета.
За да стартирате помощната програма срещу базата данни на служителите и да прехвърлите нейния изход към текстов файл с име gstat.index.txt, изпълнете следното:
* в тип POSIX (всички на един ред):
./gstat -index /opt/firebird/examples/employee.fdb -t CUSTOMER -user SYSDBA -парола masterkey
* в тип Win32 (всички на един ред):
"c:Програмни файловеFirebirdFirebird_1_5examplesemployee.fdb" -t КЛИЕНТ
-потребител SYSDBA -главен ключ на парола
ЗАБЕЛЕЖКА. В Windows се изискват двойни кавички за пътя на базата данни, ако пътят ви съдържа интервали.
На фиг. Фигура 18.3 показва как се показват данните от индексната страница.

Ориз. 18.3. Пример за показване на данни на индексната страница
Какво означава всичко това
Първо се появява обобщената информация за индекса. В табл. 18.2 обяснява записите ред по ред.
Тъй като помощната програма gstat прави своя анализ на ниво файл, тя не използва концепцията за транзакция. Следователно статистиката на индекса също включва информация за онези индекси, които се използват в чакащи транзакции.
Таблица 18.2. Изход от gstat -i[индекс]
Броят нива в дървовидната страница на индекса. Ако дълбочината на дървото на индексната страница е по-голяма от 3, тогава достъпът до записите през индекса няма да бъде максималенефективен. За да намалите дълбочината на дървото на индексната страница, увеличете размера на страницата. Ако увеличаването на размера на страницата не намали дълбочината, увеличете размера на страницата отново
Броят на страниците от най-ниско ниво (лист) в дървото на индекса. Това са страници, които съдържат указатели към записи. Страниците от високо ниво съдържат непреки връзки
Общият брой записи, индексирани в дървото. Трябва да е равен на броя на индексираните редове в дървото, въпреки че отчетът на gstat може да включва възли, които са премахнати, но не са почистени от събирането на боклук. Може също да включва множество записи за записи, чийто индексен ключ е променен
Средна дължина на данните
Средна дължина на всеки ключ в байтове. Обикновено много по-малко от дължината на декларирания ключ, тъй като се извършва компресиране на суфикс и префикс
Общ брой дублиращи се индексни редове
Броят на дублиращите се възли във „веригата“, които имат най-много дубликати. Винаги ще бъде нула за уникални индекси. Ако числото е голямо в сравнение с числото в Total dup, това е знак за лоша селективност
Това е стълбовидна диаграма с пет 20-процентни ленти, всяка от които показва броя на индексните страници, чийто среден процент на запълване попада в посочения диапазон. Процентът на покритие се определя от съотношението на пространството на всяка страница, съдържаща данни. Сумата от тези числа дава общия брой страници, съдържащи индексни данни.
Дълбочина на индекса
Индексът е дървовидна структура със страници на едно ниво, свързващи към страници на друго ниво и т.н. чак до страници, сочещи към редове с данни. Колкото по-голяма е дълбочината, толкова повече са индиректните нива. Линията Leaf bucket описва индексните страници на най-нискатанива, които сочат към отделни редове.
На фиг. 18.4 Основната страница на индекса (създадена при създаването на базата данни) съхранява индекс за всеки индекс и указател към друга индексна страница, която съдържа индексите на този индекс. Такава страница последователно сочи към страници, съдържащи данни - действителните данни за възел - или директно (дълбочината е 1), или косвено (добавяйки едно ниво за всяко косвено ниво).
Ориз. 18.4. Дълбочина на индекса
Два фактора влияят на дълбочината: размерите на страницата и ключовете. Ако дълбочината е по-голяма от 3 и размерът на страницата е по-малък от 8192, тогава увеличаването на размера на страницата до 8192 или 16386 трябва да намали броя на индиректните нива и да увеличи скоростта.
СЪВЕТ. Можете да изчислите приблизителния размер (в страници) на максималната двойна верига въз основа на статистиката. За да получите броя на възлите на страница, разделете възлите на броя на листата (листови кофи). Умножаването на резултата по максималния брой дублирани възли (макс. дублиране) дава приблизителния брой страници.
Анализ на някои статистики
Следните извадки са резултат от gstat -index за база данни с ниска производителност.
Първият поддържан индекс, създаден автоматично на външен ключ:
Индекс RDB$FOREIGNl4 (3)
Дълбочина: 2, листови кофи: 109, възли: 73373
Средна дължина на данните: 0,00, общо дублиране: 73372, максимално дублиране: 32351
Дълбочина на реда: 2, кофи с листа: 109, възли: 73373 Казва ни, че най-долното ниво на индекса има 109 листа (страници), броят на възлите е 73 373. Това може да не е общият брой редове на таблицата. От една страна, помощната програма gstat не знае нищо за транзакциите, така че не може да отчете далипроверени или непроверени страници. От друга страна, колоните могат да имат NULL стойности и няма да бъдат включени в статистиката.
Най-долното ниво на индекса - където се съхраняват листовите възли - има само 109 страници. Изглежда подозрително да има малък брой страници за толкова голям брой редове. Следващата статистика обяснява защо.
В реда Средна дължина на данните: 0,00, общо дублиране: 73372, максимално дублиране: 32351, максималното дублирано число показва дължината на най-дългата верига от дубликати, преброени за почти половината от възлите. Общото число на дублирането казва, че всеки възел с изключение на един е дубликат.
Това е най-класическият случай на дизайнер, който прилага външен ключ, без да вземе предвид неговото разпространение. Това вероятно е колона в стил BOOLEAN или справочна таблица (търсене) с много малко стойности или почти една стойност.
Пример за това е приложение за избирателни списъци, което съхранява колоната за държавата на пребиваване. Имаше около 3 милиона гласоподаватели, а регистрацията беше задължителна. Базата данни имаше таблица COUNTRY, съдържаща над 300 държави, въведени в CCCIT кодове на държави. Той присъстваше в почти всяка таблица на база данни като външен ключ. Проблемът беше, че почти всички избиратели живееха в една и съща държава.
Средната дължина на данните е средната дължина на съхранения ключ. Тук не можете да направите много с декларираната дължина. Средна дължина нула просто означава, че няма останала "храна" в процеса на компресиране за изчисляване на средната стойност.
Линията на разпределение Fill показва, че всичките 109 страници са в диапазона 80-99 процента, което е добро покритие. Разпределението на подложките е пропорцията на пространството на всяка страница,използвани за данни и указатели. Осемдесет до деветдесет процента е добре. По-малкото разпределение на подложките е много силно напомняне, че трябва да изградите отново индекса.
Следващият пример показва генерираната от системата статистика на индекса за първичен ключ на същата таблица:
Индекс RDB$PRIMARY10 (0)
Дълбочина: 3, листови кофи: 298, възли: 73373
Средна дължина на данните: 10,00, общо дублиране: 0, максимално дублиране: 0
Дължина на ключа 10 означава, че е извършена известна компресия. Това е нормално и добре. Съвсем нормално е един ред да е недостатъчно запълнен: броят на възлите не съвпада точно със страниците.
Тази база данни има малка таблица, която съхранява временни данни за целите на валидирането. Периодично се почиства и пълни отново. За външния ключ на тази таблица се генерира следната статистика: