Resource Governor – riadenie zdrojov SQL Server 2008

Možnosť spravovania zdrojov databázového servera je vlastnosť, ktorú by mal mať každý databázový systém s ambíciou uplatniť sa v tom najnáročnejšom – podnikovom – prostredí. Spoločnosť Microsoft takúto ambíciu pre SQL Server deklaruje už dávnejšie a postupne tento jeden zo svojich vlajkových serverovských produktov dopĺňa o vlastnosti potrebné na uplatnenie sa v tomto segmente. Tak je to aj v prípade najnovšej verzie SQL Server 2008, ktorý prvý krát obsahuje aj nástroj na riadenie zdrojov servera.
Resource Governor – tak sa tento nástroj v terminológii Microsoft nazýva – je novou technológiou na spravovanie zdrojov SQL Server 2008. V súčasnej verzii je možné riadiť CPU a pamäť a pozrime sa teda bližšie na to, čo vlastne riadenie zdrojov predstavuje. V prípade SQL 2008 Resource Governor prideľuje podľa vopred nastavených pravidiel zdroje (ako sme spomínali množstvo CPU a pamäte) prichádzajúcim požiadavkám (dotazom). Ak teda vieme našich užívateľov rozdeliť (klasifikovať) do logických skupín (napr. analytici, bežní užívatelia, management a pod.), tak potom môžeme týmto skupinám prideliť podľa priorít príslušné zdroje – tak napr. bežným užívateľom pridelíme 40% CPU, analytikom 30% CPU a managementu 20% CPU. V prípade, že tieto skupiny užívateľov budú v rovnakom čase súťažiť o zdroje servera, Resource Governor uplatní nadefinovanú politiku rozdelenia zdrojov a tak zabezpečí, že nenastane preťaženie servera a server bude vykazovať konzistentný čas odozvy v danom čase.
Ako sa teda dopracujeme k danému stavu ? Resource Governor sa skladá z nasledovných komponentov:

Klasifikačná funkcia
Pomocou tejto funkcie zabezpečíme klasifikáciu našich užívateľov pri prihlasovaní sa na server do skupín, ktorým budeme neskôr prideľovať zdroje nášho servera. Túto funkciu si musíme napísať sami, v danom čase môžeme využívať len jednu funkciu a táto funkcia musí byť skalárna. Užívateľov môžeme klasifikovať podľa nasledovných systémových funkcií:

        •        HOST_NAME()
        •        APP_NAME()
        •        SUSER_NAME()
        •        SUSER_SNAME()
        •        IS_SRVROLEMEMBER()
        •        IS_MEMBER()

Okrem týchto funkcií môžeme využívať aj funkcie LOGINPROPERTY a CONNECTIONPROPERTY.

Resource Pool
Resource Pool reprezentuje fyzické zdroje servera (ako sme spomínali CPU a pamäť). Defaultne server využíva 2 resource pooly – default a internal. Okrem týchto 2 default-ných poolov si môžeme vytvoriť aj vlastné resource pooly. V zásade má resource pool 2 časti pre každý zdroj servera:

        •        MIN a MAX pre CPU
        •        MIN a MAX pre pamäť

Workload Group
Všetky požiadavky (sessions) prichádzajúce na server sú klasifikované funkciou a zoskupené do skupín – tzv. Workload Groups. Na všetky sessions zo skupiny je potom aplikovaná príslušná politika riadenia zdrojov.
Najlepšie si koncept fungovania Resource Governor ozrejmíme podľa nasledovného obrázku:
1.        Užívateľ alebo aplikácia vytvorí session na SQL Server 2008
2.        Táto session je klasifikovaná klasifikačnou funkciou
3.        Klasifikovaná session je priradená do príslušnej skupiny (Workload Group)
4.        Príslušná skupina využíva pridelený Resource Pool, ktorý limituje využívanie pridelených zdrojov danými užívateľmi alebo aplikáciou
ResourceGovernor.EOvdB2sXR6Wm.BQBthbkfaTiP.jpg
Obr. Architektúra Resource Governor

Administrácia zdrojov SQL Servera v praxi
Prideľovanie zdrojov SQL Servera sa nám osvedčí v prípade, ak potrebujeme navzájom od seba oddeliť definované typy záťaže – napr. v prípade, že náš OLTP systém využívajú užívatelia počas dňa na zadávanie dát a súčasne vedúci pracovníci alebo analytici využívajú ten istý db server na analytický reporting, čím môžu nepriaznivo ovplyvňovať odozvy prvej skupiny užívateľov.
Ďalším príkladom môže byť nasadenie a využívanie jednej z noviniek SQL Server 2008, a to Backup Compression – pri využívaní tejto vlastnosti môžeme očakávať mierny nárast záťaže CPU (v porovnaní so zálohovaním bez kompresie), ale s pomocou Resource Governora je možné nastaviť limit využívania CPU pre zálohovanie s kompresiou a zabezpečiť tak ponechanie pôvodných zdrojov na prevádzku.
Resource Governor je možné využívať aj na monitorovanie behu jednotlivých dotazov/procedúr – ak niekorá query presiahne nastavený časový limit – dajme tomu 60 sekúnd – tak máme možnosť odchytiť alert vygenerovaný Resource Governorom, identifikovať danú query a online upraviť konfiguráciu Resource Governora tak, aby daná query mohla využívať len obmedzené zdroje servera.
Čo dodať na záver ? Snáď ešte zopár odporúčaní pre nasadzovanie do prevádzky – Resource Governor je úplne nová technológia a preto je vhodné dodržať istú ostražitosť pri jej implementácii. Ako prvý krok je vhodné použiť Resource Governor len na monitorovanie existujúcej záťaže a podľa týchto výsledkov potom pripraviť politiku rozdeľovania záťaže. A zároveň je vhodné pre administrátorov využívanie DAC – Dedicated Administrator Connection – nakoľko táto connection nespadá do správy Resource Governor-a a v prípade potreby je možné použiť ju na prípadné riešenie problémov s nesprávne nastavenými politikami.