Bagaimana menyeimbangkan memori SQL Server dengan memori SQL Server Analysis Services

11

Kami memiliki banyak sistem yang memiliki konfigurasi yang sama

  • Satu Server (virtual atau fisik)
  • Menjalankan SQL Server (SQL) dan SQL Server Analysis Server (AS)
  • banyak core
  • RAM 16 GB

Setiap malam SQL Server akan melakukan sekitar 2-3 jam pemrosesan, diikuti oleh 2-3 jam pemrosesan AS. Kemudian sepanjang hari hanya AS yang ditanyai.

Dengan asumsi ini adalah dedicated server, dan tidak ada aplikasi lain yang menjadi perhatian, dan bahwa dua set pemrosesan sepenuhnya sinkron - tidak ada tumpang tindih selalu satu demi satu - bagaimana cara terbaik mengatur batas memori server SQL dan AS.

Alasan untuk bertanya adalah bahwa jika saya tidak menetapkan batas untuk SQL, itu akan mengambil semua memori yang bisa. Namun - pemahaman saya adalah bahwa SQL akan dengan senang hati melepaskan memori ini jika:

  • Itu tidak menggunakannya dan

  • Layanan / program lain memintanya.

Jadi dari perspektif logis saya percaya mengizinkan SQL untuk mengambil sebanyak yang dibutuhkan, tapi saya tidak begitu yakin tentang AS TotalMemoryLimit. Saya tidak yakin apakah AS akan melepaskan ingatannya. Bahkan, membaca lebih banyak membuat saya percaya bahwa adalah salah untuk membiarkannya mengambil semuanya.

Apakah ini berarti saya perlu menetapkan batas untuk keduanya? Saya bingung seperti apa praktik terbaik seharusnya, dan apa yang perlu kita ukur mengingat prosesnya tidak tumpang tindih.

Semoga ini masuk akal.

Praha Sangha
sumber

Jawaban:

9

Saya pikir layak untuk memaksa tangan kedua layanan dengan memiliki tugas atau layanan terjadwal yang:

(a) sebelum pemrosesan malam SQL Server, mematikan layanan SSAS, dan meningkatkan memori yang dialokasikan untuk SQL Server

(B) setelah SQL Server melakukan pemrosesan, mengurangi memori server maks dan me-restart SQL Server

(c) memulai SSAS

Ini mengasumsikan bahwa SSAS tidak diperlukan untuk online saat SQL Server sedang memproses. Jika tidak, ubah (a) dari "shut down" ke "restart" ... selama SSAS tidak aktif melakukan apa pun saat SQL Server sedang memproses, seharusnya tidak ada kekhawatiran bahwa itu akan mencuri kembali memori.

Ini juga mengasumsikan bahwa Anda ingin setiap layanan tumpang tindih konsumsi memori, dan menggunakan memori yang sama pada waktu yang berbeda - saya yakin ada cara dengan afinitas / NUMA dll untuk sepenuhnya memisahkan ruang operasi mereka atau, dalam kasus terburuk, menjadi tuan rumah mereka pada mesin yang berbeda.

Aaron Bertrand
sumber
Saya pikir mungkin kita harus me-restart SQL setelah pemrosesan SASS juga - karena itu membaca besar (Data warehouse).
Preet Sangha
Sebenarnya memikirkannya - tidakkah memulai kembali SQL server akan memengaruhi semua pemrosesan SQL?
Preet Sangha
1
@ Selamat ya, bukankah itu intinya?
Aaron Bertrand
7

Apakah SQL dan SSAS perlu dijalankan pada saat yang sama? Jika tidak, apakah Anda 100% yakin?

Saya akan melihat pengaturan pengaturan memori untuk SQL dan SSAS untuk melihat apakah mereka dapat bekerja sama satu sama lain.

Kita harus meninggalkan sedikit memori untuk OS, proses lain, dan alokasi multi-halaman. Mungkin 4G?

Coba sesuatu seperti ini ...

Di sisi SQL, atur Max Server Memory ke 12G dan Min Server Memory ke 6G.

Di sisi SSAS, atur TotalMemoryLimit ke 12G dan LowMemoryLimit ke 6G.

Selain itu, jangan aktifkan Lock Pages In Memory.

Coba beberapa iterasi, sesuaikan angka-angka ini ke atas atau ke bawah.

Jika ini tidak berhasil, dan Anda tahu bahwa sebenarnya SQL dan SSAS tidak perlu dijalankan pada saat yang sama, maka saya akan mencoba saran Harun tentang penjadwalan pekerjaan untuk mematikan dan menghidupkan layanan.

Steven
sumber