Örnek olarak SQL Server Express belleği ve CPU sınırı var mı?


32

Bir sunucuda 8GB RAM'im varsa ve 4 SQL Server Express örneği çalıştırıyorsam, SQL Server tarafından kullanılan toplam bellek sınırı 1GB veya 4GB olur mu?

Her bir veritabanının kaynakları daha iyi kullanabilmesi için (sunucunun bol miktarda kaynağı olduğunu varsayarak) etkinleştirmek için bunun gibi birden fazla örnek çalıştırmanız tavsiye edilebilir mi?

Yanıtlar:


27

Bir sunucuda 8GB RAM'im varsa ve 4 SQL Express örneği çalıştırıyorsam, SQL Server tarafından kullanılan toplam bellek sınırı 1GB veya 4GB olur mu?

Her örnek, arabellek havuzu için 1 GB'a kadar bellek kullanabilir . Her örnek toplamda 1GB'tan fazlasını kullanabilir; çünkü tüm bellek ayırmaları arabellek havuzundan geçmez. Senin durumunda, dört örnek tarafından arabellek havuzu için kullanılan maksimum bellek 4 GB olacaktır.

BOL özü

Onaylamak için, SQL Server 2008 Express Veritabanı Altyapısı'nın iki örneğini başlattım , (ayrı) tampon havuzlarını yüklemek için bazı aktiviteler yaptım ve ardından örneğin DBCC MEMORYSTATUS veya sys.dm_os_buffer_descriptors DMV kullanarak tampon sayısını sayarak .

Aşağıdaki fiziksel bellek kullanım numaraları , veritabanı motorunun her bir örneğinde DMV sys.dm_os_process_memory sistemine karşı eşzamanlı sorgular kullanarak elde edildi :

SELECT 
    dopm.physical_memory_in_use_kb 
FROM sys.dm_os_process_memory AS dopm;

Çıktı:

╔═══════════╦═══════════╗
 Instance1  Instance2 
╠═══════════╬═══════════╣
   1102872    1059812 
╚═══════════╩═══════════╝

Bunların her biri 1GB'tan biraz fazladır, çünkü toplam fiziksel bellek kullanımı, daha önce de belirtildiği gibi yalnızca tampon havuzu kullanımından fazlasını içerir.

Her bir veritabanının kaynakları daha iyi kullanabilmesi için (sunucunun bol miktarda kaynağı olduğunu varsayarak) etkinleştirmek için bunun gibi birden fazla örnek çalıştırmanız tavsiye edilebilir mi?

Eğer her bir vakanın veritabanları fonksiyonel olarak bağımsız ise, o zaman en az Express örneğini bu şekilde çalıştırmak en azından uygulanabilir durumda olsa da, konfigürasyon ve bakım konusunda daha dikkatli olmanız gerekebilir.

Amaçlanan kullanım lisansla eşleşiyorsa, tam özellikli (ve çok ucuz) Geliştirici Sürümü gibi başka bir sürümü kullanarak daha iyi hizmet alabilirsiniz. Bu konuda net bir cevap almak için koşullar hakkında daha fazla şey söylemeniz gerekir.


3
Ayrıca dikkat, zeki okuyucu için: SQL Server Database Engineanlamına gelir A Single Instance. Bağlandığınız bağlantı iletişim sunucusunu her zaman değiştirmeniz gerekir (örn. localhost\devVs localhost\test) bu yeni bir "Örnek" veya yeni bir "Motor". Sadece bunu açıklayacağımı düşündüm.
jcolebrand

7

Her Eşgörünüm ayrı bir sürece sahip olduğu için ayrı sayılır.


1
Sınırlayıcının tüm işlemlere uygulanmadığından emin olduğunuzu varsayıyorum?

-8

SQL Express'te veritabanı motoru yalnızca 1 GB RAM tüketebilir ve herhangi bir DB, 10 GB'den büyük olamaz.

Bu nedenle, 4 örnek bu 1 GB RAM’i hala paylaşmak zorunda kalacak.

Http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx adresinde daha fazlasını bulabilirsiniz. .

Burada Stack Overflow'taki benzer bir tartışma bunun doğru cevap BTW olduğunu söylüyor, bu yüzden aşağı oy vermenize gerek yok: https://stackoverflow.com/questions/1169634/limitations-of-sql-server-express

Bu sayfa aynı, SQL Server Express 2005 ile ilgili olmasına rağmen aynı şeyi söylüyor: http://www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- başına instance.html


3
Mutlaka takip etmiyor mu - sunucu başına mı yoksa örnek başına 1 motor mu?

1
Tamam, bu ima ediyor, ancak bellek sınır çizgisinde kaçırmış olmaları da mümkün.

1
Sırf internette olduğu için doğru olması gerekiyor. İnternette yanlış bir şey olmasına asla izin vermezlerdi. • Buradaki sorunun, yalnızca tüm SQL Express'i sonsuza dek sınırlamak amacıyla bir yönetim süreci veya işletim sistemine pişmiş bir şey olması gerektiğini söylemek olduğunu söylemek. Bunun gerçekten olduğunu sanmıyorum (AKA, kesinlikle nefes aldığım ve mantığı çok iyi izleyebildiğim gerçeğine dayanarak gerçekleşmedi), yani meselenin gerçeği, sürecin kendisinin RAM miktarını yönettiğidir. Kullanılmış.
jcolebrand

2
İnsanların, doğal olarak neyin kötü olduğu ile ilgili önyüklemeleri kaldırmak için yalvarmak, hangi kaynaktan alıntı yaptığınıza bakılmaksızın, sizi büyütme ihtimalinin düşük olması anlamına gelmez. Gerçekten kaynak belirtmek istiyorsanız, birkaç örnek yükleyin ve gerçek yüklerini bellekte gösterin. Kesin olarak bilmenin tek yolu bu. Ya öyle ya da bize SQL Express davranışını düzenleyen Microsoft kodunu gösterin. Her zaman yönetim başınadır, çünkü her servis yukarıdan aşağıya kendi kendine yetmektedir. Tüm yönetim hizmetleri portlar üzerinden çalışır.
jcolebrand

2
Maximum memory utilized (SQL Server Database Engine)Aynı terminolojiyi, hatta aynı satırda kullandıklarına dikkat edin: Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1(evde oynayanlar için, bunun amacı, aynı ölçüm olduklarıdır) msdn.microsoft.com/en-us/library/… ve ben de SO ile bağlantılı olan cevabın WRONG WRONG WRONG'un nasıl olduğunu seviyorum. "1 çekirdekli veya 4 soket" ile başlayın, editörler doğru kopyalayıp yapıştıramazlar.
jcolebrand
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.