Az adatbázisbeli teljesítményproblémák kezelésének tervezése minden alkalmazás megvalósításnál kritikus komponens. Az adatbázis-adminisztrátornak kell kitalálni egy tervet, amellyel megbizonyosodhat arról, hogy az adatbázisbeli teljesítményproblémák elemzését és kezelését végrehajtották a cég minden adatbázis-alkalmazásához. A teljes teljesítménykezelési terv tartalmazza az eszközöket is, amelyek segítik az alkalmazásteljesítmény monitorozását, illetve az adatbázis és az SQL utasítások hangolását.
Követve a 80/20 szabályt az első lépés a legproblémásabb területeket azonosítani. Ez nem olyan könnyű, mint amilyennek látszik.
A 80/20 szabály, vagy más néven Pareto-elv egy régi alapelv, amely azt állítja, hogy a 80%-a az eredménynek 20% erőfeszítésből származik. Ez a szabály általában a legtöbb erőfeszítés alkalmazásánál igaz. Egy kis erőfeszítés meghozza a legtöbb jutalmat. Az adatbázis-teljesítmény hangolásakor az adatbázis-adminisztrátornak először arra a teljesítményproblémára kell koncentrálnia, amely a legnagyobb valószínűséggel a problémát okozza, mert a hangolási erőfeszítése itt térül meg a legjobban.
Az a legvalószínűbb, hogy az adatbázis-alkalmazás teljesítményproblémájában a bűnös egy nem megfelelő SQL utasítás vagy alkalmazáskód. Tapasztalatok azt mutatják, hogy az adatbázis teljesítményproblémáinak a 75-80%-a visszavezethető a szegényesen kódolt SQL utasításokra vagy alkalmazás logikára. Ez nem jelenti azt, hogy az alkalmazásokban szükségszerűen rosszak az SQL utasítások. Lehet egy alkalmazás 100%-osan hangolva volt a gyors adatbázis-elérésre, amikor az először a termelési környezetbe került, de idővel a teljesítménye csökkenhetett. Az ilyen teljesítménycsökkenést sok dolog okozhatja, mint például az adatbázis növekedése, új felhasználók, az üzleti követelmények változása, stb.
A gyenge teljesítményű SQL utasításokat sok probléma okozhatja, például:
teljes tábla átfuttatások, azaz a lekérdezésben szereplő táblát végig kell nézni
megfelelő index hiánya
az SQL utasítás nem használja a megfelelő indexet
elavult adatbázis-statisztika
a táblák összekapcsolása nem optimális sorrendben történik
alkalmazások összekapcsolása a hatékonyabb SQL utasítások összekapcsolása helyett
nem megfelelő összekapcsolási metódusok használata (nested loop, merge scan, stb.)
hatékony SQL utasítás beágyazva egy nem hatékony alkalmazáskódba, például ciklusba
nem hatékony allekérdezési formulák
szükségtelen rendezés (GROUP BY, ORDER BY, UNION)
Nagyon nehéz feladat megtalálni a legköltségesebb SQL utasításokat. A másik nehézséget okozó feladat azoknak az SQL utasításoknak a felfedezése, amelyek több száz vagy több ezer programban vannak elrejtve. A teljesítményre ugyancsak nagy hatással lehetnek az interaktív felhasználók, akik ad hoc lekérdezéseket generálnak.
Érdemes SQL monitort használni, hogy azonosítani lehessen az SQL utasítások futását a rendszerben. Ez az eszköz SQL utasításokat használ, amely segítségével vissza tudja vezeti az utasítást arra, hogy ki és melyik programból adta azt ki és milyen erőforrásokat használt fel. Ha azonosítottuk a leginkább erőforrás-igényes utasításokat, akkor hangolhatjuk a legköltségesebb utasításokat.
Nem mindig nyilvánvaló, hogy a szegényesen kódolt SQL utasítást hogyan lehet hangolni. Az SQL utasítások megfelelő kódolása és hangolása egy bonyolult feladat. Nem feladatunk foglalkozni vele.
Más tényezők is befolyásolhatják negatívan az adatbázis-teljesítményt. Ellenőrizzük időnként az adatbázis-kezelő rendszernek és a szerver operációs rendszerének a teljes teljesítményét. Néhány részlet, amelyet az ellenőrizésnek tartalmaznia kell:
memória allokáció (pufferek vagy gyorsítótárak az SQL utasításoknak, az adatoknak)
naplózási opciók (napló gyorsítótár mérete, naplóállományok)
input/output műveletek hatékonysága (táblák és indexek elkülönítése a lemezen, adatbázis-állományok mérete, töredezett és kiterjesztett állományok)
a szerveren a teljes alkalmazás- és adatbázis-munkaterhelés
adatbázisséma-definíciók