Windows - Adatbázisok teljesítményének optimalizálása

Adatbázis optimalizálás 1. rész

Az adatbázisok teljesítmény növelésének a célja a lekérdezések válaszidejének csökkentése. Ahhoz, hogy minél többet tudjunk kihozni az SQL szerverből, számos lehetőség van az optimalizálásra. Első cikkünkben a társkiszolgálós adatbázisrendszerek működésével ismerkedünk meg.
A teljesítmény hangolásának célja a lekérdezések válaszidejének csökkentése, minimalizálása, és az adatbázisszerver áteresztőképességének maximalizálása azáltal, hogy csökkentjük a hálózati terhelést, lemez I/O műveleteket, és a processzoridőt. Ez a cél elérhető azáltal, hogy az alkalmazás elvárásait, az adat logikai és fizikai struktúráját, és váltott használatát az ellentétes adatbázis műveleteknek – pl.: online tranzakció feldolgozás (OLTP) a döntéstámogatással szemben - megértjük.
Teljesítménybeli kérdéseket figyelembe kell venni a fejlesztési ciklus alatt, nem pedig a végén, amikor a rendszer már kivitelezésre került. Nagyon sok teljesítménybeli eredmény, ami jelentős javulást eredményez, elérhető a kezdetektől való gondos tervezéssel. Hogy a leghatékonyabban optimalizáljuk az SQL szerver 2000 teljesítményét, fel kell ismernünk azokat a területeket, amelyek a legnagyobb teljesítménynövekedéssel járnak majd a leginkább változatos környezeteken és e területek elemzésén keresztül.
Habár egyéb rendszer szintű teljesítménybeli tényezők, mint memória, hardver és hasonlók természetesen vizsgálatot érdemelnek, a tapasztalat azt mutatja, hogy a teljesítménybeli előny ezekről a területekről gyakran növekvő. Általában az SQL szerver automatikusan kezeli az elérhető hardver erőforrásokat, lecsökkentve a kézi rendszerhangolás szükségességét.
Az alábbi táblázat mutatja, hogy milyen területekre terjed ki az optimalizálás lehetősége:
Téma Leírás
Társ adatbázisszerverek tervezése Bemutatja, hogy hogyan valósítsuk meg a teljesítmény magas szintjét, ami például nagyméretű weboldalak kiszolgálásához szükséges, kiegyensúlyozva a feldolgozást több kiszolgáló között.
Adatbázis tervezés Leírja, hogy hogyan tudunk adatbázis tervezéssel a legeredményesebb módon általános teljesítménynövekedést elérni. Az adatbázis terv tartalmazza a logikai sémát, mint pl.: táblák, egyéb megszorítások, és a fizikai sajátosságokat, mint a lemez rendszert, objektum elhelyezést, és indexeket.
Lekérdezés hangolás Leírja, hogy lekérdezések hibátlan tervezésével hogyan tudunk jelentős teljesítménynövekedést elérni.
Alkalmazástervezés Leírja, hogy a felhasználói alkalmazás tervezésével hogyan lehet a legnagyobb teljesítménynövekedést elérni. Az alkalmazás tervezés tartalmazza a tranzakciós korlátokat, zárolásokat, és batch használatot.
Segédeszközök teljesítményének optimalizálása Leírja, hogy milyen egyéb lehetőségek érhetők el az SQL szerver által kínált eszközökkel, és milyen teljesítménynövekedést lehet ezekkel elérni, valamint ezen eszközök és az alkalmazásunk egyidejű futtatásának milyen hatásai vannak.
Szerver teljesítményoptimalizálás Leírja, hogy milyen beállításokkal lehet az operációs rendszerben és az SQL szerverben növelni a teljesítményt.
Társ adatbázis kiszolgálók tervezése
Hogy elérjük a teljesítmény magasabb szintjét, amelyet a legnagyobb webkiszolgálók igényelnek, egy többsoros rendszer tipikusan kiegyenlítheti a feldolgozással járó terhelést több szerverre. Az SQL szerver 2000 kiosztja a feldolgozást egy szerver csoportra vízszintesen felosztva az SQL szerver adatokat. Ezeket a szervereket függetlenül kezeljük, de együttműködnek az alkalmazások adatbázis kéréseinek feldolgozásában. Ezt az együttműködést társszervernek, vagy szövetséges szervereknek hívjuk.
Egy társ adatbázissor csak akkor képes extrém kiemelkedő teljesítményt nyújtani, ha az alkalmazás minden utasítását annak a tagkiszolgálónak küldi, amely a legtöbb adattal rendelkezik annak végrehajtásához. Ezt az SQL utasítások adatszükségletük szerinti osztályozásának nevezzük. Ez az osztályozás nem egy egyedi szükséglet a társszervereknél. Ez szintén szükséges a fürtözött rendszereknél is.
A társszerverek esetében ugyanazt a képet kapja az alkalmazás, mint egy egyedülálló szerver esetében, így belső különbségek vannak, amelyek az adatbázis szolgáltatások sorát leírják.
Egyedüli kiszolgáló elrendezés Társkiszolgálós elrendezés
Egy SQL szerver példány a kiszolgálón Egy SQL szerver példány minden tagkiszolgálón
A termék adatok egy adatbázisban tárolódnak Minden tagkiszolgálónak van egy tag adatbázisa. Az adatok elosztottan tárolódnak a tag adatbázisokban.
Minden tábla tipikusan egy egyszeri egyed Az eredeti adatbázis vízszintesen felosztásra kerül tagtáblákba. Minden tag adatbázisban szerepel egy tag tábla, és a felosztott, elkülönített nézetek szokásosan úgy tűnnek, mintha teljes másolat lenne az eredeti táblából minden tagkiszolgálón.
Minden kapcsolat az egyedüli szerverhez épül fel, és minden SQL utasítást ugyanaz az SQL példány dolgoz fel. Az alkalmazásrétegnek képesnek kell lennie összerendezni az SQL utasításokat azon a tagkiszolgálón, ami a legtöbb adatot tartalmazza az utasításhoz.
Miként a cél egy társkiszolgálós rendszer tervezése egy teljes munkafolyamat kezelésére, ezt megtehetjük, ha elosztottan külön kezelt nézeteket tervezünk, amelyek elterjesztik az adatokat a különféle kiszolgálók között.

Adatbázis optimalizálás cikksorozat