• 25.11.2018
  • Ing. Jan Zedníček - Data Engineer & Controlling
  • 0

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. Tato funkce 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 v SQL Server

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ší.

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

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

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

Navázání funkce na Resource governor

Posledním krokem řekneme, že má tuto 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 tématu můžete najít:

5/5 - (2 votes)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *