HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az SQL szerver teljesítményének növelése



Cikkünkben főleg hardver és operációs rendszer oldalról megközelítve igyekszünk segítséget nyújtani egy SQL szerver teljesítményének minél optimálisabb kihasználásához. Az alábbiak főleg nagyobb adatbázisok és az SQL Server 7.0 illetve SQL 2000 Server használata mellett domborodnak ki, ha csak néhány MB-os adatállománnyal dolgozunk, sokkal kisebb a jelentősége a leírtaknak.

Hogy lehet mérni az SQL szerver teljesítményét?
Készítsünk egy mintaadatbázist egy táblával, néhány oszloppal és indexekkel, majd töltsük fel programból 10 000 sorral. Azért jó a 10 000-es szám, mert nem eredményez sem túl nagy, sem túl kicsi adatbázist - mérésre ideális. Természetesen bármilyen meglévő tábla megfelel, amelyik tartalmaz annyi adatot, hogy mérhető legyen a teljesítmény.
Az SQL szerver telepítése után jelentős mennyiségű számlálóobjektum adódik a rendszerhez. Használatuk a Felügyeleti eszközök > Teljesítmény (Administrative Tools > Performance) programjával lehetséges. Indítsuk el és kattintsunk a "Hozzáadás" ("Add") gombra (egy + az eszközsávban). A "Teljesítményobjektum" ("Performance object") legördülő menüben találjuk őket, nevük "SQLServer:"-el kezdődik (pl.: "SQLServer:Databases"). Ezután ki kell választanunk a mérendő számlálót (pl.: "Transaction/sec") és a jobboldali oszlopban az adatbázist, melyen a mérést elvégezzük.
Miután meghatároztuk a mérendő összetevőket, végezzünk el valamilyen általános adatbázis műveletet. Legjobb egy kifejezetten erre a célra készült program, mely például átmásolja az egyik tábla adatait egy másikba, de tökéletesen megfelel egy könyvelési, számlázó, készletnyilvántartó alkalmazás is. Lényeg, hogy többször el lehessen végezni ugyanazt a műveletet. Sorbarendező algoritmusok csak akkor jók, ha vissza lehet állítani az eredeti rendezetlen állapotot.
A műveletek alatt figyeljük és jegyezzük fel a teljesítményobjektum által szolgáltatott eredményeket.
Változtassunk egy beállításon, vagy cseréljük ki valamelyik hardvert (pl.: CPU) és végezzük el ismét a mérést. A két eredmény hányadosából megtudjuk, hogy gyorsabb vagy lassúbb lett az adatbázis kiszolgálás. A mérés annál pontosabb, minél többször végezzük el. Vigyázzunk az egyéb eseményekre, például az egyik mérés alatt beindul az indexelő szolgáltatás és indexeli a merevlemez tartalmát. Ilyenkor nyilván rosszabb lesz az eredmény a CPU, RAM és merevlemez más irányú elfoglaltságai miatt. A szolgáltatások kikapcsolásával igyekezzünk minden zavaró körülményt kiiktatni.
Asszinkron I/O teljesítmény
A merevlemez adatátviteli képességei kisebb és nagyobb adatbázisok használata mellett is jelentősen meghatározzák a kiszolgálás teljesítményét. Kisebb adatbázisoknál inkább a gyors elérés, míg nagyobbaknál a nagy átviteli teljesítmény számít. A nagyobb kapacitású és fordulatszámú eszközök általában gyorsabbak. Általánosságban igaznak mondható, hogy az újabb merevlemez gyorsabb, mint a néhány éves (a technika fejlődésének következménye). Az ultra DMA-t ismerők szintén gyorsabb adatmozgatásra képesek, mint a "sima" (E)IDE-sek.
Szoftveres RAID-el - amit a Windows 2000/XP támogat - valamelyest javíthatunk a teljesítményen, de az igazi megoldást a hardveres RAID jelenti. Utóbbit alaplapra integrált és külön bővítőkártya formában is beszerezhetjük.
Fontos, hogy asszinkron I/O átviteli támogatás a Windows 95/98 operációs rendszerekben nem létezik.
Operációs rendszerek
SQL szervert gyakorlatilag minden 32 bites Windows operációs rendszerre lehet telepíteni. Mivel a Windows 2000 és .NET szerverekben van a memória és CPU kezelés a háttérfolyamatokra optimalizálva, ezeken fogjuk a legjobb teljesítményt elérni. Használhatunk bármilyen jó hardvert, ha az operációs rendszer Windows 95, a teljesítmény nem tükrözi a hardver erősségét. Ez nem a Windows 95 ledegradálása, egyszerűen arról van szó, hogy nem erre való.
Jelentősebb méretű adatbázisok használatakor a kiszolgáló verziók közül is érdemes a Windows 2000 Advanced vagy Datacenter Server-t választani (vagy ezek .NET-es megfelelőjét), mert ezek teljesítményoptimalizálása nagy terhelésre van berendezkedve - a több processzor és nagyobb memóriakapacitás támogatásról már nem is beszélve.
Felesleges szolgáltatások leállítása
Ha egy gépet kifejezetten SQL szervernek használunk, felesleges az IIS-t (Internet Information Services) és egyéb az erőforrásokat folyamatosan használó, de egyébként kihasználatlan szolgáltatásokat működtetni. Kapcsoljuk ki őket, felér egy kisebb memória és CPU bővítéssel.
Nagy terhelésnél több SQL szerver
Ha az SQL szerver hardvere ép hogy kellő sebességgel tudja végrehajtani a kiszolgálást és tovább már nem bővíthető, el kell gondolkodni több SQL üzembe helyezésén és ezek között meg kell osztani az adatbázisokat. Egy kiszolgáló 1000 db adatbázissal nem fele olyan lassú, mint két kiszolgáló 500-500 db adatbázissal, hanem lassúbb. Egy vagy több további kiszolgáló üzembe helyezésével drámai sebességnövekedést lehet elérni.
Memória és Virtuális memória
Az SQL 2000 szerver maximálisan 2 GB virtuális memóriát tud kezelni. 3 GB-ra növelhető a szám, ha a /3BG kapcsolót elhelyezzük a boot.ini fájlban. Memóriából (RAM) minél több van, annál jobb, de nagyobb adatbázisoknál (vagy kisebb, de nagyobb számú adatbázisoknál) hamar elfogy, tekintettel arra, hogy az operációs rendszer is jócskán használ belőle. Ha megtelik a RAM, a merevlemezen lévő virtuális memória jut szerephez, ekkor értelemszerűen már jelentős lassulás lesz megfigyelhető. Ha eljutunk adatbázis méretben addig, hogy rendszeresen kell a merevlemezt használni átmeneti adattárolásra, akkor rendkívül fontossá válik a gyors merevlemez.
Hiába 2 GB a felső korlát, ha nincs ennyi szabad hely. Gondoskodjunk róla, hogy minimálisan rendelkezésre álljon 2, de jobb, ennél több (4-6) GB tárkapacitás.
SQL 2000 szerver esetében 1 GB RAM statisztikai mérések szerint átlagosan 25%-os kiszolgálási sebesség növekedést eredményez a 256 MB-hoz képest. Ez nem jelenti azt, hogy 2 GB 50%-os növekedéssel jár, mert exponenciális arányosság figyelhető meg. RAM-nál nem csak a mennyiség, hanem a sebesség is számít: 1 GB 333 MHz, DDR RAM (Pentium 4) bizonyos körülmények között, néhány százalékkal növelheti a sebességet 1 GB SDRAM-hoz képest.
Processzor
A magasabb órajelen működő, nagyobb belső cache-el rendelkező CPU-k vannak előnyben. Mivel az SQL szerverek képesek multiprocesszoros működésre, az ilyen rendszerek képességeit jól tudják hasznosítani, ha az operációs rendszertől is kapnak támogatást. Ismét csak azt kell mondanunk, hogy bár Windows 95/98-ra is telepíthető SQL szerver, egyszerűen nem tudjuk kihasználni a képességeit az operációs rendszer hiányosságai miatt. Többprocesszoros támogatás a Windows NT/2000/XP/.NET rendszerekben van, de nagyobb számú (kettőnél több) processzort a Windows 2000 és .NET szervercsalád tagjai támogatnak.
Egy statisztikai átlag szerint több mint 500 adatbázis mellett egy 8 processzoros rendszeren az SQL szerver 80%-kal nagyobb teljesítményt produkált, mint 1 processzorral.

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 488. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |