Nasıl Yapılır: Oluşturma ve bir kullanıcı tanımlı fonksiyon (Transact-SQL) Sınıflandırıcısı sınama
Bu konu, Sınıflandırıcısı kullanıcı tanımlı bir işlev (UDF) oluşturup gösterilmiştir.Çalıştırma adımları içerir. Transact-SQL tablolarda SQL Server Management Studio Sorgu Düzenleyicisi. Okumanızı öneririz Bir yazma ile ilgili konuları Sınıflandırıcısı bir işlev , devam etmeden önce.
Oldukça karmaşık bir Sınıflandırıcısı oluşturma kullanıcı tanımlı için aşağıdaki yordamda gösterilen örnek olasılıkları gösterir işlev.
Örneğimizde:
Bir kaynak havuzu (pProductionProcessing) ve iş yükü grubu (gProductionProcessing) bir belirtilen saat aralığında işleme üretim oluşturulur.
Üretim işlemi gereksinimlerini karşılayan bağlantıları işlemek için BIR kaynak havuzu (pOffHoursProcessing) ve iş yükü grubu (gOffHoursProcessing) oluşturulur.
Başlangıç basılı tutun ve bir oturum açma saat değerlendirilebilecek süreleri sona erdirmek için ana tablo (TblClassificationTimeTable) oluşturulur.Bu kaynak Governor şema cilt payı Sınıflandırıcısı işlevleri için kullandığı asıl oluşturulmalıdır.
Not
En iyi yöntem olarak, büyük, sık sık güncelleştirilen tabloları yöneticisinde depolamanız gerekir değil.
' De belirtildiği gibi Bir Sınıflandırıcısı işlev yazılıyor dikkat edilmesi gereken noktalar, Sınıflandırıcısı işlev oturum açma süresini uzatır. Çok fazla karmaşık bir işlev oturumların saat aşımına neden veya hızlı bağlantılar yavaş.
Kullanıcı tanımlı Sınıflandırıcısı işlev oluşturmak için
Oluşturun ve iş grupları ve yeni bir kaynak havuzu ile yapılandırın.Her iş yükü grubu için uygun kaynak havuzuna atayın.
--- Create a resource pool for production processing --- and set limits. USE master GO CREATE RESOURCE POOL pProductionProcessing WITH ( MAX_CPU_PERCENT = 100, MIN_CPU_PERCENT = 50 ) GO --- Create a workload group for production processing --- and configure the relative importance. CREATE WORKLOAD GROUP gProductionProcessing WITH ( IMPORTANCE = MEDIUM ) --- Assign the workload group to the production processing --- resource pool. USING pProductionProcessing GO --- Create a resource pool for off-hours processing --- and set limits. CREATE RESOURCE POOL pOffHoursProcessing WITH ( MAX_CPU_PERCENT = 50, MIN_CPU_PERCENT = 0 ) GO --- Create a workload group for off-hours processing --- and configure the relative importance. CREATE WORKLOAD GROUP gOffHoursProcessing WITH ( IMPORTANCE = LOW ) --- Assign the workload group to the off-hours processing --- resource pool. USING pOffHoursProcessing GO
De-bellek güncelleştirme yapılandırma.
ALTER RESOURCE GOVERNOR RECONFIGURE GO
Bir tablo oluşturun ve saat aralık işleme üretimin başlangıç ve bitiş saatlerini tanımlayın.
USE master GO CREATE TABLE tblClassificationTimeTable ( strGroupName sysname not null, tStartTime time not null, tEndTime time not null ) GO --- Add time values that the classifier will use to --- determine the workload group for a session. INSERT into tblClassificationTimeTable VALUES('gProductionProcessing', '6:35 AM', '6:15 PM') go
Sınıflandırıcısı oluşturma işlev kullandığı işlev s ve zamanları Arama tablosundaki karşı değerlendirilebilecek bir değer saat.
Not
SQL Server 2008 Genişletilmiş bir tarih ve saat veri türü ve işlevleri kümesi sunmaktadır.Daha fazla bilgi için bkz:Tarih ve saat veri türleri ve işlevler (Transact-SQL).
CREATE FUNCTION fnTimeClassifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @strGroup sysname DECLARE @loginTime time SET @loginTime = CONVERT(time,GETDATE()) SELECT TOP 1 @strGroup = strGroupName FROM dbo.tblClassificationTimeTable WHERE tStartTime <= @loginTime and tEndTime >= @loginTime IF(@strGroup is not null) BEGIN RETURN @strGroup END --- Use the default workload group if there is no match --- on the lookup. RETURN N'gOffHoursProcessing' END GO
Sınıflandırıcısı işlev kaydetmelerine ve bellek içi yapılandırma.
ALTER RESOURCE GOVERNOR with (CLASSIFIER_FUNCTION = dbo.fnTimeClassifier) ALTER RESOURCE GOVERNOR RECONFIGURE GO
Kaynak havuzu, iş grupları ve kullanıcı tanımlı fonksiyonun Sınıflandırıcısı doğrulamak için
Kaynak havuzunu ve iş yükünü grubu yapılandırması aşağıdaki sorgusu kullanarak alın.
USE master SELECT * FROM sys.resource_governor_resource_pools SELECT * FROM sys.resource_governor_workload_groups GO
Sınıflandırıcısı işlev bulunmaktadır ve aşağıdaki sorgular kullanarak etkin olduğunu doğrulayın.
--- Get the classifier function Id and state (enabled). SELECT * FROM sys.resource_governor_configuration GO --- Get the classifer function name and the name of the schema --- that it is bound to. SELECT object_schema_name(classifier_function_id) AS [schema_name], object_name(classifier_function_id) AS [function_name] FROM sys.dm_resource_governor_configuration
Aşağıdaki sorguyu kullanarak, iş grupları ve kaynak havuzları için geçerli olan çalışma zamanı verileri alır.
SELECT * FROM sys.dm_resource_governor_resource_pools SELECT * FROM sys.dm_resource_governor_workload_groups GO
Ne oturumların her grupta aşağıdaki sorguyu kullanarak bulmak.
SELECT s.group_id, CAST(g.name as nvarchar(20)), s.session_id, s.login_time, CAST(s.host_name as nvarchar(20)), CAST(s.program_name AS nvarchar(20)) FROM sys.dm_exec_sessions s INNER JOIN sys.dm_resource_governor_workload_groups g ON g.group_id = s.group_id ORDER BY g.name GO
Aşağıdaki sorguyu kullanarak her gruba hangi istekleri olduğunu öğrenin.
SELECT r.group_id, g.name, r.status, r.session_id, r.request_id, r.start_time, r.command, r.sql_handle, t.text FROM sys.dm_exec_requests r INNER JOIN sys.dm_resource_governor_workload_groups g ON g.group_id = r.group_id CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t ORDER BY g.name GO
Ne istekleri Sınıflandırıcısı'de aşağıdaki sorguyu kullanarak çalıştırdığınızı belirleme.
SELECT s.group_id, g.name, s.session_id, s.login_time, s.host_name, s.program_name FROM sys.dm_exec_sessions s INNER JOIN sys.dm_resource_governor_workload_groups g ON g.group_id = s.group_id AND 'preconnect' = s.status ORDER BY g.name GO SELECT r.group_id, g.name, r.status, r.session_id, r.request_id, r.start_time, r.command, r.sql_handle, t.text FROM sys.dm_exec_requests r INNER JOIN sys.dm_resource_governor_workload_groups g ON g.group_id = r.group_id AND 'preconnect' = r.status CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t ORDER BY g.name GO