Resource governor sınıflandırıcı işlevi

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Kaynak yöneticisi sınıflandırma işlemi, bir iş yükü grubuna gelen oturumları atamak için sınıflandırıcı işlevini kullanabilir. Sınıflandırıcı işlevi, oturumları iş yükü gruplarına sınıflandırmak için özel mantığınızı içerir.

Yapılandırma ve izleme örnekleri için ve kaynak yöneticisi en iyi yöntemlerini öğrenmek için bkz. Öğretici: Kaynak yöneticisi yapılandırma örnekleri ve en iyi yöntemler.

Classification

Resource Governor ile her yeni oturum bir iş yükü grubuna sınıflandırılır. Sınıflandırıcı, oluşturduğunuz skaler kullanıcı tanımlı bir işlevdir. Bir iş yükü grubuna gelen oturumları atamak için istediğiniz mantığı içerir. Sınıflandırıcı tarafından döndürülen skaler değer, gelen oturuma atanacak iş yükü grubunun adıdır.

Resource Governor etkinleştirilirse ve resource governor yapılandırmasında bir sınıflandırıcı işlevi belirtilirse, işlev çıkışı yeni oturumlar için kullanılan iş yükü grubunu belirler. Aksi takdirde, tüm kullanıcı oturumları iş yükü grubunda sınıflandırılır default .

Uyarı

İş internal yükü grubu yalnızca iç sistem istekleri için kullanılır. İstekleri iş yükü grubuna internal atamak için kullanılan ölçütleri değiştiremezsiniz ve istekleri iş yükü grubuna internal açıkça sınıflandıramazsınız.

Sınıflandırıcı işlevini kullanmaya başlamak için aşağıdaki adımları tamamlamanız gerekir:

  1. master veritabanında, CREATE FUNCTION kullanarak işlevi oluşturun. İşlev şema bağlamasını kullanmalıdır.
  2. Resource governor yapılandırmasında, işleve ALTER RESOURCE GOVERNOR parametresiyle CLASSIFIER_FUNCTION kullanarak başvurun.
  3. kullanarak ALTER RESOURCE GOVERNOR RECONFIGUREyeni yapılandırmayı etkili hale getirin.

Önemli

İstemci tarafından yapılandırılan bağlantı zaman aşımı süresi içinde sınıflandırıcı işlevi tamamlanmazsa, istemci bağlantı girişimleri zaman aşımına uğrayabilir. Bağlantı zaman aşımı oluşmadan önce yürütmeyi bitiren sınıflandırıcı işlevleri oluşturmanız önemlidir.

Sınıflandırıcı işlevini basit tutun. Karmaşık veya zaman alan mantık kullanmaktan kaçının. Mümkünse sınıflandırıcıda veri erişiminden kaçının.

Sınıflandırıcı işlevi aşağıdaki özelliklere ve davranışlara sahiptir:

  • İşlev, sunucu kapsamında ( master veritabanında) tanımlanır.
  • İşlev şema bağlaması ile tanımlanır. Daha fazla bilgi için bkz . SCHEMABINDING.
  • bağlantı havuzu etkinleştirildiğinde bile işlev her yeni oturum için değerlendirilir.
  • İşlev, oturum için iş yükü grubu bağlamını döndürür. Oturum, oturum ömrü boyunca sınıflandırıcı tarafından döndürülen iş yükü grubuna atanır.
  • İşlev NULL, default veya var olmayan bir iş yükü grubunun adını döndürürse, oturuma default iş yükü grubu bağlamı verilir. İşlev herhangi bir nedenle başarısız olursa oturuma default bağlam da verilir.
  • Bir sınıflandırıcı işlevi ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...) deyimi kullanılarak eklendiğinde veya kaldırıldığında, değişiklik ALTER RESOURCE GOVERNOR RECONFIGURE deyimi yürütüldükten sonra geçerli olur.
  • Bir kerede sınıflandırıcı olarak yalnızca bir işlev atanabilir.
  • Sınıflandırıcı işlevi, işlev adını veya başka bir işlevin adını ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...) ayarlayan deyim kullanılarak NULL sınıflandırıcı durumu kaldırılmadığı sürece değiştirilemez veya silinemez.
  • Sınıflandırıcı işlevinin olmaması halinde tüm oturumlar grupta sınıflandırılır default .
  • Sınıflandırıcı işlev çıkışında belirtilen iş yükü grupları şema bağlama kısıtlamasının kapsamı dışındadır. Örneğin, sınıflandırıcı işlevinde başvuruda bulunan bir tabloyu bırakamazsınız, ancak sınıflandırıcı bu grubun adını döndürse bile bir iş yükü grubunu bırakabilirsiniz.

DAC'yi etkinleştirme

Sorun giderme ve tanılama amacıyla, Ayrılmış Yönetici Bağlantısı'nı (DAC) önceden etkinleştirmenizi ve tanımanızı öneririz. DAC, kaynak yöneticisi sınıflandırmasına tabi değildir. Resource Governor yapılandırmanız arızalı olsa ve diğer bağlantıları kullanılamaz hale getirse bile sınıflandırıcı işlevini izlemek ve sorunlarını gidermek için DAC kullanabilirsiniz. Daha fazla bilgi için bkz. veritabanı yöneticileri için tanılama bağlantısı.

Sorun giderme için bir DAC kullanılamıyorsa sunucuyu tek kullanıcı modunda başlatabilirsiniz. Tek kullanıcı modu bağlantısı sınıflandırmaya tabi olmasa da, çalışırken kaynak yöneticisi sınıflandırmasını tanılama olanağı sunmaz.

DAC kullanarak bağlandıktan veya tek kullanıcı modunda bağlandıktan sonra, hatalı çalışan bir sınıflandırıcı işlevini kaldırmak veya resource governor'ı devre dışı bırakmak için resource governor yapılandırmasını değiştirebilirsiniz.

Oturum açma işlemi

Resource Governor bağlamında, oturum açma işlemi aşağıdaki adımlardan oluşur:

  1. Oturum açma kimlik doğrulaması.
  2. Oturum açma tetikleyicisi yürütme. Yalnızca örnekte oturum açma tetikleyicileri varsa gerçekleşir.
  3. Sınıflandırma.

Sınıflandırma başladığında, resource governor sınıflandırıcı işlevini yürütür ve eşleşen iş yükü grubuna istek göndermek için işlev tarafından döndürülen skaler değeri kullanır.

sys.dm_exec_sessions ve sys.dm_exec_requestssistem görünümlerini kullanarak oturum açma tetikleyicilerinin ve sınıflandırıcı işlevinin yürütülmesini izleyebilirsiniz.

Örnekler

Resource Governor sınıflandırıcı işlevi çok çeşitli özel mantık kullanabilir. Daha fazla örnek ve izlenecek yol için bkz . Öğretici: Kaynak yöneticisi yapılandırma örnekleri ve en iyi yöntemler.

A. Konak adı

Bu işlev, Reports adlı bir iş yükü grubuna belirli bir konak adından oturumları yerleşik sistem işlevini kullanarak sınıflandırır. Diğer tüm oturumlar default iş yükü grubunda sınıflandırılmaya devam etmektedir.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (HOST_NAME() IN ('reportserver1','reportserver2'))
        SET @grp_name = 'Reports';
    
    RETURN @grp_name;
END;
GO

B. Kullanıcı adı

Bu işlev, SUSER_SNAMEReports yerleşik sistem işlevini kullanarak belirli kullanıcı adlarından veya hizmet hesabı adlarından oturumları adlı bir iş yükü grubuna sınıflandırır. Diğer tüm oturumlar default iş yükü grubunda sınıflandırılmaya devam etmektedir.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (SUSER_SNAME() IN ('Reporting', 'domain/svc_reporting'))
        SET @grp_name = 'Reports';
    
    RETURN @grp_name;
END;
GO

C. Uygulama adı

Bu işlev, Adhoc yerleşik sistem işlevini kullanarak belirli uygulama adlarından oturumları adlı bir iş yükü grubuna sınıflandırır. Diğer tüm oturumlar default iş yükü grubunda sınıflandırılmaya devam etmektedir.

Önemli

Bir uygulama veya kullanıcı, bağlantı dizesinin bir parçası olarak herhangi bir uygulama adı sağlayabilir. Kullanıcılar çok çeşitli uygulamalar aracılığıyla bağlanabilir.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (APP_NAME() IN ('Microsoft SQL Server Management Studio - Query','azdata'))
        SET @grp_name = 'Adhoc';
    
    RETURN @grp_name;
END;
GO