Bagaimana Seharusnya Saya Mengkonfigurasi Memori untuk Beberapa Contoh SQL Server?

9

Kami memiliki serangkaian instance SQL Server (2008 R2) yang berjalan di server virtual yang sama. Setiap instance mewakili tahap dalam siklus pengembangan kami (Dev / Test / Stage / dll.). Semua instance harus online pada waktu tertentu, tetapi beban cenderung diisolasi untuk satu instance sebagai waktu, tergantung di mana kita berada dalam siklus rilis.

SQL Server tampaknya mengambil dan menahan berapa pun jumlah memori yang kita atur sebagai maks. Apa yang saya ingin tahu jika ada cara mengkonfigurasi contoh untuk menjadi "pintar" tentang konsumsi memori sehingga mereka tidak menghalangi satu sama lain untuk mendapatkan memori saat dibutuhkan.

Phil Sandler
sumber
Jika semua instance perlu online kapan saja, dan Anda mengatur memori maks, SQL Server tidak akan melepaskannya. Ketika Anda mengatakan .. memuat diisolasi ke satu contoh sebagai waktu, apakah itu berarti tidak ada aktivitas pada contoh lain? Juga, berapa banyak instance yang Anda jalankan di virtual dan apa konfigurasi CPU / Memory untuk virtual?
Kin Shah
3
Saya menulis tentang ini untuk kluster multi-instance, di mana Anda perlu menyesuaikan memori jika terjadi failover yang mengarah ke beberapa instance pada node yang sama . Anda dapat menggunakan pendekatan yang serupa di sini, tetapi menjalankan prosedur tersimpan berdasarkan permintaan yang mengkonfigurasi ulang memori berdasarkan kebutuhan saat ini. Anda tidak akan dapat mengatur setiap instance untuk melakukan ini secara otomatis kecuali Anda hanya memperbaikinya masing-masing ke memori maks secara permanen (dan kemudian menyesuaikan secara manual ketika Anda perlu).
Aaron Bertrand

Jawaban:

7

SQL Server akan menggunakan memori sebanyak yang Anda bisa gunakan (cukup banyak), dan selalu disarankan untuk menetapkan batas pada setiap instance. Pengaturan standar adalah 2147483647MB.

Tergantung pada penggunaan dan keadaan unik Anda sendiri, pengaturan Anda mungkin berbeda, tetapi biasanya titik awal yang baik adalah mengatur memori server maks antara 75 dan 90 persen, tergantung pada berapa banyak RAM yang Anda miliki. Glenn Berry membagikan indikasi yang baik beberapa tahun yang lalu di SINI .

Jika Anda memiliki beberapa instance aktif di server, Anda mungkin harus berbagi sumber daya di antara mereka, untuk misalnya jika Anda memiliki 32GB RAM dengan 3 instance, Anda harus menetapkan sekitar 9500MB untuk setiap instance. Ketika Anda menggunakan hanya satu contoh pada satu waktu, yang lain tidak akan melepaskan RAM yang mereka gunakan. Anda dapat membebaskan RAM mereka dengan menghentikan layanan.

Ketika Anda menjalankan aplikasi / layanan lain, jumlah memori mungkin harus disesuaikan untuk mengakomodasi mereka.

RoKa
sumber