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, DBCC MEMORYSTATUS
Microsoft SQL Server ve işletim sisteminin geçerli bellek durumunun anlık görüntüsünü sağlar. SQL Server bellek dağıtımı ve kullanımının en ayrıntılı çıkış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ı, hata günlüğünde bu çıkışı 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
çıkışı 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 çıkışını açıklar.
Not
Performans İzleyicisi (PerfMon) ve Görev Yöneticisi, Bellekteki Kilitli Sayfalar seçeneği etkinse tam bellek kullanımını hesaba eklemez. Adres Pencereleme Uzantıları (AWE) API bellek kullanımını gösteren performans sayaçları yoktur.
Önemli
DBCC MEMORYSTATUS
Komutun 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 paketleriyle ü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 önceki sürümlerinden değişti. Şu anda, önceki ürün sürümlerinde kullanılamayan birkaç tablo içeriyor.
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ç basınç varsa düşük bellek oluşabilir. İç basınç, 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ı sorunlarını giderme hakkında daha fazla bilgi için bkz. SQL Server 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, bilgisayarda fiziksel veya sanal bellek yetersiz 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.
- Dış 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, kalan bölümlerini
DBCC MEMORYSTATUS
kullanarak bu bellek kullanımına en büyük katkıda bulunan bileşenlerin (Bellek katibi, Cachestore, UserStore veya Objectstore) olduğunu belirleyebilirsiniz. - 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şenin altındaki VM Kabul Edilen 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. gözlemleyebilirOBJECTSTORE_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 sonra 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 bellek ataması 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ıyabilecek bazı yararlı sayaçlar DBCC MEMORYSTATUS
açıklanmaktadır.
İşlem/Sistem Sayıları
Bu bölüm, tablo biçiminde bir örnek çıktı 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 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şlem için toplam boş sanal bellek miktarını 140.710.048.014.336 bayt (128 TB) 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 sanal bellek miktarını gösterir (disk belleğine alınmaz) 430.026.752 bayttır.
- WS'de İşlenen Bellek Yüzdesi: Bu değer ayrılmış SQL Server sanal belleğin RAM'de hangi yüzdesinde yer aldığını gösterir (veya Çalışma Kümesidir). 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 bilgisayardaki kullanılabilir fiziksel belleğin yüksek olduğunu göz önünde bulundurduğunu gösterir. Bu nedenle Sistem fiziksel belleğinin düşük değeri 0'dır ve bu da yetersiz 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 değeri yanlış, 1 ise doğru olduğu anlamına gelir. Bu örnekte her iki değer de 0'dır ve 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ümde, bellek yöneticisinin SQL Server genel bellek tüketimini gösteren bir örnek çıktısı sağlanır.
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 çıkıştaki değerler ve bunların açıklamaları ele alınmaktadır:
VM Ayrılmış: Bu değer, SQL Server ayrılmış olan genel sanal adres alanı (VAS) veya sanal bellek (VM) miktarını gösterir. Sanal bellek ayırma 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 Kabul Edilen: Bu değer, SQL Server (KB cinsinden) işlediği toplam sanal bellek miktarını (VM) gösterir. Bu, işlem tarafından kullanılan belleğin fiziksel bellek tarafından veya daha az sıklıkla sayfa dosyası tarafından yedeklendiği anlamına gelir. Önceden ayrılmış bellek adresleri artık fiziksel bir depolama tarafından desteklenir; ayrılmıştır. Bellekteki Kilitli Sayfalar etkinleştirildiyse, 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 AWE API'sini kullanarak fiziksel RAM'de ayırıp kilitlediği bellek miktarını kilobayt (KB) cinsinden temsil eder. SQL Server etkin olarak ne kadar bellek kullandığını gösterir ve performansı iyileştirmek için bellekte tutulmasını istedi. SQL Server, sayfaları belleğe kilitleyerek kritik veritabanı sayfalarının kullanılabilir olmasını ve diske değiştirilmemesini sağlar. Daha fazla bilgi için bkz . Adres Windows Uzantıları (AWE) belleği. Sıfır değeri, "bellekteki kilitli sayfalar" özelliğinin şu anda devre dışı bırakıldığını ve SQL Server bunun yerine sanal bellek kullandığını gösterir. Böyle bir durumda VM Kabul Edilen değeri, SQL Server 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 Kaydedilmiş: Bu değer, SQL Server taahhüt etmeyi hedeflediği hedef bellek miktarını, son iş yüküne bağlı olarak SQL Server kullanabileceği ideal bellek miktarını gösterir.
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 VM Kaydedilmiş veya Ayrılmış Kilitli Sayfalar'a yakın veya aynı. 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 Kabul Edildi olarak yansıtılacağını unutmayın.
NUMA Büyüme Aşaması: Bu değer, SQL Server ş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. Nasıl Çalışır: SQL Server (NUMA Yerel, Yabancı ve Dışarıda Bellek Blokları).
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 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ının ö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 Kabul Edilen değerlerinin toplamları, Bellek Yöneticisi tablosunda raporlanan 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ıyla nadiren ilgilenmektedir. 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 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.
Belleği 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 toplam bellek sayfası 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 ve 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üğünde günlüğe kaydedilir.
SMP sistemi için, dac tarafından kullanılan düğüm = 64 değerini sayma değil, 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ış: Bellekle eşlenen 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 farklı durum verilerinin ve dizin sayfalarının dökümünü sağlayan ve veri önbelleği olarak da bilinen ö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 çıkıştaki değerler ve bunların açıklamaları ele alınmaktadır:
- Veritabanı: Veritabanı içeriğine (veri ve dizin sayfaları) sahip 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 de arabellek mandallanır. Mandal, sayfadaki verilerin okunduğu veya değiştirildiği sırada 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 sorun olduğunu göstermez).
- 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çıklanmaktadır.
Procedure Cache Value
----------------------- -----------
TotalProcs 4
TotalPages 25
InUsePages 0
Aşağıdaki listede çıkıştaki 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
sys.dm_exec_cached_plans
geçici nesneler gibi önbelleğe alınmış nesnelerin türü hakkında ayrıntılı bilgi için PerfMon kullanarak SQL Server: Plan Cache nesnesini ve DMV'yi izleyebilirsiniz.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: Yordam önbelleğinde şu anda etkin olan yordamlara ait 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 çıkıştaki 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ıyı 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.
Bellek nesnelerini sorgulama
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ü de 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 çıkıştaki 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ı olarak kullanmak ve çalışma alanını sıralamak için sorguların kullanabileceği 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. Bekleme 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 bekleyen sorgunun maliyetini gösterir.
- Zaman aşımı: Sonraki bekleyen sorgu için zaman aşımını saniyeler içinde gösterir.
- Bekleme Süresi: Sonraki bekleme sorgusu kuyruğa alındıktan sonra 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'de bellek atamalarının neden olduğu yavaş performans veya düşük bellek sorunlarını giderme.
belleği iyileştirme
Sorgular derleme için sunucuya gönderilir. Derleme işlemi ayrıştırma, cebirleme ve iyileştirmeyi içerir. Sorgular, her sorgunun derleme işlemi sırasında 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.
Sorgu başlatıldığında, derlenecek sorgu sayısıyla ilgili 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 derlenmiş sorguların giderek azalan bir sınırı vardı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 almayabilir. 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 tabloda sorgu iyileştirme için yetersiz bellek nedeniyle gerçekleşen bellek beklemelerinin ayrıntıları sağlanır. İç bellek, sistem sorguları tarafından kullanılan iyileştirici belleği hesaplarken, varsayılan raporlar kullanıcı veya uygulama sorguları için belleği iyileştirir.
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ğini kullanabilen eşzamanlı sorguların sayısını gösterir. Örnekte, 32 eşzamanlı sorgu Küçük ağ geçidinden bellek (varsayılan), Orta ağ geçidinden sekiz eşzamanlı sorgu ve Büyük ağ geçidinden bir sorgu kullanabilir. Daha önce belirtildiği gibi, bir sorgu küçük ağ geçidinin ayıraacı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 varsa ancak şu anda üç sorgu derleme belleği kullanıyorsa
Available Units
, 32 eksi 3 veya 29 birim olabilir. - Alma sayısı - Derlenecek sorgular tarafından alınan birim veya yuva sayısını gösterir. Şu anda ağ geçidinden bellek kullanan üç sorgu varsa, Alma = 3 olur.
- Waiters - 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 değildir.
- 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 ortadaki belleğe 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. Küçük ağ geçidi için eşik önceden tanımlanmış olduğundan 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 olur.
-
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