Sorguları SQL Server 2005'te TokenAndPermUserStore önbellek boyutunun büyüklüğü aştığında çalışmasını sonlandırın uzun zaman alıyor...

Makale çevirileri Makale çevirileri
Makale numarası: 927396 - Bu makalenin geçerli olduğu ürünleri görün.
# Hata: 429501 (SQLBUDT)
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Microsoft SQL Server 2005'te, aşağıdaki belirtilerle karşılaşabilirsiniz:
  • Genelde daha hızlı çalışmasını sorgularını çalışmalarını tamamlamaları için bir daha uzun sürer.
  • SQL Sunucu işleminin CPU kullanımı, birden çok normal olur.
  • Düşürülmüş performans karşılaştığınızda, ad hoc bir sorgu çalıştırdığınızda sorgu sys.dm_exec_requests veya sys.dm_os_waiting_tasks dinamik bir yönetim görünümü görüntüleyin. Ancak, sorgu herhangi bir kaynak için bekleyen gibi görünmüyor.
  • TokenAndPermUserStore önbellek deposunun boyutunu sabit bir oranda artar.
  • TokenAndPermUserStore önbellek deposunun birkaç yüz sırasına boyutudur megabayt (MB).
  • Bazı durumlarda, geçici kabartma DBCC FREEPROCCACHE komutun yürütülmesini sağlar.
TokenAndPermUserStore önbellek boyutunu izlemek için <a0></a0>, aşağıdakine benzer bir sorgu kullanabilirsiniz:
SELECT SUM(single_pages_kb + multi_pages_kb) AS 
   "CurrentSizeOfTokenCache(kb)" 
   FROM sys.dm_os_memory_clerks 
   WHERE name = 'TokenAndPermUserStore'

Neden

TokenAndPermUserStore önbellek depolama folllowing güvenlik belirteci türlerini kullanır:
  • LoginToken
  • TokenPerm
  • UserToken
  • SecContextToken
  • TokenAccessResult.
Farklı sınıfları TokenAccessResult girişler de vardır. Bu sorunla, 65535 sınıf olan fazla TokenAccessResult girdisi varsa oluşur.

Bir yüksek rasgele dinamik sorgu yürütme hızı olan SQL Server örneğinde, çok sayıda sınıf 65535 sys.dm_os_memory_cache_entries görünüme sahip girişleri TokenAccessResult dikkat edin. Bir sınıf 65535 TokenAccessResult girişleri özel önbellek girdilerini gösterir. Bu önbellek girdileri sorgular için toplu izni çekler için kullanılır. Örneğin, aşağıdaki sorguyu çalıştırabilir:
select * 
from t1 join t2 join t3
böyle bir durumda, SQL Server, bu sorgu için bir toplu izni onay hesaplar. Bu denetim, bir kullanıcı seçin, t1, t2, t3 olup olmadığını belirler. Bu toplu izni onay sonuçları TokenAccessResult giriş katıştırılır ve 65535 KIMLIĞI TokenAndPermUserStore önbellek deposuyla eklenir. Aynı kullanıcı yeniden kullanır veya bu sorgu, birden çok kez yürütür, SQL Server bir kez TokenAccessResult önbellek girdisi yeniden kullanır.

Bu önbellek depolama büyüdükçe, varolan girişleri yeniden arama süresini artırır. Bu önbellek erişimi, böylece yalnızca bir iş parçacığının arama denetlenir. Bu davranış sonunda performansının düşmesine neden sorgulamak ve daha fazla CPU kullanımı oluşuyor.

Çözüm

Hizmet paketi bilgileri

Bu sorunu gidermek için <a0></a0>, SQL Server 2005 için en son hizmet paketini edinin. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
913089En son SQL Server 2005 hizmet paketi nasıl elde edilir
Bu sorunu gidermek için <a0></a0>, SQL Server 2005 Service Pack 2, izin belirteçleri önbelleğe alma davranışını değiştirir. Varsayılan olarak, belirli bir ad hoc sorgu yeniden çalıştırıldığında, ad hoc sorgularını TokenAccessResult güvenlik önbellek girdisi yalnızca önbelleğe alınır.

Pratik Çözüm

Bu soruna geçici bir çözüm bulmak için <a0></a0>, aşağıdaki yöntemlerden birini veya birkaçını kullanın:
  • Açıkça ad hoc sorgularını parameterize.

    Notları
    • Bu yöntem, etkin ad hoc sorgular ve bunların planları'nı yeniden olanak verir.
    • Bu yöntemi kullandığınızda, geçici sorgu değişik parametrelerle birlikte çalışan her bir TokenAccessResult girişi oluşturmak sahip değilsiniz.
    • Bu yöntemde, önbellek makul sınırlar altında kalan TokenAndPermUserStore boyutu.
  • Ad hoc sorguları saklı yordamlar içinde kaydırma ve saklı yordamlar, geçici sorgu yürütme yerine doğrudan kullanın.

    Notları
    • Yürütme planları saklı yordam olan tablolar için önbelleğe alınır.
    • Her tablo için TokenAccessResult giriş yürütme planı girdi ile ilişkilendirilmiştir.
    • Yürütme planı için bu yordamı kalır önbellekte depolanan sürece, her bir saklı yordamın yürütülmesini etkin TokenAccessResult girişleri yeniden kullanır. Bu nedenle, yeni TokenAccessResult oluşturmak zorunda girişler.
  • FORCE_PARAMETERIZATION veritabanı seçeneğini etkinleştirin.

    Notları
    • Bu yöntem, etkin ad hoc sorgular ve bunların planları'nı yeniden olanak verir.
    • Bu yöntemi kullandığınızda, geçici sorgu değişik parametrelerle birlikte çalışan her bir TokenAccessResult girişi oluşturmak sahip değilsiniz.
    • Bu yöntemde, önbellek makul sınırlar altında kalan TokenAndPermUserStore boyutu.
  • Yürüten oturum açma, ad hoc sorgularını sysadmin sunucu grubunun bir üyesi olarak değişen ekleyin.

    Notları
    • Sysadmin sunucu grubunun bir üyesi olmayan bir oturum tarafından bir sorgu yürütüldüğünde TokenAccessResult yalnızca geçici bir sorgu için girişler oluşur.
    • Bu davranış, TokenAccessResult girişleri oluşturulmadığından TokenAndPermUserStore önbellek boyutunu yönetilebilir bir boyuta tutar.
  • Girişleri TokenAndPermUserStore önbelleğinden temizleme.

    Notları
    • Bunu yapmak için <a0></a0>, aşağıdaki komutu çalıştırın:
      DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')
    • Ideal olarak, sorunları görünmesini başlattığınızda TokenAndPermUserStore önbellek boyutu eşiğini izlemek deneyin.
    • Aşağıdaki eylemleri gerçekleştiren zamanlanmış bir SQL Server Agent iş oluşturabilirsiniz:
      • TokenAndPermUserStore önbellek boyutunu denetleyin. Bunu yapmak için <a0></a0>, aşağıdaki komutu çalıştırın:
        SELECT SUM(single_pages_kb + multi_pages_kb) AS 
           "CurrentSizeOfTokenCache(kb)" 
           FROM sys.dm_os_memory_clerks 
           WHERE name = 'TokenAndPermUserStore'
      • Önbellek boyutu, gözlemlenen eşik daha büyük ise, aşağıdaki komutu çalıştırın:
        DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')

Referanslar

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
933564Düzeltme: SQL Server 2005'te BIR zaman içinde WPA'ya artırma bellek tüketimini USERSTORE_TOKENPERM önbellek deposu için oluşur.
959823Nasıl yapılır: SQL Server 2005 Service Pack 3 TokenAndPermUserStore önbellek deposunda kotasının özelleştirme

Özellikler

Makale numarası: 927396 - Last Review: 28 Temmuz 2009 Salı - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
Anahtar Kelimeler: 
kbmt kbtshoot kbinfo kbsql2005tsql kbprb KB927396 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:927396

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com