C# - A sysfiles rendszertábla

MS SQL Server rendszertáblái 5. rész

forráskód letöltése
A cikksorozatnak ebben a számában a sysfiles rendszertáblával foglalkozunk részletesebben, mely szintén minden létrejövő adatbázisban megtalálható. A cikkben bemutatásra kerül a táblában található valamennyi oszlop, valamint egy példán keresztül ismertetjük, hogy milyen adatok tárolására használja a rendszer a táblát, és az adatbázis felhasználó által létrehozott tábláiban végzett műveletek hogyan befolyásolják a rendszertábla adatait.
A példához szükséges a SampleDatabase05 adatbázis, melyet a mellékelt SampleDatabase05.sql lefuttatásával hozhatunk létre. A SampleDatabase05.sql script 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A sysfiles rendszertábla a felhasználó által létrehozott adatbázisok adatait tartalmazó, általában a „%winroot%/Program Files/Microsoft SQL Server/Mssql/ Data” elérési útvonalon megtalálható, adat- és naplófájlokkal kapcsolatos bejegyzéseket tartalmazza. A tábla egy virtuális rendszertábla.
A sysfiles rendszertáblával kapcsolatban meg kell említeni, hogy az adatbázisok fájljaival kapcsolatos adatok között található olyan információ, mely szorosan kapcsolódik egy másik rendszertáblához, a sysfilegroups táblához. Az adat- és naplófájlok ugyanis alapértelmezett módon egy kiindulási, elsődleges fájlcsoporthoz (PRIMARY) tartoznak, azonban deklarálhatók más fájlcsoportok is. Az ezzel kapcsolatos információkat, vagyis a fájlcsoport azonosítóját a „groupid” oszlopban tárolja a sysfiles rendszertábla az adott fájlokkal kapcsolatban. Nézzük először végig a sysfilegroups tábla oszlopait:
Sorszám Oszlopnév Típus Leírás
1 groupid smallint Fájlcsoport azonosító, mely a sysfiles táblában azonosítja a csoportot. Az adat minden adatbázisban egyedi.
2 allocpolicy smallint Foglalt.
3 status int Lehetséges értékei: 0x8=READONLY, 0x10=DEFAULT.
4 groupname sysname A fájlcsoport neve.
Most vizsgáljuk meg a sysfiles rendszertábla oszlopait:
Sorszám Oszlopnév Típus Leírás
1 fileid smallint Fájlazonosító, mely egyedi minden adatbázisban.
2 groupid smallint Fájlcsoport azonosító.
3 size int Fájl mérete (8 kB-os lapokból).
4 maxsize int Maximális fájlméret (8 kB-os lapokból). Értékei: 0-fájl mérete nem növekedhet, 1-fájl mérete addig növekedhet, míg a lemez meg nem telik.
5 growth int Az adatbázis növekedésének mértéke. A 0 érték azt jelzi, hogy a méretnövekedés nem megengedett. Megadható lapméretben, vagy a növekedés százalékában; a status oszlop értékétől függően.
6 status int Bitminta tartalmazza a növekedés jellemzőit. Értékei: 0x1–alapértelmezett eszköz, 0x2-lemezes fájl, 0x40-naplófájl, 0x80-módosítva az utolsó mentés óta, 0x4000-implicit módon készült a CREATE DATABASE utasítás által, 0x8000- az adatbázis elkészítésekor keletkezett, 0x10000-növekedés százalékosa történik, nem laponként.
7 perf int Foglalt.
8 name nchar(128) Fájl logikai neve.
9 filename nchar(260) Fájl fizikai neve elérési úttal.
A mellékelt alkalmazásban arra láthatunk egy példát, hogy miként növekedhet az adat- és naplófájlok mérete adatok bevitelekor. A SampleDatabase05.sql parancsállomány lefuttatásakor egy Table1 nevű üres tábla kerül az adatbázisba, valamint egy DeleteRows nevű tárolt eljárás.
Az alkalmazás Form-ján két vizuális kontrolban jelennek meg a sysfiles rendszertábla és a Table1 tábla adatai, adatbevitel előtt és után. A „Rekordok beszúrása” feliratú gombbal a bevitel, a „Rekordok törlése” feliratú gombbal a törlés művelete indítható el. A beviteli műveletben 20000 rekordot szúrunk be a táblába, a művelet aktuális állapota követhető a ProgressBar kontrollal. A beviteli művelet hosszadalmas, a számítógép sebességétől függően pecekig is eltarthat.
A rekordok beszúrásával mintegy 50 lapnyi (400 kB) méretnövekedés figyelhető meg az adatfájlban és a naplófájlban. A beviteli művelet indításakor látható adatok a sysfiles táblában:
1 2 3 4 5 6 7 8 9
1 1 128 -1 10 1081346 0 SampleDatabase05 D:\Program Files\Microsoft SQL Server\MSSQL\data\SampleDatabase05_Data.MDF
2 0 128 -1 10 1081410 0 SampleDatabase05_Log D:\Program Files\Microsoft SQL Server\MSSQL\data\SampleDatabase05_Log.LDF
Miután a rekordokat beszúrtuk, a következőre változtak az adatok:
1 2 3 4 5 6 7 8 9
1 1 176 -1 10 1081346 0 SampleDatabase05 D:\Program Files\Microsoft SQL Server\MSSQL\data\SampleDatabase05_Data.MDF
2 0 128 -1 10 1081410 0 SampleDatabase05_Log D:\Program Files\Microsoft SQL Server\MSSQL\data\SampleDatabase05_Log.LDF
A törlés után megfigyelhető, hogy az adatfájlok méretadatai nem változnak, vagyis az adatmennyiség csökkenésekor nem csökkenti a rendszer az adatállományok méretét. A naplóállomány viszont 952 lapnyi méretre duzzad.

MS SQL Server rendszertáblái cikksorozat