SQL Server'da bellek kullanımını izlemek için DBCC MEMORYSTATUS komutunu kullanın
Bu makalede, bellek kullanımını izlemek için komutunun nasıl kullanılacağı DBCC MEMORYSTATUS
açıklanmaktadır.
Özgün ürün sürümü: SQL Server
Özgün KB numarası: 907877
Giriş
komutu geçerli DBCC MEMORYSTATUS
bellek durumunun microsoft SQL Server ve işletim sisteminin anlık görüntüsünü sağlar. SQL Server'da bellek dağıtımının ve kullanımının en ayrıntılı çıktılarından birini sağlar. SQL Server'daki bellek tüketimi sorunlarını gidermek veya belirli yetersiz bellek hatalarını gidermek için çıktıyı kullanabilirsiniz. Birçok yetersiz bellek hatası, bu çıkışı hata günlüğünde otomatik olarak oluşturur. Yetersiz bellek durumuyla ilgili bir hatayla karşılaşırsanız komutunu çalıştırabilir DBCC MEMORYSTATUS
ve Microsoft Desteği iletişim kurduğunuzda çıkışı sağlayabilirsiniz.
Komutun DBCC MEMORYSTATUS
çıktısı bellek yönetimi, bellek kullanımı, toplama bellek bilgileri, arabellek havuzu bilgileri ve yordam önbelleği bilgileri için bölümler içerir. Ayrıca genel bellek nesnelerinin, sorgu bellek nesnelerinin, iyileştirmenin ve bellek aracılarının çıktısını açıklar.
Not
Performans İzleyicisi (PerfMon) ve Görev Yöneticisi,Bellekteki Kilitli Sayfalar seçeneği etkindir. Adres Pencereleme Uzantıları (AWE) API bellek kullanımını gösteren performans sayaçları yoktur.
Önemli
Komutun DBCC MEMORYSTATUS
Microsoft Desteği için bir tanılama aracı olması amaçlanmıştır. Çıktının biçimi ve sağlanan ayrıntı düzeyi, hizmet paketleri ve ürün sürümleri arasında değiştirilebilir. Komutun DBCC MEMORYSTATUS
sağladığı işlevsellik, sonraki ürün sürümlerinde farklı bir mekanizmayla değiştirilebilir. Bu nedenle, sonraki ürün sürümlerinde bu komut artık çalışmayabilir. Bu komut değiştirilmeden veya kaldırılmadan önce ek uyarı sağlanamaz. Bu nedenle, bu komutu kullanan uygulamalar uyarı olmadan bozulabilir.
Komutun DBCC MEMORYSTATUS
çıktısı SQL Server'ın önceki sürümlerinden değişti. Şu anda, önceki ürün sürümlerinde kullanılamayan birkaç tablo içerir.
DBCC MEMORYSTATUS'u kullanma
DBCC MEMORYSTATUS
genellikle SQL Server tarafından bildirilen yetersiz bellek sorunlarını araştırmak için kullanılır. SQL Server işleminin dışından gelen dış bellek baskısı veya işlemden kaynaklanan iç baskı varsa düşük bellek oluşabilir. İç baskı SQL Server veritabanı altyapısından veya işlem içinde çalışan diğer bileşenlerden (bağlı sunucular, XP'ler, SQLCLR, yetkisiz erişim koruması veya virüsten koruma yazılımı gibi) kaynaklanabilir. Bellek baskısını giderme hakkında daha fazla bilgi için bkz . SQL Server'da yetersiz bellek veya yetersiz bellek sorunlarını giderme.
Komutu kullanmaya ve sonuçlarını yorumlamaya yönelik genel adımlar aşağıdadır. Belirli senaryolar, çıkışa biraz farklı yaklaşmanızı gerektirebilir, ancak genel yaklaşım burada özetlenmiştir.
DBCC MEMORYSTATUS
komutunu çalıştırın.- Dış bellek baskısı olup olmadığını belirlemek için İşlem/Sistem Sayıları ve Bellek Yöneticisi bölümlerini kullanın (örneğin, bilgisayarın fiziksel veya sanal belleği azdır veya SQL Server çalışma kümesi sayfalanır). Ayrıca, SQL Server veritabanı altyapısının sistemdeki genel belleğe kıyasla ne kadar bellek ayırdığını belirlemek için bu bölümleri kullanın.
- Harici bellek baskısı olduğunu belirlerseniz, diğer uygulamalar ve işletim sistemi tarafından bellek kullanımını azaltmayı deneyin veya daha fazla RAM ekleyin.
- SQL Server altyapısının belleğin çoğunu (iç bellek baskısı) kullandığını belirlerseniz, bu bellek kullanımına en büyük katkıda bulunan bileşenlerin hangi bileşenleri (Bellek katibi, Cachestore, UserStore veya Objectstore) belirlemek için öğesinin kalan bölümlerini
DBCC MEMORYSTATUS
kullanabilirsiniz. - Her bileşeni inceleyin:
MEMORYCLEARK
,CACHESTORE
,USERSTORE
veOBJECTSTORE
. Bileşenin SQL Server içinde ne kadar bellek tüketeceğini belirlemek için Ayrılan Sayfalar değerini inceleyin. Çoğu veritabanı altyapısı bellek bileşeninin kısa bir açıklaması için Bellek Katibi türleri tablosuna bakın.- Nadir durumlarda ayırma, SQL Server bellek yöneticisinden geçmek yerine doğrudan bir sanal ayırmadır. Bu gibi durumlarda, Ayrılan Sayfalar yerine belirli bir bileşen altında VM İşlendi değerini inceleyin.
- Bilgisayarınız NUMA kullanıyorsa, düğüm başına bazı bellek bileşenleri ayrılmıştır. Örneğin, ,
OBJECTSTORE_LOCK_MANAGER (node 1)
,OBJECTSTORE_LOCK_MANAGER (node 2)
vb.OBJECTSTORE_LOCK_MANAGER (node 0)
ve son olarak içindekiOBJECTSTORE_LOCK_MANAGER (Total)
her düğümün toplam değerini gözlemleyebilirsiniz. Başlamak için en iyi yer, toplam değeri raporlayan ve gerektiğinde dökümü inceleyen bölümdür. Daha fazla bilgi için bkz . NUMA düğümleriyle bellek kullanımı.
- bazı bölümleri belirli bellek ayırıcıları
DBCC MEMORYSTATUS
hakkında ayrıntılı ve özel bilgiler sağlar. Ek ayrıntıları anlamak ve bellek katibi içindeki ayırmaların daha ayrıntılı dökümünü görmek için bu bölümleri kullanabilirsiniz. Bu tür bölümlere örnek olarak Arabellek Havuzu (veri ve dizin önbelleği), Yordam önbelleği/plan önbelleği, Sorgu Bellek Nesneleri (bellek izinleri), İyileştirme Kuyruğu ve küçük ve orta ve büyük ağ geçitleri (iyileştirici bellek) verilebilir. SQL Server'daki belirli bir bellek bileşeninin bellek baskısının kaynağı olduğunu zaten biliyorsanız, doğrudan bu bölüme gitmeyi tercih edebilirsiniz. Örneğin, bellek hatalarına neden olan yüksek miktarda bellek izni kullanımı olduğunu başka bir şekilde oluşturduysanız, Bellek nesnelerini sorgulama bölümünü gözden geçirebilirsiniz.
Bu makalenin geri kalanında, bellek sorunlarını daha etkili bir şekilde tanılamanıza olanak tanıyan çıkıştaki DBCC MEMORYSTATUS
bazı yararlı sayaçlar açıklanmaktadır.
İşlem/Sistem Sayıları
Bu bölüm, tablo biçiminde bir örnek çıkış sağlar ve değerlerini açıklar.
Process/System Counts Value
------------------------------------ ------------
Available Physical Memory 5060247552
Available Virtual Memory 140710048014336
Available Paging File 7066804224
Working Set 430026752
Percent of Committed Memory in WS 100
Page Faults 151138
System physical memory high 1
System physical memory low 0
Process physical memory low 0
Process virtual memory low 0
Aşağıdaki listede değerler ve bunların açıklamaları ele alınmaktadır:
- Kullanılabilir Fiziksel Bellek: Bu değer bilgisayardaki toplam boş bellek miktarını gösterir. Örnekte boş bellek 5.060.247.552 bayttır.
- Kullanılabilir Sanal Bellek: Bu değer, SQL Server işlemi için toplam boş sanal bellek miktarının 140.710.048.014.336 bayt (128 TB) olduğunu gösterir. Daha fazla bilgi için bkz . Bellek ve Adres Alanı Sınırları.
- Kullanılabilir Disk Belleği Dosyası: Bu değer boş disk belleği dosyası alanını gösterir. Örnekte değer 7.066.804.224 bayttır.
- Çalışma Kümesi: Bu değer, SQL Server işleminin RAM'de sahip olduğu toplam sanal bellek miktarını (disk belleğine alınmaz) 430.026.752 bayt olarak gösterir.
- WS'de İşlenen Bellek Yüzdesi: Bu değer, AYRıLAN SQL Server sanal belleğinin ram'de hangi yüzdesinde yer aldığını (veya Çalışma Kümesi olduğunu) gösterir. Yüzde 100 değeri, işlenen belleğin tamamının RAM'de depolandığını ve yüzde 0'ının disk belleğine alındığını gösterir.
- Sayfa Hataları: Bu değer, SQL Server için genel olarak sabit ve yumuşak sayfa hatalarının miktarını gösterir. Örnekte değer 151.138'dir.
Kalan dört değer ikili veya boole değeridir.
- Sistem fiziksel belleğinin yüksek değeri 1, SQL Server'ın bilgisayardaki kullanılabilir fiziksel belleğin yüksek olduğunu göz önünde bulundurduğunu gösterir. Bu nedenle Sistem fiziksel belleğinin değeri 0'dır ve bu da düşük bellek olmadığı anlamına gelir. Benzer mantık, Fiziksel belleği düşük işleme ve Sanal belleği işleme düşüklüğüne uygulanır; burada 0 yanlış, 1 ise doğru olduğu anlamına gelir. Bu örnekte, her iki değer de 0'dır; bu da SQL Server işlemi için bol miktarda fiziksel ve sanal bellek olduğu anlamına gelir.
Bellek Yöneticisi
Bu bölüm, SQL Server tarafından genel bellek tüketimini gösteren örnek bir Bellek Yöneticisi çıkışı sağlar.
Memory Manager KB
-------------------------- --------------------
VM Reserved 36228032
VM Committed 326188
Locked Pages Allocated 0
Large Pages Allocated 0
Emergency Memory 1024
Emergency Memory In Use 16
Target Committed 14210416
Current Committed 326192
Pages Allocated 161904
Pages Reserved 0
Pages Free 5056
Pages In Use 286928
Page Alloc Potential 15650992
NUMA Growth Phase 0
Last OOM Factor 0
Last OS Error 0
Aşağıdaki listede çıktıdaki değerler ve bunların açıklamaları ele alınmaktadır:
VM Ayrılmış: Bu değer, SQL Server'ın ayrılmış olduğu genel sanal adres alanı (VAS) veya sanal bellek (VM) miktarını gösterir. Sanal bellek rezervasyonu aslında fiziksel bellek kullanmaz; yalnızca sanal adreslerin büyük VAS'nin içinden ayrılmış olduğu anlamına gelir. Daha fazla bilgi için bkz . VirtualAlloc() MEM_RESERVE.
VM İşlendi: Bu değer, SQL Server'ın işlediği toplam sanal bellek miktarını (KB cinsinden) gösterir. Bu, işlem tarafından kullanılan belleğin fiziksel bellek tarafından veya sayfa dosyası tarafından daha az sıklıkta yedeklendiği anlamına gelir. Önceden ayrılmış bellek adresleri artık fiziksel bir depolama tarafından desteklenir; yani ayrılmıştır. Bellekteki Kilitli Sayfalar etkinleştirilirse, SQL Server bellek ayırmak için alternatif bir yöntem kullanır, AWE API'sini kullanır ve belleğin çoğu bu sayaçta yansıtılamaz. Bu ayırmalar için bkz. [Ayrılmış Kilitli Sayfalar](#Locked Ayrılan Sayfalar). Daha fazla bilgi için bkz . VirtualAlloc() MEM_COMMIT.
Ayrılan Sayfalar: Bu değer, SQL Server veritabanı altyapısı tarafından ayrılan toplam bellek sayfası sayısını gösterir.
Ayrılmış Kilitli Sayfalar: Bu değer, SQL Server'ın AWE API'sini kullanarak fiziksel RAM'de ayırdığı ve kilitlediği bellek miktarını kilobayt (KB) cinsinden temsil eder. SQL Server'ın etkin olarak ne kadar bellek kullandığını gösterir ve performansı iyileştirmek için bellekte tutulmasını istedi. SQL Server, bellekteki sayfaları kilitleyerek kritik veritabanı sayfalarının kullanıma hazır olmasını ve diske değiştirilmemesini sağlar. Daha fazla bilgi için bkz . Windows Uzantıları (AWE) belleğini adresle. Sıfır değeri, "bellekteki kilitli sayfalar" özelliğinin şu anda devre dışı olduğunu ve SQL Server'ın bunun yerine sanal bellek kullandığını gösterir. Böyle bir durumda VM Kabul Edilen değeri SQL Server'a ayrılan belleği temsil eder.
Ayrılan Büyük Sayfalar: Bu değer, BÜYÜK Sayfalar kullanılarak SQL Server tarafından ayrılan bellek miktarını temsil eder. Büyük Sayfalar, işletim sistemi tarafından sağlanan bir bellek yönetimi özelliğidir. Bu özellik standart sayfa boyutunu (genellikle 4 KB) kullanmak yerine 2 MB veya 4 MB gibi daha büyük bir sayfa boyutu kullanır. Sıfır değeri özelliğin etkinleştirilmediğini gösterir. Daha fazla bilgi için bkz . Virtual Alloc() MEM_LARGE_PAGES.
Hedef İşlendi: Bu değer, SQL Server'ın işlemeyi hedeflediği hedef bellek miktarını gösterir; son iş yüküne bağlı olarak SQL Server'ın kullanabileceği ideal bellek miktarı.
Current Committed: Bu değer, SQL Server bellek yöneticisinin şu anda işlediği (fiziksel depoda ayrılmış) işletim sisteminin bellek miktarını (KB cinsinden) gösterir. Bu değer "bellekte kilitli sayfalar" (AWE API'si) veya sanal bellek içerir. Bu nedenle, bu değer Ayrılmış VM'ye veya Ayrılmış Kilitli Sayfalara yakın veya aynı değerdir. SQL Server AWE API'sini kullandığında, işletim sistemi Sanal Bellek Yöneticisi tarafından bazı belleklerin ayrılmaya devam ettiğini ve VM İşlendi olarak yansıtılacağını unutmayın.
NUMA Büyüme Aşaması: Bu değer, SQL Server'ın şu anda NUMA büyüme aşamasında olup olmadığını gösterir. Makinede NUMA düğümleri varken bu ilk bellek artışını hakkında daha fazla bilgi için bkz . How It Works: SQL Server (NUMA Local, Foreign and Away Memory Blocks).
Son İşletim Sistemi Hatası: Bu değer, sistemde bellek baskısı olduğunda oluşan son işletim sistemi hatasını gösterir. SQL Server bu işletim sistemi hatasını kaydeder ve çıkışta gösterir. İşletim sistemi hatalarının tam listesi için bkz . Sistem Hata Kodları.
NUMA düğümleriyle bellek kullanımı
Bellek Yöneticisi bölümünden sonra her bir bellek düğümü için bellek kullanımı özeti yer alır. Tekdüzen olmayan bellek erişimi (NUMA) etkin bir sistemde, her donanım NUMA düğümü için karşılık gelen bir bellek düğümü girişi vardır. SMP sisteminde tek bir bellek düğümü girişi vardır. Aynı desen diğer bellek bölümlerine de uygulanır.
Memory node Id = 0 KB
----------------------- -----------
VM Reserved 21289792
VM Committed 272808
Locked Pages Allocated 0
Pages Allocated 168904
Pages Free 3040
Target Committed 6664712
Current Committed 272808
Foreign Committed 0
Away Committed 0
Taken Away Committed 0
Not
- Değer
Memory node Id
donanım düğümü kimliğine karşılık olmayabilir. - Bu değerler, bu NUMA düğümünde çalışan iş parçacıkları tarafından ayrılan belleği gösterir. Bu değerler NUMA düğümü için yerel bellek değildir.
- Tüm bellek düğümlerindeki VM Ayrılmış değerlerinin ve VM İşlendi değerlerinin toplamları, Bellek Yöneticisi tablosunda bildirilen karşılık gelen değerlerden biraz daha az olacaktır.
- NUMA düğümü 64 (düğüm 64) DAC için ayrılmıştır ve bu bağlantı sınırlı bellek kaynakları kullandığından bellek araştırmasına nadiren ilgi gösterir. Ayrılmış yönetici bağlantısı (DAC) hakkında daha fazla bilgi için bkz . Veritabanı yöneticileri için tanılama bağlantısı.
Aşağıdaki listede çıkış tablosundaki değerler ve bunların açıklamaları ele alınmaktadır:
- VM Ayrılmış: Bu düğümde çalışan iş parçacıkları tarafından ayrılmış sanal adres alanını (VAS) gösterir.
- Vm Committed: Bu düğümde çalışan iş parçacıkları tarafından işlenen VAS'yi gösterir.
Bellek toplama
Aşağıdaki tabloda her bir katip türü ve NUMA düğümü için toplam bellek bilgileri yer alır. NUMA özellikli bir sistem için aşağıdakine benzer bir çıkış görebilirsiniz:
MEMORYCLERK_SQLGENERAL (node 0) KB
------------------------------ --------------------
VM Reserved 0
VM Committed 0
Locked Pages Allocated 0
SM Reserved 0
SM Commited 0
Pages Allocated 5416
MEMORYCLERK_SQLGENERAL (node 1) KB
------------------------------- --------------------
VM Reserved 0
VM Committed 0
Locked Pages Allocated 0
SM Reserved 0
SM Commited 0
Pages Allocated 136
MEMORYCLERK_SQLGENERAL (Total) KB
------------------------------- --------------------
VM Reserved 0
VM Committed 0
Locked Pages Allocated 0
SM Reserved 0
SM Commited 0
Pages Allocated 5552
değeri Pages Allocated
, belirli bir bileşen (bellek katibi, kullanıcı deposu, nesne deposu veya önbellek deposu) tarafından ayrılan bellek sayfalarının toplam sayısını gösterir.
Not
Bu düğüm kimlikleri, SQL Server çalıştıran bilgisayarın NUMA düğüm yapılandırmasına karşılık gelir. Düğüm kimlikleri, donanım NUMA düğümlerinin üzerinde veya bir SMP sisteminin üzerinde tanımlanan olası yazılım NUMA düğümlerini içerir. Her düğüm için düğüm kimlikleri ile CPU'lar arasındaki eşlemeyi bulmak için bkz. Bilgi Olay Kimliği 17152. Bu olay, SQL Server'ı başlattığınızda Olay Görüntüleyicisi Uygulama günlüğüne kaydedilir.
Bir SMP sistemi için, dac tarafından kullanılan düğüm = 64 değerini saymak yerine her katip türü için yalnızca bir tablo görürsünüz. Bu tablo aşağıdaki örneğe benzer.
MEMORYCLERK_SQLGENERAL (Total) KB
--------------------------------- --------------------
VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
Pages Allocated 2928
Bu tablolardaki diğer bilgiler paylaşılan bellekle ilgilidir:
- SM Ayrılmış: Bellek eşlemeli dosyalar API'sini kullanan bu türdeki tüm katipler tarafından ayrılan VAS'yi gösterir. Bu API paylaşılan bellek olarak da bilinir.
- İşlenen SM: Bellekle eşlenen dosyalar API'sini kullanan bu türdeki tüm katipler tarafından işlenen VAS'yi gösterir.
Alternatif bir yöntem olarak, sys.dm_os_memory_clerks dinamik yönetim görünümünü (DMV) kullanarak tüm bellek düğümleri için her bir katip türü için özet bilgileri alabilirsiniz. Bunu yapmak için aşağıdaki sorguyu çalıştırın:
SELECT
TYPE,
SUM(virtual_memory_reserved_kb) AS [VM Reserved],
SUM(virtual_memory_committed_kb) AS [VM Committed],
SUM(awe_allocated_kb) AS [AWE Allocated],
SUM(shared_memory_reserved_kb) AS [SM Reserved],
SUM(shared_memory_committed_kb) AS [SM Committed],
-- SUM(multi_pages_kb) AS [MultiPage Allocator], /*Applies to: SQL Server 2008 (10.0.x) through SQL Server 2008 R2 (10.50.x).*/
-- SUM(single_pages_kb) AS [SinlgePage Allocator], /*Applies to: SQL Server 2008 (10.0.x) through SQL Server 2008 R2 (10.50.x).*/
SUM(pages_kb) AS [Page Allocated] /*Applies to: SQL Server 2012 (11. x) and later.*/
FROM sys.dm_os_memory_clerks
GROUP BY TYPE
Arabellek havuzu ayrıntıları
Bu, arabellek havuzundaki veri önbelleği olarak da bilinen farklı durum verilerinin ve dizin sayfalarının dökümünü sağlayan önemli bir bölümdür. Aşağıdaki çıkış tablosunda arabellek havuzuyla ilgili ayrıntılar ve diğer bilgiler listelemektedir.
Buffer Pool Pages
------------------------------------------------- ---------
Database 5404
Simulated 0
Target 16384000
Dirty 298
In IO 0
Latched 0
IO error 125
In Internal Pool 0
Page Life Expectancy 3965
Aşağıdaki listede çıktıdaki değerler ve bunların açıklamaları ele alınmaktadır:
- Veritabanı: Veritabanı içeriği (veri ve dizin sayfaları) içeren arabelleklerin (sayfalar) sayısını gösterir.
- Hedef: Arabellek havuzunun hedef boyutunu gösterir (arabellek sayısı). Bu makalenin önceki bölümlerinde yer alan Target Committed memory bölümüne bakın.
- Kirli: Veritabanı içeriği olan ve değiştirilmiş sayfaları gösterir. Bu arabellekler genellikle denetim noktası işlemi tarafından diske boşaltılması gereken değişiklikler içerir.
- GÇ'de: Bekleyen G/Ç işlemini bekleyen arabellekleri gösterir. Bu, bu sayfaların içeriğinin depolama alanına yazıldığı veya depolama alanından okunduğu anlamına gelir.
- Mandallı: Mandallı arabellekleri gösterir. Bir iş parçacığı bir sayfanın içeriğini okurken veya değiştirirken arabellek mandallanır. Sayfa diskten okunurken veya diske yazılırken arabellek de kilitlenir. Mandal, okuma veya değiştirme sırasında sayfadaki verilerin fiziksel tutarlılığını korumak için kullanılır. Buna karşılık, mantıksal ve işlem tutarlılığını korumak için bir kilit kullanılır.
- GÇ hatası: G/Ç ile ilgili işletim sistemi hatalarıyla karşılaşmış olabilecek arabelleklerin sayısını gösterir (bu bir soruna işaret etmez).
- Sayfa Ömrü Beklentisi: Bu sayaç, en eski sayfanın arabellek havuzunda kaldığı süreyi saniye olarak ölçer.
DMV kullanarak sys.dm_os_buffer_descriptors
veritabanı sayfaları için arabellek havuzu hakkında ayrıntılı bilgi edinebilirsiniz. Ancak BU DMV'yi dikkatli kullanın çünkü SQL Server tabanlı sunucunuzda çok fazla RAM'in kullanımına izin veriliyorsa uzun süre çalışabilir ve çok büyük bir çıkış üretebilir.
Plan önbelleği
Bu bölümde, daha önce yordam önbelleği olarak adlandırılan plan önbelleği açıklanmıştır.
Procedure Cache Value
----------------------- -----------
TotalProcs 4
TotalPages 25
InUsePages 0
Aşağıdaki listede çıktıdaki değerler ve bunların açıklamaları ele alınmaktadır:
TotalProcs: Bu değer, şu anda yordam önbelleğinde bulunan önbelleğe alınmış toplam nesneleri gösterir. Bu değer, DMV'deki girdi sayısıyla
sys.dm_exec_cached_plans
eşleşir.Not
Bu bilgilerin dinamik yapısı nedeniyle eşleşme tam olarak doğru olmayabilir. Tetikleyiciler, yordamlar ve geçici nesneler gibi önbelleğe alınmış nesnelerin türü hakkında ayrıntılı bilgi için SQL Server: Plan Cache nesnesini ve
sys.dm_exec_cached_plans
DMV'yi izlemek için PerfMon kullanabilirsiniz.TotalPages: Plan veya yordam önbelleğinde önbelleğe alınan tüm nesneleri depolamak için kullanılan toplu sayfaları gösterir. KB cinsinden ifade edilen değeri almak için bu sayıyı 8 KB ile çarpabilirsiniz.
InUsePages: Şu anda etkin olan yordamlara ait yordam önbelleğindeki sayfaları gösterir. Bu sayfalar atılamaz.
Genel Bellek Nesneleri
Bu bölüm, çeşitli genel bellek nesneleri ve kullandıkları bellek miktarı hakkında bilgi içerir.
Global Memory Objects Buffers
---------------------------------- ----------------
Resource 576
Locks 96
XDES 61
DirtyPageTracking 52
SETLS 8
SubpDesc Allocators 8
SE SchemaManager 139
SE Column Metadata Cache 159
SE Column Metadata Cache Store 2
SE Column Store Metadata Cache 8
SQLCache 224
Replication 2
ServerGlobal 1509
XP Global 2
SortTables 3
Aşağıdaki listede çıktıdaki değerler ve bunların açıklamaları ele alınmaktadır:
- Kaynak: Resource nesnesinin kullandığı belleği gösterir. Depolama altyapısı tarafından sunucu genelindeki çeşitli yapılar için kullanılır.
- Kilitler: Kilit Yöneticisi tarafından kullanılan belleği gösterir.
- XDES: Transaction Manager tarafından kullanılan belleği gösterir.
- SETLS: İş parçacığı yerel depolama (TLS) kullanan depolama altyapısına özgü iş parçacığı başına yapısını ayırmak için kullanılan belleği gösterir. Daha fazla bilgi için bkz . İş Parçacığı Yerel Depolama.
- SubpDesc Ayırıcıları: Paralel sorgular, yedekleme işlemleri, geri yükleme işlemleri, veritabanı işlemleri, dosya işlemleri, yansıtma ve zaman uyumsuz imleçler için alt işlemleri yönetmek için kullanılan belleği gösterir. Bu alt işlemler "paralel işlemler" olarak da bilinir.
- SE SchemaManager: Schema Manager'ın Depolama Altyapısına özgü meta verileri depolamak için kullandığı belleği gösterir.
- SQLCache: Geçici ve hazırlanmış deyimlerin metnini kaydetmek için kullanılan belleği gösterir.
- Çoğaltma: Sunucunun iç çoğaltma alt sistemleri için kullandığı belleği gösterir.
- ServerGlobal: Birkaç alt sistem tarafından genel olarak kullanılan genel sunucu bellek nesnesini gösterir.
- XP Genel: Genişletilmiş saklı yordamlar tarafından kullanılan belleği gösterir.
- SortTables: Sıralama tabloları tarafından kullanılan belleği gösterir.
Sorgu bellek nesneleri
Bu bölümde Sorgu Belleği verme bilgileri açıklanmaktadır. Ayrıca sorgu belleği kullanımının anlık görüntüsünü içerir. Sorgu belleği "çalışma alanı belleği" olarak da bilinir.
Query Memory Objects (default) Value
---------------------------------------- -------
Grants 0
Waiting 0
Available 436307
Current Max 436307
Future Max 436307
Physical Max 436307
Next Request 0
Waiting For 0
Cost 0
Timeout 0
Wait Time 0
Bir sorgunun boyutu ve maliyeti "küçük" sorgu belleği eşiklerini karşılarsa, sorgu küçük bir sorgu kuyruğuna alınır. Bu davranış, daha küçük sorguların zaten kuyrukta olan büyük sorguların arkasında gecikmesini önler.
Aşağıdaki listede çıktıdaki değerler ve bunların açıklamaları ele alınmaktadır:
- İzinler: Bellek izni olan çalışan sorguların sayısını gösterir.
- Bekleme: Bellek atamalarını almak için bekleyen sorguların sayısını gösterir.
- Kullanılabilir: Karma çalışma alanı ve sıralama çalışma alanı olarak kullanılmak üzere sorgular tarafından kullanılabilen arabellekleri gösterir. Değer
Available
düzenli aralıklarla güncelleştirilir. - Sonraki İstek: Bir sonraki bekleyen sorgunun bellek isteği boyutunu arabelleklerde gösterir.
- Bekleniyor: Sonraki İstek değerinin başvurduğu sorguyu çalıştırmak için kullanılabilir olması gereken bellek miktarını gösterir. Bekleniyor değeri, bir oda faktörüyle çarpılan değerdir
Next Request
. Bu değer, bir sonraki bekleyen sorgu çalıştırıldığında belirli bir bellek miktarının kullanılabilir olacağını etkili bir şekilde garanti eder. - Maliyet: Sonraki bekleme sorgusunun maliyetini gösterir.
- Zaman aşımı: Sonraki bekleyen sorgunun zaman aşımını saniye olarak gösterir.
- Bekleme Süresi: Sonraki bekleme sorgusu kuyruğa yerleştirildiğinden geçen süreyi milisaniye cinsinden gösterir.
- Geçerli En Yüksek: Sorgu yürütme için genel bellek sınırını gösterir. Bu değer hem büyük sorgu kuyruğu hem de küçük sorgu kuyruğu için birleşik sınırdır.
Bellek vermelerin ne olduğu, bu değerlerin ne anlama gelenleri ve bellek verme sorunlarını giderme hakkında daha fazla bilgi için bkz . SQL Server'da bellek atamalarının neden olduğu yavaş performans veya düşük bellek sorunlarını giderme.
İyileştirme belleği
Sorgular derleme için sunucuya gönderilir. Derleme işlemi ayrıştırma, cebirleme ve iyileştirmeyi içerir. Sorgular, derleme işlemi sırasında her sorgunun tükettiği belleğe göre sınıflandırılır.
Not
Bu tutar, sorguyu çalıştırmak için gereken belleği içermez.
Bir sorgu başlatıldığında, kaç sorgu derlenebilir diye bir sınır yoktur. Bellek tüketimi arttıkça ve eşiğe ulaştığında, sorgunun devam etmek için bir ağ geçidi geçirmesi gerekir. Her ağ geçidinden sonra eşzamanlı olarak derlenen sorguların sayısı giderek azalır. Her ağ geçidinin boyutu platforma ve yüke bağlıdır. Ölçeklenebilirliği ve aktarım hızını en üst düzeye çıkarmak için ağ geçidi boyutları seçilir.
Sorgu bir ağ geçidi geçiremezse bellek kullanılabilir duruma gelene kadar bekler veya zaman aşımı hatası döndürür (Hata 8628). Ayrıca, sorguyu iptal ederseniz veya kilitlenme algılanırsa sorgu bir ağ geçidi alamayabilir. Sorgu birkaç ağ geçidi geçirirse, derleme işlemi tamamlanana kadar daha küçük ağ geçitlerini serbest bırakmaz.
Bu davranış, aynı anda yalnızca birkaç yoğun bellek derlemesi oluşmasını sağlar. Ayrıca, bu davranış daha küçük sorgular için aktarım hızını en üst düzeye çıkarır.
Sonraki tablo, sorgu iyileştirme için yetersiz bellek nedeniyle oluşan bellek beklemelerinin ayrıntılarını sağlar. İç bellek, sistem sorguları tarafından kullanılan iyileştirici belleği hesaplarken, kullanıcı veya uygulama sorguları için varsayılan en iyi duruma getirme belleğini raporlar.
Optimization Queue (internal) Value
---------------------------------- ----------------
Overall Memory 4013162496
Target Memory 3673882624
Last Notification 1
Timeout 6
Early Termination Factor 5
Small Gateway (internal) Value
---------------------------------- ----------------
Configured Units 32
Available Units 32
Acquires 0
Waiters 0
Threshold Factor 380000
Threshold 380000
Medium Gateway (internal) Value
---------------------------------- ----------------
Configured Units 8
Available Units 8
Acquires 0
Waiters 0
Threshold Factor 12
Threshold -1
Big Gateway (internal) Value
---------------------------------- ----------------
Configured Units 1
Available Units 1
Acquires 0
Waiters 0
Threshold Factor 8
Threshold -1
Optimization Queue (default) Value
---------------------------------- ----------------
Overall Memory 4013162496
Target Memory 3542319104
Last Notification 1
Timeout 6
Early Termination Factor 5
Small Gateway (default) Value
---------------------------------- ----------------
Configured Units 32
Available Units 32
Acquires 0
Waiters 0
Threshold Factor 380000
Threshold 380000
Medium Gateway (default) Value
---------------------------------- ----------------
Configured Units 8
Available Units 8
Acquires 0
Waiters 2
Threshold Factor 12
Threshold -1
Big Gateway (default) Value
---------------------------------- ----------------
Configured Units 1
Available Units 1
Acquires 0
Waiters 0
Threshold Factor 8
Threshold -1
Bu değerlerden bazılarının açıklaması aşağıdadır:
- Yapılandırılan Birimler - Ağ geçidinden derleme belleği kullanabilen eşzamanlı sorgu sayısını gösterir. Örnekte, 32 eşzamanlı sorgu Küçük ağ geçidinden (varsayılan), Orta ağ geçidinden sekiz eşzamanlı sorgudan ve Büyük ağ geçidinden bir sorgudan bellek kullanıyor olabilir. Daha önce de belirtildiği gibi, bir sorgu küçük ağ geçidinin ayıracından daha fazla belleğe ihtiyaç duyarsa Orta ağ geçidine gider ve bu sorgu her iki ağ geçidinde de bir birim almış olarak sayılır. Sorgunun ihtiyaç duyduğu derleme belleği miktarı ne kadar büyük olursa, ağ geçidinde o kadar az yapılandırılmış birim olur.
- Kullanılabilir Birimler - Yapılandırılan birimler listesinden derlenecek eşzamanlı sorgular için kullanılabilir yuva veya birim sayısını gösterir. Örneğin, 32 birim kullanılabilir ancak şu anda üç sorgu derleme belleği kullanıyorsa
Available Units
, 32 eksi 3 veya 29 birim olabilir. - Almalar - Derlenecek sorgular tarafından alınan birim veya yuva sayısını gösterir. Şu anda ağ geçidinden bellek kullanan üç sorgu varsa, Alma sayısı = 3 olur.
- Waiters - Bir ağ geçidinde derleme belleği için kaç sorgu beklediğini gösterir. Bir ağ geçidindeki tüm birimler tükenirse Waiters değeri, bekleyen sorguların sayısını gösteren sıfır olmayan bir değerdir.
- Eşik - Sorguların belleğini nereden aldığını veya hangi ağ geçidinde kaldığını belirleyen ağ geçidi bellek sınırını gösterir. Sorgunun eşik değerinden fazlasına ihtiyacı yoksa küçük ağ geçidinde kalır (sorgu her zaman küçük ağ geçidiyle başlar). Derleme için daha fazla belleğe ihtiyaç duyarsa ortadakine gider ve bu eşik hala yetersizse büyük ağ geçidine gider. Küçük ağ geçidi için eşik faktörü x64 platformu için 380.000 bayttır (gelecek sürümlerde değiştirilebilir).
- Eşik Faktörü: Her ağ geçidi için eşik değerini belirler. Eşik önceden tanımlanmış olduğundan küçük ağ geçidi için faktör de aynı değere ayarlanır. Orta ve büyük ağ geçidinin eşik faktörleri, toplam iyileştirici belleğin (iyileştirme kuyruğundaki Genel Bellek) kesirleridir ve sırasıyla 12 ve 8 olarak ayarlanır. Bu nedenle, diğer SQL Server bellek tüketicileri bellek gerektirdiğinden genel bellek ayarlanırsa eşik faktörleri de eşiklerin dinamik olarak ayarlanmasına neden olabilir.
- Zaman aşımı: Sorgunun iyileştirici bellek için ne kadar süre beklediğini tanımlayan değeri dakika cinsinden gösterir. Bu zaman aşımı değerine ulaşılırsa oturum beklemeyi durdurur ve 8628 - hatasını verir
A time out occurred while waiting to optimize the query. Rerun the query.
Bellek aracıları
Bu bölüm önbelleğe alınmış belleği, çalınan belleği ve ayrılmış belleği denetleyen bellek aracıları hakkında bilgi sağlar. Bu tablolardaki bilgileri yalnızca iç tanılama için kullanabilirsiniz. Bu nedenle, bu bilgiler ayrıntılı değildir.
MEMORYBROKER_FOR_CACHE (internal) Value
--------------------------------------- -------------
Allocations 20040
Rate 0
Target Allocations 3477904
Future Allocations 0
Overall 3919104
Last Notification 1
MEMORYBROKER_FOR_STEAL (internal) Value
--------------------------------------- -------------
Allocations 129872
Rate 40
Target Allocations 3587776
Future Allocations 0
Overall 3919104
Last Notification 1
MEMORYBROKER_FOR_RESERVE (internal) Value
--------------------------------------- -------------
Allocations 0
Rate 0
Target Allocations 3457864
Future Allocations 0
Overall 3919104
Last Notification 1
MEMORYBROKER_FOR_CACHE (default) Value
--------------------------------------- -------------
Allocations 44592
Rate 8552
Target Allocations 3511008
Future Allocations 0
Overall 3919104
Last Notification 1
MEMORYBROKER_FOR_STEAL (default) Value
--------------------------------------- -------------
Allocations 1432
Rate -520
Target Allocations 3459296
Future Allocations 0
Overall 3919104
Last Notification 1
MEMORYBROKER_FOR_RESERVE (default) Value
--------------------------------------- -------------
Allocations 0
Rate 0
Target Allocations 3919104
Future Allocations 872608
Overall 3919104
Last Notification 1