Az Analysis Services fekete doboza


Az Analysis Services-nek, mint a repülőgépeknek van egy fekete doboza (flight recorder). Ebbe a dobozba gyűjti működése során keletkezett információkat, így amikor összeomlik a szerver pontosan meg tudjuk mondani, hogy milyen események következtek be a „lezuhanás" előtt és azt is, hogy mely esemény volt az utolsó, amíg a szerver talpon állt.

Fekete doboz (flight recorder)

fekete doboz (flight recorder)

Az Analysis Services fekete doboza (flight recorder) azonban többre is képes: az összeomlása előtti eseményeket újra le is futtathatjuk. Azaz ha sikerült fölállítanunk az összeomlott szervert, akkor a fekete doboz által rögzített eseményeket lefuttatva újra a padlóra küldhetjük az Analysis Services-t. (persze úgy, hogy ekkor már ezer szempár figyeli az összeomlást)

A fekete dobozt azonban nem csak erre használhatjuk, hanem arra is hogy szorgosan gyűjtse azokat a lekérdezéseket, amelyeket a felhasználók küldenek az Analysis Services felé. Igaz ehhez egy kicsit át kell alakítani, mert gyárilag nem így működik. Erről mindjárt írok részlsetesen is, de előtte nézzük meg, hogy miért akarjuk gyűjteni a felhasználók lekérdezéseit:

  1. Tudjuk kik használják az Analysis Services-t, melyik kockákat használják, mennyi idő alatt kapnak választ a kérdéseikre, stb. Ezek fontosságáról már írtam itt és itt és még itt is, és legutoljára az adattárház menedzser feladatai között. Tényleg fontos no.
  2. Cache melegítéshez. Az Analysis Services „keseli" (azaz beteszi a memóriába) a lekérdezések eredményét. Így amikor legközelebb lefuttatja a felhasználó ugyanazt a lekérdezést, akkor már nem kell elmennie a lemezig, hanem elég csak előhúzni a memóriából. Így sokkal gyorsabban fut le az a lekérdezés, amit egyszer már lefuttattak. Logikusnak tűnhet mindezekből, hogy célszerű összegyűjteni, és a betöltés után lefuttatni azokat a lekérdezéseket, amelyeket gyakran használnak, így optimalizálva a válaszidőket.
  3. Stressz tesztekhez. Nekem spéci erre kellenek, de erről majd a jövő héten.

 

Frissítés (2009-11-11): Elkészült az Analysis Services stressz tesztjéről szól cikk

Most nézzük meg hogyan tudjuk átalakítani az Analysis Services fekete dobozát, úgy hogy az gyűjtse a lekérdezést (Via Patrice Truong)

  • Készítsünk egy új trace-t az SQL Profiler -rel
  • A trace tulajdonságainál válasszuk ki azokat az eseményeket, amelyeket szeretnénk hogy rögzítsen a fekete doboz. Ha csak a lekérdezéseket akarjuk rögzíteni, akkor elég kiválasztani a QueryEnd eseményt. Ha szeretnénk monitorozni a felösszegzési időket és egyéb hasznos információkat, akkor trace-eljük az Error, Progress Report End, Progress Report Error, Query End, Query Subcube eseményeket.
  • A fájl menüben válasszuk ki az Export -> Script trace definition -> For Analysis Services 2005 menüpontot
  • Adjuk meg az xmla fájl nevét
  • Nyissuk meg az xmla fájlt valamilyen text editorral
  • Másoljuk ki az <Events></Events>tagokat és a köztük elhelyezkedő szöveget
  • Nyissuk meg a fekete doboz alapértelmezett definíciós fájlját. (C:\Program Files\Microsoft SQL Server\MSSQL.n\OLAP\bin\flightrecordertracedef.xml ahol n lehet 2 vagy 3 attól függően, hogy telepítve van-e a Reporting Services a gépre
  • Cseréljük ki az <Events></Events> tag-ek tartalmát a vágólapra másolt <Events></Events> tag-ek tartalmával
  • Mentsük el a FlightRecorderTraceDef.xml fájlt
  • Indítsuk újra az Analysis Services-t, hogy a fekete doboza az új definíciós fájl alapján rögzítse az eseményeket

A fentiekhez még hagy tegyek egy kiegészítést:

A fekete doboz által generált trc fájl addig él, amíg el nem éri a megadott méret, vagy időplafont. Ha valamelyiket a kettő közül eléri, akkor új fájlt nyit és a régi már betelt fájlt felül fogja írni az új fájlról készült mentéssel. Ezért célszerű mind a méretet mind az időkorlát alapértelmezett értékét átírni. Ezt az Analysis Services Advanced tulajdonságai között tehetjük meg úgy, hogy átírjuk a Log\FlightRecorder\FileSizeMB és a Log\FlightRecorder\LogDurationSec értékét. (Logduration legyen pl egy hét (604800 másodperc), a fájl mérete (FileSize) pedig legyen pl. 100 Mega). Újra kell indítanunk az Analysis Services-t és utána egy hétig vagy 100 megáig fogja gyűjtögeni az Analysis Services a lekérdezéseket.

Összefoglalva: Az Analysis Services fekete doboza (bár nem erre találták ki) de remekül használható arra, hogy naplózza: ki mikor milyen lekérdezést futtatott, és azok mennyi ideig futottak. Ezeket az információkat aztán felhasználhatjuk arra, hogy előmelegítsük a cache-t, teszteljük hogy vajon a válaszidők 90%-a lefut-e 10 másodpercen belül, és stressz teszteket futtassunk. Ez utóbbiról a jövő hét után írok majd. Addig elmegyek nyaralni és itt hagyom az Analysis Services-t, hogy gyűjtse szorgosan az adatokat. Az eredményekről beszámolok. Kikapcs.

Elválasztó

Már készül a következő cikk. Kérjen értesítést a megjelenéséről itt.

|

Kővári Attila
2009. június 19.
Címkék:

1 Hozzászólás

"és a régi már betelt

"és a régi már betelt fájlt felül fogja írni az új fájlról készült mentéssel" -- mármint fordítva, gondolom (különben két üres file maradna)

Szóljon hozzá!

Szabály: Legyen kedves, segítõkész és vállalja a nevét.
A mező tartalma nem nyilvános.
  • A web és email címek automatikusan linkekké alakulnak.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • A sorokat és bekezdéseket automatikusan felismeri a rendszer.
ANTI SPAM
A robot regisztrációk elkerülésére.
Image CAPTCHA
Figyeljen a kis és nagybetűk használatára