MSSQLSERVER_17890

Şunlar için geçerlidir: SQL Server

Details

Attribute Değer
Ürün Adı SQL Server
Olay Kimliği 17890
Olay Kaynağı MSSQLSERVER
Bileşen SQLEngine
Sembolik Ad SRV_WS_TRIMMED
İleti Metni SQL Server işlem belleğinin önemli bir bölümü disk belleğe alınmıştır. Bu, performans düşüşüyle sonuçlanabilir. Süre: %d saniye. Çalışma seti (KB): %I64d, ayrılmış bellek (KB): %I64d, bellek kullanımı: %d%%.

Explanation

SQL Server hata günlüğünde veya Windows Uygulama olay kaydında aşağıdaki hata mesajıyla karşılaşabilirsiniz.

SQL Server işlem belleğinin önemli bir bölümü disk belleğe alınmıştır. Bu, performans düşüşüyle sonuçlanabilir. Süre: 0 saniye. Çalışma kümesi (KB): 3383250, taahhüdü (KB): 9112480, bellek kullanımı: 37%.

SQL Server'daki sorgu yürütme ve diğer tüm işlemlerde aniden performans düşüşü de fark edebilirsiniz.

Cause

SQL Server, SQL Server süreciyle ilgili çeşitli bellek bilgilerini izler. Bu durumda, sürecin çalışma kümesinin taahhütlü süreç belleğinin 50%'inden az olduğu tespit edilmiştir. Sonuç olarak bu uyarı basılır. Bu uyarının normal nedenleri şunlardır:

  • İşletim sistemi, SQL Server'ın ayrılmış belleğinin büyük bir kısmını sayfa dosyasına gönderir.
  • Bu, diğer uygulamalardan veya işletim sistemi ihtiyaçlarından ani şekilde bellek talebinin artmasından kaynaklanabilir.
  • Bu, bazı cihaz sürücülerinin ihtiyaçları için bitişik bellek tahsisleri talep ettiğinde de olabilir.

Kullanıcı eylemi

Windows işletim sisteminin SQL Server sürecinin tampon havuzu belleğini sayfaya çıkarmasını engelleyebilirsiniz; bufer havuzu için ayrılan belleği fiziksel belleğe kilitleyebilirsiniz. Belleği kilitlersiniz; Lock sayfalarını bellek kullanıcı sağında, SQL Server hizmetinin başlangıç hesabı olarak kullanılan kullanıcı hesabına atamak. Ancak bu çözümü uygulamadan önce, SQL Server belleğinin sayfa olarak ayrılmasına neden olan ve "Sayfaları bellekte kilitle" kullanıcı hakkını atamadan önce Önemli Hususlar bölümlerini inceleyin (SQL Server örneği için

Note

Bellekte Sayfaları Kilitlemek, SQL Server tarafından yönetilen belleğin dışarı sayfalanmamasını sağlar. Ancak, iş parçacığı yığınları, EXE ve DLL görüntüleri, heap bellek, CLR bellek işletim sistemi tarafından sayfalanabilir.

SQL Server 2008 SP1 Cumulative Update 2 ile itibaren, hem SQL Server Standard hem de Enterprise sürümleri kullanıcı hakı için Lock sayfalarını hafızada kullanabilir. Kilitli sayfalar desteği hakkında daha fazla bilgi için KB970070 - SQL Server Standard Edition (64-bit) sistemlerde Kilitli Sayfalar Desteği bölümünü inceleyin.

Lock sayfalarını hafıza kullanıcı hakkında atamak için şu adımları izleyin:

  1. Start'a tıklayın, Çalıştır'a tıklayın, gpedit.msc yazın ve sonra OK'ye tıklayın.
  2. Not: Grup Politikası iletişim kutusu görünür.
  3. Bilgisayar Yapılandırması'nı genişletin, ardından Windows Ayarları'nı genişletin.
  4. Güvenlik Ayarları'nı genişletin, ardından Yerel Politikalar'ı genişletin.
  5. Kullanıcı Hakları Ataması'na tıklayın ve ardından hafızadaki sayfaları kilitlemeye çift tıklayın.
  6. Yerel Güvenlik Politikası Ayarları diyalog kutusunda, Kullanıcı veya Grup ekle seçeneğine tıklayın.
  7. Kullanıcılar veya Gruplar Seç iletişim kutusunda, Sqlservr.exe dosyasını çalıştırma iznine sahip hesabı ekleyin ve ardından Tamam'a tıklayın.
  8. Grup Politikası iletişim kutusunu kapatın.
  9. SQL Server hizmetini yeniden başlatın.

Belleğe Lock sayfalarını atadıktan ve SQL Server servisini yeniden başlattıktan sonra, Windows işletim sistemi artık SQL Server sürecinde buffer havuzu belleğini sayfalamıyor. Ancak, Windows işletim sistemi yine de SQL Server sürecinde tampon havuzu olmayan belleği sayfalayabilir.

SQL Server örneği tarafından kullanıcı hakkının kullanıldığını doğrulamak için şu mesajın SQL Server Hata Günlüğü'nde başlangıçta yazıldığından emin olabilirsiniz: "Buffer havuzu için kilitli sayfalar kullanılıyor"

Bu mesaj yalnızca SQL Server için geçerlidir. ERRORLOG'daki bu mesaj hakkında daha fazla bilgi için aşağıdaki adresi ziyaret edin: Yerel Sistem'de Bellek ayrıcalığı için Lock sayfalarını atamam mı gerekiyor?

Windows işletim sistemi tampon havuzu olmayan belleği sayfaladığında, yine de performans sorunları yaşayabilirsiniz. Ancak, "Açıklama" bölümünde bahsedilen hata mesajları SQL Server hata kaydına girilmemiştir.

SQL Server belleğinin sayfa dışı atılmasına neden olur

Bu soruna neden olabilecek üç geniş sorun kategorisi vardır:

  • Application-Related Sorunlar: Tüm uygulamalar birlikte mevcut fiziksel belleği tükenmiş olup, işletim sistemi yeni uygulama kaynak talepleri için biraz bellek boşaltmak zorundadır. Genellikle buradaki yaklaşım, hangi uygulamaların belleği tükettiğini bulmak ve RAM tükenmesine yol açmadan bunları aralarında dengelemek için gerekli adımları atmaktır.
  • Cihaz Sürücüsü Sorunları: Sürücü bir bellek tahsisi fonksiyonunu yanlış çağırırsa, Cihaz Sürücüleri tüm süreçlerin çalışma seti sayfalanmasına neden olabilir.
  • Operasyon Sistemi Sorunları

Aşağıda, bu kategorilerin her biri hakkında bilgi bulabilirsiniz

"Sayfaları bellekte kilitle" kullanıcı hakkını atamadan önce önemli hususlar

Lock sayfalarını hafızadaki kullanıcı hakkı atamadan önce ek dikkat etmelisiniz. Bu kullanıcı hakkını yanlış yapılandırılmış sistemlere atarsanız, sistem kararsız hale gelebilir veya tüm sistemde performans düşüşü yaşayabilir. Ayrıca, etkinlik kaydına etkinlik kimliği 333 de girilebilir.

Bu sorunlar için Microsoft Müşteri Destek Servisi (CSS) ile iletişime geçerseniz, CSS mühendisleri SQL Server hizmetinin başlangıç hesabı olarak kullanılan kullanıcı hesabı için bu kullanıcı hakkını iptal etmenizi talep edebilir. Bu adım, CSS mühendislerinin SQL Server ve sistemde çalışan diğer uygulamalar için çeşitli seçeneklerin gerekli yapılandırmasında kullanabileceği önemli performans verilerini toplamak için gerekli olabilir. CSS mühendisleri performans verilerini topladıktan sonra, Lock sayfalarını belleğe kilitleme kullanıcı tarafından SQL Server servisinin başlangıç hesabına atamanız mümkündür.

Kullanıcı hakındaki Lock sayfalarını bellekte atamadan önce, sisteme kurulan çeşitli uygulama ve hizmetlerin bellek gereksinimlerini belirlemek için bir Performans İzleyicisi günlüğü tuttuğunuzdan emin olun. Bu uygulamalar arasında SQL Server da bulunmaktadır. Bellek gereksinimlerini belirlemek için aşağıdaki temel bilgileri toplayın:

  • Maksimum sunucu belleği seçeneğini ve en az sunucu belleği seçeneğini doğru ayarladığınızdan emin olun. Bu seçenekler yalnızca SQL Server sürecinin tampon havuzunun bellek gereksinimini yansıtır. Bu seçenekler, SQL Server sürecindeki diğer bileşenler için tahsis edilen belleği içermez. Bu bileşenler şunları içerir:

    • SQL Server işçi iş parçacıkları
    • SQL Server'ın SQL Server sürecinin adres alanında yüklediği çeşitli DLL'ler ve bileşenler
    • Yedek ve yenileme işlemleri
  • DLL'ler ve bileşenler arasında çeşitli OLE DB sağlayıcıları, genişletilmiş depolanmış prosedürler Microsoft sp_OACreate depolanmış prosedür için kullanılan COM nesneleri, bağlı sunucular ve SQL Server CLR bulunur. Bu bileşenler için tahsis edilen bellek, SQL Server sürecinin adres alanındaki tampon havuzu olmayan bölgeye girer. Tüm SQL Server sürecinin kullanabileceği maksimum bellek miktarını ideal olarak belirlemek için, buffer havuzunu kullanmayan bileşenler için tahsis edilen belleği SQL Server sürecinin kullanmasını istediğiniz toplam bellekten çıkarmalısınız. Sonra, kalan değeri kullanarak maksimum sunucu belleği seçeneğini ayarlayabilirsiniz. Maksimum sunucu belleği seçeneğini ve en az sunucu belleği seçeneğini ayarlamadan önce, SQL Server Books Online'da "Bellek seçeneklerini manuel ayarlama" konusunu dikkatlice gözden geçirmelisiniz.

  • Diğer uygulamaların ve Windows işletim sistemi bileşenlerinin bellek gereksinimlerini belirleyin. Uygulamalar diğer SQL Server bileşenlerini içerebilir; örneğin, SQL Server Agent, SQL Server Replication Agents, SQL Server Reporting Services, SQL Server Analysis Services, SQL Server Integration Services ve SQL Server Full Text Search. Yedek ve dosya kopyalama işlemleri yapan uygulamalar çok sayıda bellek kullanabilir. Toplu kopyalama ve dosya IO'su üreten Snapshot Agent gibi işlemleri düşünün. Maksimum sunucu belleği seçeneğinin ve en az sunucu belleği seçeneğinin değerini belirlerken tüm bu uygulamaların bellek gereksinimini göz önünde bulundurmalısınız. Her süreç için Süreç nesnesinin altında Özel Bayt sayacı ve Çalışma Kümesi sayacı kullanarak belirli bir süreç için bellek gereksinimini belirleyebilirsiniz.

  • Varsayılan olarak, hafızadaki Lock sayfaları kullanıcı hakkı zaten yerleşik Yerel Sistem hesabına atanmıştır. Daha fazla bilgi için aşağıdaki Microsoft web sitesini ziyaret edin: Yerel sistem için Bellekte Sayfaları Kilitlemem ayrıcalığını atamam gerekiyor mu?

  • Bir alan içindeki tüm SQL Server işlemleri için küresel olarak Windows kullanıcı hesabı kullanıyorsanız, atanan kullanıcı haklarını Grup Politikası yapılandırması kullanarak belirleyin. 32-bit bir SQL Server süreci bu hesabı başlatma hesabı olarak kullanabilir. Ancak, bu hesap, (AWE) özelliğini Address Windowing Extensions etkinleştirmek için Sayfaları hafızada kilitleme, kullanıcı hakkını gerektirir. Daha fazla bilgi için, SQL Server Books Online'daki "SQL Server'a maksimum bellek sağlama" başlıklı bölüme bakınız.

  • Birden fazla SQL Server örneği için maksimum sunucu belleği seçeneğini ve en az sunucu belleği seçeneğini yapılandırmadan önce, her SQL Server örneği için tampon olmayan havuzun bellek gereksinimlerini göz önünde bulundurun. Sonra, bu seçenekleri her SQL Server örneği için yapılandırın.

İdeal olarak, bu temel bilgileri zirve yükler sırasında toplarsınız. Bu nedenle, çeşitli uygulamalar ve bileşenler için zirve yükü desteklemek için bellek gereksinimlerini belirleyebilirsiniz. Bellek gereksinimleri, sistemde çalışan faaliyetlere ve uygulamalara bağlı olarak sistemden sisteme değişiklik gösterir. Dinamik yönetim görünümünde sunulan bilgileri sorgulayarak sistemin düşük bellek koşullarıyla karşılaşıp karşılaşmadığını anlamak için sys.dm_os_process_memory yapabilirsiniz. Daha fazla bilgi için sys.dm_os_process_memory (Transact-SQL) bölümüne bakınız.

Windows Server 2008 ve R2 sürümlerinde eklenen iyileştirmeler

Windows Server 2008 ve Windows Server 2008 R2, bitişik bellek tahsis mekanizmasını geliştirir. Bu iyileştirme, Windows Server 2008 ve Windows Server 2008 R2'nin yeni bellek talepleri geldiğinde çalışan uygulama setinin sayfalanmasının etkilerini bir ölçüde azaltmasını sağlar.

Aşağıda, Microsoft'un "Windows'ta Bellek Yönetiminde İlerlemeler" beyaz kitabındaki iyileştirmelerin açıklaması yer almaktadır:

Windows Server 2008'de, fiziksel olarak bitişik bellek tahsisi büyük ölçüde artırılmıştır. Bitişik bellek tahsis etme talepleri başarılı olma olasılığı çok daha yüksektir çünkü bellek yöneticisi artık sayfaları dinamik olarak değiştirir, genellikle çalışma setini kesmeden veya I/O işlemleri yapmadan. Ayrıca, çekirdek yığınları ve dosya sistemi meta veri sayfaları gibi birçok sayfa türü artık değiştirilmek üzere adaydır. Sonuç olarak, her zaman daha bitişik hafıza genellikle mevcuttur. Ayrıca, bu tür tahsislerin elde edilmesi maliyeti büyük ölçüde azalır.

Daha fazla bilgi için SQL Server Çalışma Seti Trim Problemleri'ne bakabilirsiniz.

Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği hakkında açık veya zımni hiçbir garanti vermez.