Resource Governor ile Değişiklik Operasyonlarının Sistem Üzerindeki Etkisini Sınırlamak
I’m a passionate software engineer specializing in SQL change management, database security, and DevOps automation. With over 17 years of experience in the banking sector, I focus on building tools and processes that make database deployments safer, more auditable, and automated.
As the creator of SQL Change Guard, I develop solutions that use risk scoring and AI-powered code analysis to detect dangerous SQL scripts before they reach production. I’m dedicated to helping teams minimize downtime and data loss through smarter change governance.
When I’m not coding, I enjoy sharing insights about secure development practices, WPF desktop applications, and integrating modern CI/CD pipelines.
Feel free to connect or reach out at info@sqlchangeguard.com
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';
-- 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
