Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.

November 8, 2006 / by Zsolt Soczó

SQL Server diszk kezelés

Az sql listára írtam az alábbi szösszenetet, hasznos lehet másnak is, beeditálom hát ide is.

Ha a guideline-okat nézzük sok vinyó kellene már egy adatbázishoz is (külön, a windowsnak, page filenak, adatnak, lognak, stb.), pedig sok cég 5-10 adatbázist is tart egy sql serveren.

Az a fajta bűvészkedés, amit régebbi doksikban lehet olvasni, szerintem egyszerűen nem működik, mert nincs elég hdd hozzá. Ha van, persze akkor ok.

Ami legnevetségesebb nekem, amikor 10 log file-t ráraknak egy hdd-re, vagy egy mirrorrra. Ha elég aktívak az adatbázisok, össze-vissza reszel a fej a log hddn, pont a szekvenciális írásból származó teljesítmény előny veszik el.

Sokan nem tudják miért sokkal gyorsabb a szekvenciális log írás (ha nem rontjuk el, mint az előbbi példában.)

Tegyük fel a hdd átviteli sebessége 100MByte/s. Azért ez elég gyors hdd. Legyen az átlagos elérési idő 5 ms.

Ha az sql server az adatokat mondjuk 8 kByte-os blokkokban olvassa, akkor ugye másodpercenként 200 x 8 = 1.6Mbyte-ot tud olvasni (a 200 az 5 ms reciproka).

Azaz a szuper 30000-en pörgő drága hdd még 2%-ig sincs kihasználva! Mit lehet tenni? Növelni kell a blokkok méretét. De az sajnos az sql server magánügye, viszont szerencsére ő próbálja elég nagy harapásokban olvasni az adatokat, így azért nem annyira rossz a helyzet, de ha belegondolunk, még 128k-s blokkoknál is csak 128×200 25 Mbyte/seccel olvas, azaz még a vinyó negyedét se használja ki.

Ez van tehát az adat vinyókon. Mit lehet tenni? Több vinyó kell, egymástól függetlenül mozgó fejekkel (tehát nem partíciók, hanem hddk). Ezeken vagy szét kell osztani az adatbázist file groupokkal, vagy valamilyen értelmes raidbe szervezve egyben látni és használni őket (1+0, pl.). Ebben az esetben ugye a raid kártya osztja el a terhelést.

A log esetén teljesen más a helyzet, ha csak egy log file vagy egy hddn (vagy egy mirroron, kettőt egyszerre írni ugyanolyan gyors, mint egyet), akkor elvileg ki lehet használni mind a 100 Mbyte/secet.

Szóval realisztikus esetben, pl. 4 vinyó és 5 adatbázis esetén nem marad más, mint raid 1+0-ba bekötni őket, és az egész bagázst, operendszert, page filet, data filokat, logokat, mident erre a raidre rakni.

Szerintem egyszerűen nincs elég vinyó szétbűvészkeni a kérdést.

Ha persze egy nagy teljesítményű OLTP adatbázisról van szó, dedikált géppel, akkor érdemes filózni a beosztáson. A logot akkor mindenképpen külön kell venni, a többi szerintem nem kritikus, ha egy bagázsba kerül.

Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.