# Resource Governor ile Değişiklik Operasyonlarının Sistem Üzerindeki Etkisini Sınırlamak

Büyük bir index rebuild başladı. Birkaç dakika içinde sistem yavaşladı. Sorgular beklemeye geçti. Kullanıcılar şikayet etti. Resource Governor bu sorunu önlemek için tasarlanmış bir SQL Server özelliği.

Resource Governor Nedir? Resource Governor, SQL Server'da belirli iş yüklerine CPU ve bellek kaynaklarının ne kadar tahsis edileceğini kontrol eder. Maintenance operasyonlarını, backup işlemlerini ya da büyük değişiklik deployment'larını ayrı bir resource pool'a yönlendirerek production sorgularının kaynak kullanımını güvence altına alırsınız.

Neden Değişiklik Yönetimiyle İlişkili? Bir deployment sırasında çalıştırılan büyük script sistemi yavaşlatırsa bu hem teknik hem operasyonel sorun. Ama aynı zamanda değişiklik yönetimi açısından da sorun: deployment beklenen şekilde tamamlanmadı. Resource Governor ile deployment operasyonlarına kaynak sınırı koyulduğunda hem production etkilenmez hem de deployment kontrollü biçimde tamamlanır.

Temel Kurulum sql-- Maintenance için ayrı resource pool oluştur CREATE RESOURCE POOL MaintenancePool WITH ( MIN\_CPU\_PERCENT = 0, MAX\_CPU\_PERCENT = 20, -- CPU'nun max %20'si MIN\_MEMORY\_PERCENT = 0, MAX\_MEMORY\_PERCENT = 30 -- Belleğin max %30'u );

\-- Workload group oluştur CREATE WORKLOAD GROUP MaintenanceGroup USING MaintenancePool;

\-- Classifier function oluştur CREATE FUNCTION dbo.fn\_ResourceClassifier() RETURNS SYSNAME WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroup SYSNAME = 'default';

```plaintext
-- Maintenance kullanıcısını ayrı gruba yönlendir
IF SUSER_NAME() = 'MaintenanceUser'
    SET @WorkloadGroup = 'MaintenanceGroup';

RETURN @WorkloadGroup;
```

END; GO

\-- Classifier function'ı aktif et ALTER RESOURCE GOVERNOR WITH (CLASSIFIER\_FUNCTION = dbo.fn\_ResourceClassifier);

ALTER RESOURCE GOVERNOR RECONFIGURE;

Değişiklik Deployment'larına Uygulama Büyük deployment'lar için ayrı bir servis hesabı oluşturun. Bu hesabı Resource Governor'da MaintenanceGroup'a yönlendirin. Deployment'lar bu hesap üzerinden çalıştırıldığında sistem kaynaklarının %20'sini geçemez. sql-- Mevcut resource pool kullanımını izle SELECT rp.name AS PoolAdi, rp.max\_cpu\_percent AS MaxCPU, rpsc.used\_memory\_kb / 1024 AS KullanilanBellek\_MB, rpsc.active\_workers\_count AS AktifCalisanSayisi FROM sys.resource\_governor\_resource\_pools rp JOIN sys.dm\_resource\_governor\_resource\_pools rpsc ON rp.pool\_id = rpsc.pool\_id ORDER BY rp.name;

Ne Zaman Kullanılmalı? Her deployment için Resource Governor kurmak gerekmez. Özellikle şu senaryolarda değerli:

Index rebuild veya reorganize işlemleri Büyük toplu UPDATE/DELETE operasyonları Mesai saatlerinde yapılmak zorunda kalınan schema değişiklikleri Uzun süren migration script'leri

Sonuç Resource Governor deployment'ların sistemi olumsuz etkilemesini önler. Değişiklik yönetim sürecinin teknik altyapısını güçlendiren ve production kalitesini koruyan önemli bir araç. Detaylı bilgi için: sqlchangeguard.com
