SQL Server belleği SQL Server Analysis Services belleği ile nasıl dengelenir


11

Aynı yapılandırmaya sahip birçok sistemimiz var

  • Bir Sunucu (sanal veya fiziksel)
  • SQL Server (SQL) ve SQL Server Analysis Server'ı (AS) çalıştırma
  • çoklu çekirdekler
  • 16GB RAM

Her gece SQL Server yaklaşık 2-3 saat işlemden sonra 2-3 saat AS işleminden geçecektir . Daha sonra gün boyunca sadece AS sorgulanır.

Bunun adanmış bir sunucu olduğunu ve başka hiçbir uygulamanın endişe duymadığını ve iki işlem kümesinin tamamen senkronize olduğunu varsayalım - her zaman birbiri ardına çakışma yok - SQL ve AS sunucusu bellek sınırlarını en iyi nasıl ayarlayabilirim.

Sormanın nedeni, SQL için bir sınır ayarlamazsam, yapabileceği tüm belleği kapmasıdır. Ancak - benim anlayışım şu durumlarda SQL mutlu bu bellek vazgeçmek olacaktır:

  • Kullanmıyor ve

  • Başka bir hizmet / program bunu ister.

Mantıksal bir bakış açısıyla, SQL'in ihtiyaç duyduğu kadar almasına izin verdiğine inanıyorum, ancak AS'den pek emin değilim TotalMemoryLimit. AS'nin hafızasını bırakıp bırakmayacağından emin değilim. Aslında daha fazla okumak beni herşeyi almasına izin vermenin yanlış olduğuna inanmamı sağlıyor.

Bu, her ikisi için de gerçekten sınırlar belirlemem gerektiği anlamına mı geliyor? En iyi uygulamaların ne olması gerektiği ve süreçler örtüşmediği için ölçmemiz gereken şey konusunda kafam karıştı.

Umarım bu mantıklıdır.

Yanıtlar:


9

Bence zamanlanmış bir görev veya hizmet alarak her iki hizmetin ellerini zorlamak mümkün:

(a) SQL Server'ın gece işlemeden önce, SSAS hizmetini kapatır ve SQL Server'a ayrılan belleği artırır

(b) SQL Server işlendikten sonra, maksimum sunucu belleğini azaltır ve SQL Server'ı yeniden başlatır

(c) SSAS'ı başlatır

Bu, SQL Server işlenirken SSAS'ın çevrimiçi olması gerekmediğini varsayar. Aksi takdirde (a) "kapanır" dan "yeniden başlatılır" a geçiş yapın ... SQL Server işlenirken SSAS aktif olarak hiçbir şey yapmadığı sürece, belleği geri çalacağı endişesi olmamalıdır.

Bu ayrıca her hizmetin bellek tüketimiyle çakışmasını ve aynı belleği farklı zamanlarda kullanmasını istediğinizi varsayar - operasyon alanlarını tamamen ayırmak veya en kötü durumda barındırmak için yakınlık / NUMA vb. farklı makinelerde.


Sanırım belki de SASS işleminden sonra SQL'i yeniden başlatmalıyız - çünkü büyük okuma (Veri ambarı).
Preet Sangha

Aslında bunu düşünmek - SQL sunucusunun yeniden başlatılması aslında tüm SQL işlemlerini etkilemez mi?
Preet Sangha

1
@Preet evet, önemli değil mi?
Aaron Bertrand

7

SQL ve SSAS'ın aynı anda çalışması gerekiyor mu? Hayır ise,% 100 emin misiniz?

Birbirleriyle işbirliği yapıp yapamayacağını görmek için SQL ve SSAS için bellek ayarını ayarlamaya bakarım.

İşletim sistemi, diğer işlemler ve çok sayfalı ayırmalar için bellek bırakmamız gerekecek. Belki 4G?

Böyle bir şey deneyin ...

SQL tarafında, Max Sunucu Belleğini 12G'ye ve Min Sunucu Belleğini 6G'ye ayarlayın.

SSAS tarafında, TotalMemoryLimit değerini 12G'ye ve LowMemoryLimit'i 6G'ye ayarlayın.

Ayrıca, Sayfaları Bellekte Kilitle özelliğini etkinleştirmeyin.

Bu sayıları yukarı veya aşağı ayarlayarak birkaç yineleme yapmayı deneyin.

Bu işe yaramazsa ve SQL ve SSAS'ın aynı anda çalışması gerekmediğini biliyorsanız, Aaron'un hizmetleri kapatmak ve açmak için zamanlama işleri önerisini deneyeceğim.

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.