Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQL Server Veritabanı Altyapısı için bellek kullanımı bir yapılandırma ayarları min server memory (MB) çifti ve max server memory (MB)ile sınırlanır. Zaman içinde ve normal koşullarda SQL Server tarafından max server memory (MB)ayarlanan sınıra kadar bellek talep etmeye çalışır.
Uyarı
Columnstore dizinleri: genel bakış ve In-Memory OLTP'ye genel bakış ve kullanım senaryoları nesnelerinin kendi bellek katipleri vardır ve bu da arabellek havuzu kullanımını izlemeyi kolaylaştırır. Daha fazla bilgi için bkz. sys.dm_os_memory_clerks.
SQL Server'ın eski sürümlerinde bellek kullanımı pratikte sınırsızdı ve SQL Server'a tüm sistem belleğinin kullanılabilir olduğunu belirtiyordu. SQL Server'ın tüm sürümlerinde, sql server bellek kullanımı için üst sınır yapılandırarak max server memory (MB)öğesini yapılandırmaları önerilir.
- SQL Server 2019 'dan (15.x) bu yana, Windows sunucularında SQL Kurulumu, yükleme sırasında kullanılabilir sistem belleği yüzdesini temel alan tek başına bir SQL Server örneği için
max server memory (MB)bir öneri sağlar. - İstediğiniz zaman ve
min server memory (MB)yapılandırma seçenekleri aracılığıylamax server memory (MB)bir SQL Server örneği tarafından kullanılan bir SQL Server işlemi için bellek sınırlarını (megabayt cinsinden) yeniden yapılandırabilirsiniz.
Uyarı
Bu kılavuz, Windows'ta SQL Server örneğine başvurur. Linux'ta bellek yapılandırması hakkında bilgi için bkz. Linux üzerinde SQL Server için performans en iyi yöntemleri ve yapılandırma yönergeleri ve memory.memorylimitmb ayarı.
Öneriler
Bu seçenekler için varsayılan ayarlar ve izin verilen en düşük değerler şunlardır:
| Seçenek | Varsayılan | İzin verilen en düşük değer | Önerilir |
|---|---|---|---|
min server memory (MB) |
0 | 0 | 0 |
max server memory (MB) |
2.147.483.647 megabayt (MB) | 128 MB | 75% kullanılabilir sistem belleği, diğer örnekler de dahil olmak üzere diğer işlemler tarafından tüketilmiyor. Daha ayrıntılı öneriler için bkz. En fazla sunucu belleği. |
Bu sınırlar içinde SQL Server, kullanılabilir sistem kaynaklarına göre bellek gereksinimlerini dinamik olarak değiştirebilir. Daha fazla bilgi için bkz. dinamik bellek yönetimi.
- Değerin çok yüksek ayarlanması
max server memory (MB), tek bir SQL Server örneğinin aynı konakta barındırılan diğer SQL Server örnekleriyle bellek için rekabete neden olabilir. - Ancak, çok düşük ayarlanması
max server memory (MB)performans kaybına neden olur ve SQL Server örneğinde bellek baskısı ve performans sorunlarına neden olabilir. -
max server memory (MB)En düşük değere ayarlamak SQL Server'ın başlatılmasını bile engelleyebilir. Bu seçeneği değiştirdikten sonra SQL Server'ı başlatamıyorsanız başlangıç seçeneğini kullanarak-fbaşlatın ve önceki değerine sıfırlayınmax server memory (MB). Daha fazla bilgi için bkz. Veritabanı Altyapısı Hizmeti başlangıç seçenekleri. - Aynı değerin ayarlanması
max server memory (MB)vemin server memory (MB)aynı değere yakın olması önerilmez.
Uyarı
En fazla sunucu belleği seçeneği yalnızca SQL Server arabellek havuzunun boyutunu sınırlar. Maksimum sunucu belleği seçeneği, genişletilmiş saklı yordamlar, COM nesneleri, paylaşılmayan DLL'ler ve EXE'ler gibi diğer bileşenlerin ayrılması için SQL Server'ın bıraktığı kalan rezerv edilmemiş bellek alanını sınırlamaz.
SQL Server, belleği dinamik olarak kullanabilir. Ancak, bellek seçeneklerini el ile ayarlayabilir ve SQL Server'ın erişebileceği bellek miktarını kısıtlayabilirsiniz. SQL Server için bellek miktarını ayarlamadan önce, toplam fiziksel bellekten, işletim sistemi (OS) için gereken bellekten, ayar tarafından max server memory (MB) denetlenmeyen bellek ayırmalarından ve sql Server'ın (ve diğer sistemin kullandığı diğer tüm örneklerin) toplam fiziksel bellekten çıkararak uygun bellek ayarını belirleyin. sql server'ın diğer örnekleri dahil). Bu fark, geçerli SQL Server örneğine atayabileceğiniz en fazla bellek miktarıdır.
Bellek, tüm SQL Server sürümlerinde işlem sanal adres alanı sınırına kadar yapılandırılabilir. Daha fazla bilgi için bkz. Windows ve Windows Server Sürümleri için Bellek Sınırları.
En az sunucu belleği
SQL Server Bellek Yöneticisi'nin kullanabileceği en düşük bellek miktarını garanti etmek için kullanın min server memory (MB) .
SQL Server başlangıçta belirtilen
min server memory (MB)bellek miktarını hemen ayırmaz. Ancak, istemci yükü nedeniyle bellek kullanımı bu değere ulaştıktan sonra, değerimin server memory (MB)azaltılmadığı sürece SQL Server belleği boşaltamaz. Örneğin, aynı sunucuya birden çok SQL Server örneği eş zamanlı olarak yüklendiğinde, örneğin belleğini ayırmak için parametresini ayarlamayımin server memory (MB)göz önünde bulundurun.min server memory (MB)Temel konağın bellek baskısının, konuk sanal makinedeki (VM) arabellek havuzundan kabul edilebilir performans için gerekenden daha fazla bellek ayırmaya çalışmadığından emin olmak için sanallaştırılmış bir ortamda değer ayarlamak önemlidir. İdeal olarak, bir sanal makinedeki SQL Server örneklerinin sanal konak proaktif bellek geri alma işlemleriyle rekabet etmelerine gerek kalmaz.SQL Server'ın içinde
min server memory (MB)belirtilen bellek miktarını ayırması garanti değildir. Sunucudaki yük hiçbir zaman içindemin server memory (MB)belirtilen bellek miktarını ayırmayı gerektirmiyorsa, SQL Server daha az bellek kullanır.
En fazla sunucu belleği
İşletim sisteminin ve diğer uygulamaların SQL Server'dan gelen zarar verici bellek baskısı yaşamamalarını sağlamak için kullanın max server memory (MB) .
- Yapılandırmayı
max server memory (MB)ayarlamadan önce, normal işlem sırasında SQL Server örneğini barındıran sunucunun genel bellek tüketimini izleyerek bellek kullanılabilirliğini ve gereksinimlerini belirleyin. İlk yapılandırmada veya zaman içinde SQL Server işlem belleği kullanımını toplama fırsatı olmadığında, tek bir örnek için yapılandırmakmax server memory (MB)üzere aşağıdaki genelleştirilmiş en iyi yöntem yaklaşımını kullanın:- Toplam işletim sistemi belleğinden, olası SQL Server iş parçacığı bellek ayırmalarının eşdeğerini denetim dışında
max server memory (MB)çıkarın; bu, yığın boyutu1'inhesaplanan en fazla çalışan iş parçacığı2 ile çarpılmasıdır. - Ardından, denetim dışındaki
max server memory (MB)yedekleme arabellekleri, genişletilmiş saklı yordam DLL'leri, Otomasyon yordamları (sp_OAçağrılar) kullanılarak oluşturulan nesneler ve bağlı sunucu sağlayıcılarından ayırmalar gibi diğer bellek ayırmaları için 25% çıkarın. Bu yalnızca genel bir tahmindir ve deneyimleriniz farklılık gösterebilir. - Kalan tek bir örnek kurulumu için ayar olmalıdır
max server memory (MB).
- Toplam işletim sistemi belleğinden, olası SQL Server iş parçacığı bellek ayırmalarının eşdeğerini denetim dışında
1 Mimari başına iş parçacığı yığın boyutları hakkında bilgi için Bellek Yönetimi Mimarisi kılavuzuna bakın.
2 Geçerli konaktaki belirli sayıda ilişkili CPU için hesaplanan varsayılan işçi dizileri hakkında daha fazla bilgi için bkz. Sunucu yapılandırması: maksimum işçi dizileri.
Seçenekleri el ile ayarlama
ve sunucu seçenekleri min server memory (MB)max server memory (MB) , bir dizi bellek değerine yayılacak şekilde ayarlanabilir. Bu yöntem, sistem veya veritabanı yöneticilerinin SQL Server örneğini diğer uygulamaların bellek gereksinimleriyle veya aynı konakta çalışan diğer SQL Server örnekleriyle yapılandırmaları için kullanışlıdır.
Transact-SQL kullanma
min server memory (MB) ve max server memory (MB) seçenekleri gelişmiş seçeneklerdir. Bu ayarları değiştirmek için sistem saklı yordamını kullanırken sp_configure , bunları yalnızca gelişmiş seçenekleri göster ayarı 1 olarak ayarlandığında değiştirebilirsiniz. Bu ayarlar sunucu yeniden başlatılmadan hemen etkinleşir. Daha fazla bilgi için bkz. sp_configure.
Aşağıdaki örnek seçeneği 12.288 MB veya 12 GB olarak ayarlar max server memory (MB) . Her ne kadar sp_configure seçeneğinin adını max server memory (MB) olarak belirtse de, (MB) öğesini atlayabilirsiniz.
EXECUTE sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXECUTE sp_configure 'max server memory', 12288;
GO
RECONFIGURE;
GO
Aşağıdaki sorgu, şu anda yapılandırılmış olan değerler ve şu anda kullanımda olan değer hakkında bilgi döndürür. Bu sorgu, 'gelişmiş seçenekleri göster' seçeneğinin sp_configure etkinleştirilip etkinleştirilmediğine bakılmaksızın sonuçları döndürür.
SELECT [name],
[value],
[value_in_use]
FROM sys.configurations
WHERE [name] = 'max server memory (MB)'
OR [name] = 'min server memory (MB)';
SQL Server Management Studio'yu kullanma
sql server örneği için SQL Server Bellek Yöneticisi tarafından yönetilen bellek miktarını (megabayt cinsinden) yeniden yapılandırmak için ve min server memory (MB) kullanınmax server memory (MB).
Nesne Gezgini'nde bir sunucuya sağ tıklayın ve Özellikler'i seçin.
Sunucu Özellikleri penceresinin Bellek sayfasını seçin. En düşük sunucu belleği ve En fazla sunucu belleği geçerli değerleri görüntülenir.
Sunucu belleği seçenekleri'nde, En az sunucu belleği ve En fazla sunucu belleği için istenen sayıları girin. Öneriler için bu makalede en az sunucu belleği (MB) ve en fazla sunucu belleği (MB) konularına bakın.
Aşağıdaki ekran görüntüsü üç adımı da gösterir:
Bellekteki sayfaları kilitleme (LPIM)
Windows tabanlı uygulamalar, fiziksel belleği ayırmak ve işlem adres alanına eşlemek için Windows Adres Pencereleme Uzantıları (AWE) API'lerini kullanabilir. LPIM Windows ilkesi, hangi hesapların API'ye erişebileceğini belirleyerek verileri fiziksel bellekte tutmayı sağlar ve sistemin verileri diskteki sanal belleğe sayfalamasını önler. AWE kullanılarak ayrılan bellek, uygulama açıkça boşaltılana veya sonlandırılana kadar kilitli kalır. 64 bit SQL Server'da bellek yönetimi için AWE API'lerini kullanmak genellikle kilitli sayfalar olarak da adlandırılır. Bellekteki sayfaları kilitlemek, bellek diske yazıldığında sunucunun yanıt verebilir durumda kalmasına yardımcı olabilir. Çalıştırılacak ayrıcalıklara sahip hesaba bellekteki Windows Lock sayfaları (LPIM) kullanıcı hakkı verildiğinde, Sayfaları sqlservr.exe seçeneği SQL Server Standard sürümü ve üzeri örneklerde etkinleştirilir.
SQL Server'da Sayfaları bellekte kilitle seçeneğini devre dışı bırakmak için, SQL Server'ı çalıştırma ayrıcalığına sahip hesap için Bellekteki sayfaları kilitle kullanıcı hakkını kaldırın (SQL Server başlangıç hesabı).
LPIM'nin kullanılması SQL Server dinamik bellek yönetimini etkilemez ve diğer bellek katiplerinin isteği üzerine genişletilmesine veya küçültülmesini sağlar.
Sayfaları bellekte kilitle kullanıcı hakkı kullanılırken, için max server memory (MB)bir üst sınır ayarlanması kesinlikle önerilir. Daha fazla bilgi için bkz. En fazla sunucu belleği (MB).
İşlemin disk belleğine alındığını gösteren sqlservr işaretler olduğunda LPIM kullanılmalıdır. Bu durumda, hata 17890 Hata günlüğünde aşağıdaki örniğe benzer şekilde bildirilir:
A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: #### seconds. Working set (KB): ####, committed (KB): ####, memory utilization: ##%.
LpIM'in sistemdeki diğer bellek tüketicilerini hesaba eklemeyen yanlış yapılandırılmış max server memory (MB) bir ayar ile kullanılması, diğer işlemler için gereken bellek miktarına veya kapsamı max server memory (MB)dışında kalan SQL Server bellek gereksinimlerine bağlı olarak tutarsızlıklara neden olabilir. Daha fazla bilgi için bkz. En fazla sunucu belleği.
Sayfaları belleğe kilitle (LPIM) ayrıcalığı verilirse (32 bit veya 64 bit sistemlerde), varsayılan değer olan 2.147.483.647 megabayt (MB) yerine belirli bir değere ayarlamanızı max server memory (MB) kesinlikle öneririz.
Uyarı
SQL Server 2012'den (11.x) başlayarak, Standard Edition'ın kilitli sayfaları kullanması için izleme bayrağı 845 gerekmez.
Sayfaları bellekte kilitlemeyi etkinleştirme
Önceki bilgileri dikkate aldıktan sonra, SQL Server örneğinin hizmet hesabına ayrıcalık vererek Sayfaları bellekte kilitle seçeneğini etkinleştirmek için bkz. Sayfaları bellekte kilitle Seçeneğini (Windows) etkinleştirme.
SQL Server örneği için hizmet hesabını belirlemek üzere, SQL Server Configuration Manager'a bakın veya service_account'den sys.dm_server_services sorgulayın. Daha fazla bilgi için bkz. sys.dm_server_services.
Bellekte sayfaları kilitleme durumunu görüntüle
Sql Server örneğinin hizmet hesabına Bellekteki sayfaları kilitleme ayrıcalığının verilip verilmediğini belirlemek için aşağıdaki sorguyu kullanın. Bu sorgu SQL Server 2016 (13.x) SP1 ve sonraki sürümlerde desteklenir.
SELECT sql_memory_model_desc FROM sys.dm_os_sys_info;
Aşağıdaki değerleri sql_memory_model_desc LPIM'in durumunu gösterir:
-
CONVENTIONAL. Sayfaları bellekte kilitleme ayrıcalığı verilmez. -
LOCK_PAGES. Bellekte sayfaları kilitleme yetkisi verildi. -
LARGE_PAGES. Sayfaları bellekte kilitleme ayrıcalığı, 834 izleme bayrağının etkin olduğu Kurumsal modda verilir. Bu gelişmiş bir yapılandırmadır ve çoğu ortam için önerilmez. Daha fazla bilgi ve önemli uyarılar için bkz. izleme bayrağı 834.
SQL Server örneğinin kilitli sayfalar kullanıp kullanmadığını belirlemek için aşağıdaki yöntemleri kullanın:
Aşağıdaki Transact-SQL sorgusunun çıktısı,
locked_page_allocations_kbiçin sıfır olmayan değerleri belirtir:SELECT osn.node_id, osn.memory_node_id, osn.node_state_desc, omn.locked_page_allocations_kb FROM sys.dm_os_memory_nodes AS omn INNER JOIN sys.dm_os_nodes AS osn ON (omn.memory_node_id = osn.memory_node_id) WHERE osn.node_state_desc <> 'ONLINE DAC';Geçerli SQL Server hata günlüğü,
Using locked pages in the memory managersunucu başlatma sırasında iletiyi bildirir.DBCC MEMORYSTATUS çıkışının Bellek Yöneticisi bölümü,
AWE Allocatedöğesi için sıfır olmayan bir değer gösterir.
SQL Server'ın birden çok örneği
Veritabanı Altyapısı'nın birden çok örneğini çalıştırırken, belleği yönetmek için kullanabileceğiniz farklı yaklaşımlar vardır:
max server memory (MB)gibi bellek kullanımını denetlemek için her örnekte kullanın. Toplam ödeneğin makinenizdeki toplam fiziksel bellekten fazla olmadığına dikkat edin ve her örnek için en yüksek ayarları yapın. Her örneğe beklenen iş yükü veya veritabanı boyutuyla orantılı bellek vermek isteyebilirsiniz. Bu yaklaşım, yeni işlemler veya örnekler başlatıldığında, boş belleğin hemen kullanılabilmesi avantajına sahiptir. Dezavantajı, tüm örnekleri çalıştırmıyorsanız, çalışan örneklerin hiçbirinin kalan boş belleği kullanamamasıdır.min server memory (MB)gibi bellek kullanımını denetlemek için her örnekte kullanın. Bu minimum değerlerin toplamının makinenizdeki toplam fiziksel bellekten 1 - 2 GB daha az olması için her örnek için en düşük ayarları oluşturun. Yine, bu minimum değerleri söz konusu örneğin beklenen yüküyle orantılı olarak belirleyebilirsiniz. Bu yaklaşım, tüm örneklerin aynı anda çalışmaması durumunda, çalışanların kalan boş belleği kullanabilmesi avantajına sahiptir. Bu yaklaşım, sql Server'ın en azından makul miktarda bellek elde etmesini sağlayacağından, bilgisayarda yoğun bellek kullanan başka bir işlem olduğunda da kullanışlıdır. Bunun dezavantajı, yeni bir örnek (veya başka bir işlem) başlatıldığında, çalışan örneklerin bellek bırakması biraz zaman alabilir, özellikle de bunun için veritabanlarına değiştirilmiş sayfalar yazmaları gerekiyorsa.Her örnekte bellek kullanımını denetlemek, her örneğin maksimum kullanımını gözlemlemek ve ayarlamak ve çok çeşitli olası bellek kullanım düzeyleri içinde minimum bellek korumasını ayarlamak için hem hem de
max server memory (MB)min server memory (MB)kullanın.Hiçbir şey yapma (önerilmez). İlk örnekler, bir iş yüküyle sunulduğunda tüm belleği kullanma eğilimindedir. Boşta kalan örnekler veya daha sonra başlatılan örnekler, kullanılabilir belleğin yalnızca en az miktarda olduğu şekilde çalışmaya devam edebilir. SQL Server, örnekler arasında bellek kullanımını dengelemeye çalışmaz. Ancak tüm örnekler, bellek ayak izinin boyutunu ayarlamak için Windows Bellek Bildirimi sinyallerine yanıt verir. Windows, Bellek Bildirimi API'siyle uygulamalar arasında bellek dengelemesi yapmaz. Yalnızca sistemdeki belleğin kullanılabilirliği hakkında genel geri bildirim sağlar.
Örnekleri yeniden başlatmadan bu ayarları değiştirebilirsiniz, böylece kullanım deseniniz için en iyi ayarları bulmak için kolayca deneme yapabilirsiniz.
Örnekler
A. En fazla sunucu belleği seçeneğini 4 GB olarak ayarlayın
Aşağıdaki örnek seçeneği 4096 MB veya 4 GB olarak ayarlar max server memory (MB) . Her ne kadar sp_configure seçeneğinin adını max server memory (MB) olarak belirtse de, (MB) öğesini atlayabilirsiniz.
EXECUTE sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXECUTE sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO
Yeni bellek sınırının, Configuration option 'max server memory (MB)' changed from 2147483647 to 4096. Run the RECONFIGURE statement to install. yürütüldüğünde hemen geçerli olduğu gibi bir deyim çıktısı verecektir RECONFIGURE. Daha fazla bilgi için bkz. sp_configure.
B. Geçerli bellek ayırmayı belirleme
Aşağıdaki sorgu, şu anda ayrılmış bellek hakkındaki bilgileri döndürür.
SELECT physical_memory_in_use_kb / 1024 AS sql_physical_memory_in_use_MB,
large_page_allocations_kb / 1024 AS sql_large_page_allocations_MB,
locked_page_allocations_kb / 1024 AS sql_locked_page_allocations_MB,
virtual_address_space_reserved_kb / 1024 AS sql_VAS_reserved_MB,
virtual_address_space_committed_kb / 1024 AS sql_VAS_committed_MB,
virtual_address_space_available_kb / 1024 AS sql_VAS_available_MB,
page_fault_count AS sql_page_fault_count,
memory_utilization_percentage AS sql_memory_utilization_percentage,
process_physical_memory_low AS sql_process_physical_memory_low,
process_virtual_memory_low AS sql_process_virtual_memory_low
FROM sys.dm_os_process_memory;
C. değerini görüntüleme max server memory (MB)
Aşağıdaki sorgu, şu anda yapılandırılmış olan değer ve kullanımdaki değer hakkında bilgi döndürür. Bu sorgu, 'gelişmiş seçenekleri göster' seçeneğinin sp_configure etkinleştirilip etkinleştirilmediğine bakılmaksızın sonuçları döndürür.
SELECT [value], [value_in_use]
FROM sys.configurations
WHERE [name] = 'max server memory (MB)';