DBAtlas · Veritabanı operasyon atlası

Resource Governor ile rapor yükünü sınırla (pool, workload group, classifier)

SQL ServerYapılandırma

Komut

USE master;
-- 1) Havuz ve workload group:
CREATE RESOURCE POOL [pool_report]
WITH (MIN_CPU_PERCENT = 0, MAX_CPU_PERCENT = 30, CAP_CPU_PERCENT = 40,
      MIN_MEMORY_PERCENT = 0, MAX_MEMORY_PERCENT = 25);
CREATE WORKLOAD GROUP [wg_report]
WITH (IMPORTANCE = LOW, REQUEST_MAX_MEMORY_GRANT_PERCENT = 15,
      MAX_DOP = 2, REQUEST_MAX_CPU_TIME_SEC = 600)
USING [pool_report];
GO
-- 2) Classifier function (master'da, SCHEMABINDING zorunlu):
CREATE FUNCTION dbo.fn_rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp sysname = N'default';
    IF SUSER_SNAME() = N'rapor_user' OR APP_NAME() LIKE N'Power BI%'
        SET @grp = N'wg_report';
    RETURN @grp;
END;
GO
-- 3) Etkinlestir:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.fn_rg_classifier);
ALTER RESOURCE GOVERNOR RECONFIGURE;

-- 4) Hangi oturum hangi gruba dustu:
SELECT s.session_id, s.login_name, s.program_name, wg.name AS workload_group, rp.name AS pool
FROM   sys.dm_exec_sessions s
  JOIN sys.dm_resource_governor_workload_groups wg ON wg.group_id = s.group_id
  JOIN sys.dm_resource_governor_resource_pools rp  ON rp.pool_id = wg.pool_id
WHERE  s.is_user_process = 1;

-- Geri alma:
-- ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL); ALTER RESOURCE GOVERNOR DISABLE;

Ne yapar?

Belirli login veya uygulamalardan gelen oturumları bağlantı anında ayrı bir workload group'a yönlendirir; o grubun CPU, memory grant, DOP ve istek başına CPU süresini sınırlayarak OLTP yükünü korur.

Ne zaman kullanılır?

Rapor/BI sorguları OLTP'yi boğduğunda, ETL ile mesai yükü çakıştığında, çok kiracılı (multi-tenant) sunucuda kaynak paylaşımında.

Dikkat

Classifier function her yeni bağlantıda çalışır; yavaş veya hata veren fonksiyon tüm login'leri yavaşlatır/bozar (sorgu, tablo erişimi koyma). Sorun olursa DAC ile bağlanıp CLASSIFIER_FUNCTION = NULL yap. Sınıflandırma yalnız bağlantı anında yapılır; mevcut oturumlar etkilenmez. CAP_CPU_PERCENT sert sınırdır ve boşta CPU olsa bile uygulanır. MAX_CPU_PERCENT yalnız CPU rekabeti varken devreye girer. Resource Governor Enterprise/Developer özelliğidir.

DBAtlas'ta aç →

İlgili