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ů.