SQL Server kaynaklarını denetleme
Bazı SQL Sunucuları veya Azure SQL yönetilen örnekleri tek bir uygulamanın veritabanlarına ayrılmış olsa da, genellikle görev açısından kritik uygulamalarda görülen bir yapılandırma olsa da, birçok sunucu farklı performans gereksinimlerine ve en yoğun iş yükü döngülerine sahip birden çok uygulama için veritabanlarını destekler. Bu farklı gereksinimleri dengelemek yöneticiler için zor olabilir. Sunucu kaynaklarını yönetmenin etkili yollarından biri, SQL Server 2008'de kullanıma sunulan Resource Governor'ı kullanmaktır.
Resource Governor , SQL Server ve Azure SQL yönetilen örneklerinde gelen uygulama istekleri için CPU, fiziksel G/Ç ve bellek kaynakları üzerinde ayrıntılı denetime olanak sağlayan bir özelliktir. Örnek düzeyinde etkinleştirildiğinde Resource Governor, bağlantıların nasıl ele alınıp oturumları iş yükü gruplarına bölerek nasıl ele alınılacağını tanımlamak için bir sınıflandırıcı işlevi kullanır. Her iş yükü grubu, belirli bir sistem kaynakları havuzunu kullanacak şekilde yapılandırılır.
Kaynak havuzları
Kaynak havuzu, sunucuda kullanılabilen fiziksel kaynakları temsil eder. SQL Server her zaman iki havuza sahiptir: Resource Governor etkinleştirilmemiş olsa bile varsayılan ve iç. İç havuz kritik SQL Server işlevleri için ayrılmıştır ve kısıtlanamaz. Varsayılan havuz ve açıkça tanımladığınız tüm kaynak havuzları, kullanabilecekleri kaynaklarla ilgili sınırlarla yapılandırılabilir. Her birinternal olmayan havuz için aşağıdaki sınırları belirtebilirsiniz:
- En Düşük/En Yüksek CPU yüzdesi
- CPU yüzdesi üst sınırı
- Min/Max bellek yüzdesi
- NUMA düğüm benzinim
- Birim başına En Az/En Fazla IOP
Not
Kaynak havuzundaki değişiklikler yalnızca yeni oturumları etkiler, devam edenleri etkilemez. Bu nedenle, bir havuzun değiştirilmesi uzun süre çalışan bir işlemin kaynaklarını kısıtlamaz. Bu kuralın istisnası, SQL Server Machine Learning Services ile kullanılan ve devam eden oturumlar için bile havuz değişikliğiyle sınırlanabilen dış havuzlardır.
En düşük ve en yüksek CPU yüzdesi dışındaki tüm kaynak havuzu ayarları, aşılemeyecek sabit sınırları temsil ediyor. En düşük/en yüksek CPU yüzdesi yalnızca CPU çekişmesi olduğunda geçerlidir. Örneğin, en fazla 70%ayarlarsanız, çekişme olmadığında iş yükü 100% kadar kullanılabilir CPU döngüsü kullanabilir. Ancak, diğer iş yükleri çalışıyorsa, iş yükü 70%ile kısıtlanır.
İş yükü grubu
İş yükü grubu, sınıflandırıcı işlevi tarafından sınıflandırılan oturum istekleri için bir kapsayıcı görevi görür. Kaynak havuzlarına benzer şekilde iki yerleşik grup vardır: varsayılan ve iç. Her iş yükü grubu tek bir kaynak havuzuyla ilişkilendirilir, ancak bir kaynak havuzu birden çok iş yükü grubunu barındırabilir. Sınıflandırıcı işlevi bunları kullanıcı tanımlı bir gruba atamadığı sürece, varsayılan olarak tüm bağlantılar varsayılan iş yükü grubuna yönlendirilir. Varsayılan iş yükü grubu, varsayılan kaynak havuzuna ayrılan kaynakları kullanır.
Sınıflandırıcı işlevi
Sınıflandırıcı işlevi, SQL Server örneğine bir bağlantı kurulduğunda çalıştırılır ve her bağlantıyı belirli bir iş yükü grubuna sınıflandırır. İşlev NULL, varsayılan veya var olmayan iş yükü grubunun adını döndürürse oturum varsayılan iş yükü grubuna aktarılır. Sınıflandırıcı her bağlantıda çalıştırıldığından, verimlilik açısından test edilmelidir. Aşağıdaki görüntüde, kullanıcıları kullanıcı adlarına göre sınıflandırır örnek bir sınıflandırıcı işlevi gösterilmektedir.
CREATE FUNCTION dbo.RGClassifier()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @WorkloadGroup AS SYSNAME
IF(SUSER_NAME() = 'ReportUser')
SET @WorkloadGroup = 'ReportServerGroup'
ELSE IF (SUSER_NAME() = 'PrimaryUser')
SET @WorkloadGroup = 'PrimaryServerGroup'
ELSE
SET @WorkloadGroup = 'default'
RETURN @WorkloadGroup
END
Örnekte gösterilen işlev tanımının karmaşıklığını artırabilirsiniz, ancak daha karmaşık işlevin kullanıcı performansını etkilemediğini doğrulamanız gerekir.
Resource Governor kullanım örnekleri
Resource Governor öncelikle bir veritabanı grubunun tek bir SQL Server örneğini paylaştığı çok kiracılı senaryolarda kullanılır ve sunucunun tüm kullanıcıları için performansın tutarlı tutulması gerekir. Ayrıca, bakım pencereleriniz sırasında kullanıcı sorguları için yeterli kaynakları garanti etmeye çalışmak üzere tutarlılık denetimleri ve dizin yeniden derlemeleri gibi bakım işlemleri tarafından kullanılan kaynakları sınırlamak için Resource Governor'ı da kullanabilirsiniz.