Výkonnost databázových aplikací (4/4)

1. 5. 1998

Sdílet

V předchozích dílech jsem se pokusil uvést čtenáře do problematiky výkonnosti a fyzických charakteristik SŘBD, k...


V předchozích dílech jsem se pokusil uvést čtenáře do
problematiky výkonnosti a fyzických charakteristik SŘBD, které s
výkonností souvisejí. Poslední část seriálu bych rád věnoval
poznámkám o možnostech vybraných komerčních databázových
produktů v oblasti sledování a ladění výkonnosti (vzhledem k
omezením týkajícím se rozsahu tohoto textu uvedu jen základní
informace). Z textu by mělo být zřejmé, že existují zcela
odlišné přístupy k ladění výkonnosti - od černé skříňky
(InterBase) přes rozšířené možnosti (SQLBase, MS SQL Server) až
po velmi dobře laditelné servery (Oracle). I z tohoto důvodu by
měla být oblast ladění a sledování výkonnosti velmi pečlivě
zvažována při výběru vhodného SŘBD.

Možnosti ladění SŘBD

Tuning (chcete-li ladění) SŘBD zahrnuje vylepšení instalace a
konfigurace databázového serveru, tak aby lépe spolupracoval s
operačním systémem. Cílem je dosáhnout optimálního využití
stroje a zdrojů operačního systému. Tuning samotné databáze
zahrnuje vylepšení implementace databázových objektů s cílem
usnadnit aplikacím přístup k těmto objektům. Úmyslně hovořím o
vylepšení a nikoliv optimalizaci; chci tím zdůraznit, že
výsledkem celého procesu ladění nebývá optimum, ale stav, který
za daných okolností nejlépe vyhovuje jednotlivým uživatelům, a
tedy se optimu blíží. Stále je však třeba mít na paměti, že
nejdůležitějším faktorem dosažení dobré výkonnosti je efektivní
návrh databáze a aplikace. Ani sebelepší ladění výkonnosti
nemůže kompenzovat špatný návrh. Uvádí se, že nejméně 85 procent
výkonnostních požadavků na databázové aplikace musí být
realizováno dobrým návrhem a implementací databáze a aplikace.

Borland InterBase

Databázový server InterBase umožňuje konfigurovat jen několik
aspektů: interval paměťových stránek určených serveru, úroveň
priority procesu serveru s ohledem na další procesy běžící na
stejném stroji, velikost databázové cache a velikost "klientské
mapy". Velikost klientské mapy definuje velikost komunikačního
bufferu používaného pro každého lokálního Interbase klienta.

Databáze InterBase se skládá z jediného souboru na každém disku
(přesněji adresáři), ve kterém jsou ukládány všechny databázové
objekty. Pro InterBase databázi lze určit velikost databázové
stránky, diskové lokace, do nichž se mají databázové soubory
ukládat, a velikost (ve stránkách) každého souboru.

U InterBase tabulek lze pouze definovat, zda jsou data ukládána
do interní InterBase tabulky nebo do externího souboru
operačního systému. Jedinou ladicí možností pro index InterBase
je nastavení, zda je ukládán ve vzestupném či sestupném pořadí.

MS SQL Server

MS SQL Server nabízí celou řadu ladicích parametrů serveru -
některé z nich lze měnit za běhu serveru, většina se však
uplatní až po novém nastartování serveru. Mezi konfigurovatelné
parametry patří:

- počet povolených spojení

- zda je povolena aktualizace

- velikost transaction log bufferu

- defaultní velikost databáze

- defaultní plnicí faktor tabulek a indexů

- maximální počet či procento stránkových zámků, které lze nastavit

- interval mezi zapsáním log bufferů do transaction log souborů

- počet asynchronních I/O operací požadovaných na operačním systému

- maximální počet threadů v serveru

- paměť alokovaná serveru

- předpokládaný počet cachovaných uložených procedur

- zda je třeba vytvořit pro rychlejší třídění v paměti pomocnou oblast

Tabulka či indexy mohou být umístěny do určitého segmentu.
Segment může zahrnovat více datových zařízení definovaných pro
databázi. Nelze specifikovat strukturu ukládání tabulek či
indexů, nicméně index může být clusterován se svoji tabulkou.
Tabulka může mít jen jediný clusterovaný index.

SQLBase

Rovněž SQLBase server firmy Centura umožňuje konfigurovat řadu
aspektů, včetně počtu stránek v databázi a třídicí cache. Lze
nastavit, zda se mají používat přímé I/O operace nebo
bufferované, má-li se log soubor prealokovat a zda se má
používat stará nebo nová optimalizační technika.

Pro SQLBase databázi lze specifikovat adresář databáze nebo,
alternativně, ukládací skupinu, v níž má být databáze alokována.
Dále lze určit počet stránek, o které má být databáze rozšířena,
pakliže se naplní, velikost log souboru, offset transakcí v log
souboru a velikost, o kterou se má log soubor rozšířit v případě
potřeby, počet log souborů, jež může zahrnovat aktivní
transakce, frekvence checkpointů a čas, během nějž se má operace
ukončit.

Pro každou tabulku lze určit procento volného prostoru
ponechaného na každé databázové stránce pro další aktualizace.
Tabulky jsou automaticky alokovány do všech ukládacích oblastí,
kde je databáze implementována. Pro každý index lze
specifikovat, zda bude mít B + tree /zde psáno B plus(horní index)
tree - vše dohromady/ strukturu (defaultně) nebo hashovanou
strukturu (nutno explicitně specifikovat).

Oracle

Oracle7 release 7.3 lze velmi dobře ladit počínaje jednotlivými
"instancemi" Oracle serveru až po jednotlivé tabulky a indexy.

Ladění instance Oracle Serveru zahrnuje nastavení využití
paměti, I/O operace, soupeření a řadu dalších faktorů jako
třídicí oblasti, volné seznamy a checkpointy.

Okno Oracle Tablespace Manageru



Pro každou tabulku lze určit procento volného prostoru
ponechaného pro budoucí aktualizace, minimální procento
použitého prostoru pro využití v každém datovém bloku, tzv.
tablespace, kde má být tabulka alokována, její ukládací
charakteristiky (její počáteční velikost a velikost přírůstku),
požadovaný stupeň paralelismu a množství cachování, které se má
použít. Pro každý index lze specifikovat procento volného
prostoru ponechaného pro budoucí aktualizace, tablespace, kde má
být alokován, jeho ukládací charakteristiky a požadovaný stupeň
paralelismu. Příslušné tabulky mohou být uloženy společně s
indexem jako cluster v pre-joinovaném tvaru.

Lze volit, zda musí Oracle optimalizovat dotazy s použitím
starého optimalizéru založeného na pravidlech, či s využitím
novějšího optimalizéru založeného na nákladech. Ke každému
dotazu lze rovněž přidat tzv. "hints" (neboli optimalizační
návrhy).

Nástroje pro sledování výkonnosti (monitoring)

Monitoring není jen nástrojem řízení výkonnosti, je to rovněž
dobrý preventivní mechanismus bránící vzniku řady problémů. Pro
monitorování databázové výkonnosti lze využít řadu nástrojů,
které lze v zásadě klasifikovat následujícím způsobem:

- proprietární nástroje: nástroje poskytované spolu se SŘBD softwarem pro monitorování její výkonnosti

- nástroje třetí strany: nástroje poskytované třetí stranou, konzultanty a specialisty pro účely monitorování SŘBD

- proprietární nástroje operačního systému: nástroje poskytované
hostujícím operačním systémem pro monitorování vlastní
výkonnosti; z poskytovaných dat lze vybrat řadu zajímavých
statistik o výkonnosti SŘBD

- nástroje operačního systému od třetí strany: nástroje obdobné
proprietárním nástrojům operačního systému poskytované třetí
stranou, konzultanty a specialisty

Dále jsou uváděny jen proprietární monitorovací nástroje,
poskytované spolu s několika populárními SŘBD.

Borland InterBase

InterBase Server Manager zobrazuje statistiky databázového
serveru a statistiky zamykacího manageru právě připojené
databáze. Všechny tyto statistiky se zobrazují jako log soubory
v běžném "notepad-like" okně.

InterBase Interactive SQL Interface má řadu užitečných možností
(setů) pro sledování výkonnosti. Nastavení "set stats on"
zobrazuje využití paměti serverem, čas potřebný pro realizaci
dotazu, využití bufferů a počet fyzických diskových I/O operací.
Nastavení "set plan on" zobrazuje způsob, jakým jsou dotazy
fyzicky zpracovávány, zejména pak využití indexů.

Microsoft SQL Server

Microsoft SQL Server 6.0 je úzce integrován s operačním systémem
Windows NT. Tato integrace zvyšuje rozsah, v jakém lze Windows
NT Performance Monitor využít pro monitorování komponent
instalace SQL Serveru.

Pro monitorování je možné využít také SQL Enterprise Manager a
řídit tak libovolný počet instalací SQL Serveru na síti. Kromě
jiného SQL Enterprise Manager může sledovat velikost libovolné
databáze či zařízení na síti. Může rovněž plánovat monitorovací,
administrátorské a ladicí operace, a to s využitím SQL
Executive.

Vývojáři a DBA mohou dále využívat nástroj pro analýzu dotazu
dostupný v ISQL/W, což je GUI interaktivní SQL prostředí
poskytované jako součást klientské instalace SQL Serveru. Tento
nástroj umožňuje uživatelům testovat syntaxi, sémantiku a
výkonnost SQL dotazů. Tento test se realizuje aktivací voleb
Query Plan a Statistics I/O před spuštěním dotazu.

SQLBase

Firma Centura poskytuje pro účely sledování výkonnosti
konzistentní, snadno použitelný nástroj s GUI nazývaný
SQLConsole. Pomocí tohoto nástroje lze sledovat SQLBase server,
různé SQLBase databáze, otevřené kurzory, stav zamykacího
systému a parametry serveru, stejně jako různé alarmy a
události. Pro SQLBase server lze zobrazit informace o aktivitách
a procesech. Jednotlivé informace je možno automaticky obnovovat
ve stanovený interval, nebo je lze obnovovat ručně.

Okno SQL Console firmy Centura



SQLBase má rovněž celou řadu tzv. "environment options", které
lze aktivovat nebo deaktivovat. Některé z nich lze využít pro
sledování výkonnosti: např. volbu planonly lze aktivovat s cílem
zobrazovat prováděcí strategie následujících SQL příkazů. Tyto
informace se zobrazují v tabelární formě.

Oracle

Oracle 7.2 poskytuje tři utility pro monitorování výkonnosti:
dynamické view, SQL trace nástroj a explain plan command. Oracle
7.2 on Windows NT je úzce integrován s Windows NT Performance
Managerem.

Dynamická view je sada systémových tabulek spravovaných Oracle
serverem. Tyto tabulky jsou neustále aktualizovány. Jejich obsah
se primárně vztahuje k výkonnosti.

Zobrazují například informace o databázových objektech, které
jsou právě zamknuté, a spojeních, která k nim přistupují, seznam
všech datových souborů tvořících databázi a seznam všech
databázových objektů cachovaných v library cache.

SQL trace nástroj generuje výkonnostní statistiky o SQL
příkazech prováděných serverem. Tyto statistiky zahrnují
informace o parsování, spouštění, počtech operacích fetch,
spotřebovaném CPU času a celkové době zpracování, fyzické a
logické operace čtení, počet zpracovaných řádek.

Explain plan příkaz zobrazuje prováděcí plán zvolený
optimalizérem pro realizaci SQL příkazů.