Van elég szabad helyünk a következő betöltés futtatásához?
A minap olvasgattam kimball-ék "The Microsoft Data Warehouse toolkit" című könyvének "managing disk space" című fejezetét, és egy érdekes - az operációs rendszer "Rendszermonitor" programját használó - módszert találtam arra, hogy hogyan monitorozhatjuk a rendelkezésre álló szabad lemezterület nagyságát.
Miért fontos monitorozni a rendelkezésre álló szabad merevlemez kapacitást?
Az adattárház vagy az OLAP rendszer napról napra egyre több helyet foglal a merevlemezen. Mérete folyamatosan nő és egyszer csak el fogja foglalni az egész lemezt. Ha ez bekövetkezik, nem tudjuk tovább tölteni adattárház vagy OLAP rendszerünket, a felhasználók, elemzők nem látják a legfrissebb kimutatásokat... szóval egy egyszerű hiba katasztrofális következményekhez vezethet.
Rendszermonitor (System monitor, PerfMon)
A legegyszerűbb módszert a rendelkezésre álló lemezterület monitorozására a rendszermonitor biztosítja. A Rendszermonitor az operációs rendszer része, és legfőbb feladata a rendszer folyamatainak (memória, processzor, merevlemez használat, ...) monitorozása. (A Rendszermonitor elindítható a Start menü, beállítások (control panel), Felügyeleti eszközök (Administrative tools), teljesítmény (performance), teljesítménynaplók és riasztások (Performance logs and alerts), Riasztások (Alerts), új riasztás. menüpontokon keresztül)
A rendszermonitor megfelelő beállításával elérhető, hogy figyelmeztessen, ha a rendelkezésre álló szabad lemezterület egy kritikus méret (MB) alá süllyedt. Például a következő beállítás esetén az oprendszer riaszt, ha 5000 MB alá csökken a szabad lemezterület:
Az action (Művelet) fülön beállíthatjuk, hogy a kritikus küszöbszám (esetünkben 5000MB) elérésekor a rendszermonitor:
- Írjon az eseménynaplóba és/vagy
- Küldjön üzenetet a hálózaton (net send) keresztül és/vagy
- futtassa az általunk meghatározott programot
A Schedule (Ütemezés) fülön pedig beállíthatjuk, hogy a rendszermonitor naponta, egy bizonyos időpontban, ismétlődő jelleggel ellenőrizze a rendelkezésre álló merevlemez kapacitást.
Előnyök
A rendszermonitor által biztosított monitorozási lehetőség legnagyobb előnye, hogy
- könnyen, bárki által implementálható. Nem kell hozzá adattárházas vagy OLAP-os tapasztalat.
- Az eseménynaplóba ír, amelyet a helyi rendszergazdák folyamatosan vizsgálnak, így az az ember kapja majd az értesítést, aki leggyorsabban beavatkozhat.
Hátrányok
- Nem veszi figyelembe az adatbázisban rendelkezésre álló szabad terület nagyságát
- Nehéz meghatározni a kritikus küszöbszámot (Hány MB szabad terület alatt értesítsen a rendszer. Az 5000 MB még sokáig elegendő vagy már nagyon kevés?)
- Nehéz meghatározni, hogy a kritikus küszöbszám elérése után, még hány napi betöltés valósítható meg a lemezterület növelése nélkül.
- Nem biztosít lehetőséget a lemezterület csökkenésének idősoros elemzésére.
xp_fixeddrives tárolt eljárás
A Rendszermonitor (System monitor) figyelmeztet, ha a merevlemez szabad kapacitása agy kritikus határ alá süllyedt, de nem mondja meg azt, hogy az átlagos lemezterület csökkenést figyelembe véve, meddig elegendő a rendelkezésre álló disk kapacitás.
A kérdés megválaszolásához két információra van szükségünk:
- pillanatnyilag rendelkezésre álló szabad lemezterületre és
- Az adattárház átlagos növekedési ütemére
Mindkét adat meghatározható, ha idősoros információval rendelkezünk a merevlemezünk szabad kapacitásáról, azaz meg tudjuk mondani, hogy mennyi szabad helyünk volt tegnap, tegnapelőtt, és azelőtt. A kérdés csak az, hogy hogyan tudjuk lekérdezni merevlemezünk szabad kapacitását T-SQL-ből?
Az SQLCentral.com-on olvastam egy cikket, amely rávilágított a megoldásra: létezik egy dokumentálatlan tárolt eljárás (xp_fixeddrives), amely megmutatja merevlemezeink szabad kapacitásának értékét megabájtban.
Az xp_fixeddrives eredménye
Az xp_fixeddrives tárolt eljárás csak azt mondja meg, hogy mennyi szabad lemezterületünk van még a merevlemezen, de arról nem ad információt, hogy mennyi helyünk van még az adatbázisban.
sp_spaceused tárolt eljárás
Az adattárház adatbázisának célszerű akkor helyet előre lefoglalni, amekkorát csak tudunk (illetve amekkora indokolt), hogy betöltés közben ne kelljen az SQL szervernek az adatbázis fájl méretét növelnie, és ne váljon töredezetté az adatbázis a lemezen.
Tételezzük fel, hogy lefoglalunk 50 gigát az adatbázisnak és naponta beletöltünk 100 megát. Mit fog mutatni az xp_fixeddrives tárolt eljárás vagy a rendszermonitor? Azt hogy a rendelkezésre álló szabad lemezterület nem csökkent. És mit fog mutatni az sp_spaceused tárolt eljárás: azt, hogy az adatbázisban rendelkezésre álló szabad lemezterület naponta 100 megával csökkent.
Ezért, a rendelkezésre álló szabad lemezterület meghatározásakor figyelembe kell venni a szabad lemezterület nagyságát (xp_fixeddrives) és az adatbázisban rendelkezésre álló szabad lemezterület (sp_spaceused) nagyságát is
Adatbetöltő folyamataink futásideit, hibáit, letöltött rekordjainak számát eddig is idősorosan tároltuk. (ugye?) Tettük ezt elsősorban azért, hogy a kezdeti állapottól való eltérést folyamatosan mérhessük. Így ezen idősoros naplót kiegészítve a merevlemez napi szabad kapacitás adataival, már azt is meg tudjuk becsülni, hogy mikor kell majd kapacitásbővítésén gondolkozni. De választ kapunk olyan kérdésekre is, mint:
- átlagosan hány megabájt szabad kapacitásra van szükség egy napi adatmennyiség feldolgozásához,
- Melyek a "merevlemez igényes" hónapok, napok, ...
- X megabájt adatot átlagosan hány perc alatt dolgoz fel a rendszer (és tavaly ilyenkor hány perc alatt dolgozta fel ugyanezt a mennyiséget, .)
Felhasznált irodalom:
- Joy Mundy and Warren Thornthwaite with Ralph Kimball: The Microsoft Data Warehouse Toolkit with SQL Server 2005 and the Microsoft Business Intelligence Toolset
- Boris Baliner: SQL 2000 to SQL 2005: Where have all the old features gone?
- sp_spaceused (Transact-SQL)
Kővári Attila - BI projekt
Új hozzászólás