Resource Governor – Jak omezit zdroje pro Bad guy uživatele

Resource Governor patří mezi SQL Server enterprise features, které nejsou dostupné v žádné jiné edici. Pokud vás zajímají různá omezení napříč edicemi, tak jsem to shrnul v článku Instalace SQL Server 2016 – Plánování, HW a SW požadavky. Pokud máte problémy s výkonem a vyzkoušeli jste všemožné možnosti optimalizace a scale out, tak se nabízí ještě tato možnost jak omezit fyzické zdroje.

Resource Governor umožňuje nastavit limity využití CPU a RAM zdrojů v rámci instance SQL Server. Tato funkce je efektivní pouze pro operace nad databázemi (database engine) a není tedy možné řídit prostředky pro Analysis, Integration nebo Reporting services. Zdroje lze omezit pomocí funkce prakticky na cokoliv – usery, časově (den/noc) nebo jinak.

Zapnutí Resource Governor

Tuto funkci můžeme zapnout dvěma způsoby. Přes vizuální rozhraní nebo T-SQL script: ALTER RESOURCE GOVERNOR RECONFIGURE;

Resource Governor zapnuti

Nastavení Resource Governor

Konfigurace tohoto nástroje je trošku náročnější.

(i) Resource Pools

Resource pools se dají popsat jako takové kontejnery fyzických zdrojů serveru. V každém takovém poolu můžou být jedna nebo více Workload groups. Funguje to tak, že když je odstartována nějaká session (třeba SQL Script), tak Resource Governor klasifikuje tuto session do workload groupy a té je přiřazen Resource pool. Pomocí zdrojů daného resource poolu je pak session obsloužena. V rámci každého resource poolu definujeme MAX a MIN hodnoty pro CPU a memory.

Na obrázku níže jsem vytvořil Resource Pool jménem “Test” a přiřadil mu maximálně 50 % CPU a 50 % Memory

Resource governor pool

(ii) Workload groups

Zatímco Resource pools slouží jako kontejnery pro fyzické zdroje, wokrloads groups jsou kontejnery pro sessions. Tyto sessions se do workload groups dostávají pomocí klasifikační funkce viz dále. Pokud není funkcí definována žádná workload groupa, tak SQL Server přidělí prostředky definované v default poolu.

Na obrázku níže jsem založil Workload group jménem “Bad Guy test” 

Workgroup Resource governor

(iii) Vytvoření funkce, která vrací Workload Group

Dalším krokem je vytvoření user defined funkce, která jako výsledek bude vracet bázev Workload Groupy v závislosti na tom, jestli dotaz pustil Bad Guy.

CREATE FUNCTION dbo.udf_Resource_Governor_Classification()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
  DECLARE @Workload_Group AS SYSNAME
  IF(SUSER_NAME() = 'Bad Guy')
  SET @Workload_Group = 'Bad Guy Test'
  ELSE
  SET @Workload_Group = 'default'
  RETURN @Workload_Group
END
GO

(iv) Navázání funkce na Resource governor

Posledním krokem řekneme, že má resource governor funkci používat jako klasifikační a má podle toho rozdělovat prostředky serveru

ALTER RESOURCE GOVERNOR
WITH (CLASSIFIER_FUNCTION=dbo.udf_Resource_Governor_Classification);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO

Další zajímavé informace o resource governoru můžete najít:

_______________________________________________________________________________________________
Intelligent technologies - podniková řešení a školení
Resource Governor – Jak omezit zdroje pro Bad guy uživatele
5 (100%) 2 votes

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

This site uses Akismet to reduce spam. Learn how your comment data is processed.