SQL Server mengkonsumsi 87,5% dari RAM server saya. Ini baru-baru ini menyebabkan banyak hambatan kinerja seperti kelambatan. Saya meneliti masalah ini. Salah satu solusi umum yang bisa saya temukan di internet adalah menetapkan batas maksimum untuk SQL Server. Ini dilakukan dan banyak perbaikan diperoleh. Saya ingin tahu mengapa jika nilai memori maksimum tidak ditetapkan mengapa SQL Server terus mengonsumsi sumber daya
36
Jawaban:
SQL Server akan mengkonsumsi memori sebanyak yang Anda izinkan . Secara default, angka itu akan mencakup 100% dari memori numerik Anda di mesin Anda. Itu sebabnya Anda melihat apa yang Anda lihat. Jika Anda memberikan SQL Server 24 GB memori, maka SQL Server akan melakukan yang terbaik untuk menggunakan memori 24 GB. Kemudian Anda memiliki SQL Server dan OS yang berjuang untuk sumber daya, dan itu akan selalu menghasilkan kinerja yang buruk.
Ketika Anda menetapkan
max server memory
batas konfigurasi, Anda membatasi berapa banyak SQL Server dapat mengalokasikan untuk kumpulan buffer (hampir di mana ia menyimpan halaman data dan cache prosedur). Ada juru tulis memori lain dalam SQL Server, jadi untuk versi khusus Anda (2008 R2 dan di bawah),max server memory
cukup kontrol kumpulan buffer. Tapi ini akan selalu menjadi konsumen memori terbesar.Referensi TechNet tentang Efek memori server min dan maks
Sejauh pertanyaan berapa banyak memori yang harus saya tinggalkan untuk OS , itu adalah metrik yang sering diperdebatkan. Itu benar-benar semua tergantung, sebagian besar pada proses apa yang berjalan di server . Asalkan itu server yang benar-benar khusus (dan itu hampir tidak pernah terjadi). Saya suka melihat setidaknya 4 GB memori untuk OS (dan bahkan lebih pada kotak hardware besar). Tetapi yang paling penting, pantau berapa banyak memori yang tidak terpakai. Jadilah liberal, dan berikan SQL Server lebih banyak memori jika Anda memperhatikan banyak yang tersedia (dapat dipantau melalui perfmon) dan memori yang tidak digunakan (tentu saja, selalu menyisakan buffer kecil untuk situasi sudut itu).
sumber
SQL Server dirancang untuk menggunakan semua memori di server secara default. Alasan untuk ini adalah bahwa SQL Server cache data dalam database dalam RAM sehingga dapat mengakses data lebih cepat daripada yang bisa jika diperlukan untuk membaca data dari disk setiap kali pengguna membutuhkannya. Jika kita perlu pergi ke disk setiap kali SQL Server membutuhkan data yang sama berulang-ulang persyaratan IO disk akan sangat tinggi.
Biasanya saya sarankan orang meninggalkan sekitar 4 Gigs RAM untuk Windows, tetapi itu benar-benar tergantung pada jumlah perangkat lunak yang berjalan di server, komponen apa dari SQL Server yang Anda gunakan (tidak semua komponen mengikuti pengaturan itu), dll.
sumber
Ini berfungsi secara instan tanpa perlu restart SQL:
Opsi Konfigurasi Server Memori Server
Gunakan dua opsi memori server, memori server minimal dan maks , untuk mengkonfigurasi ulang jumlah memori (dalam megabita) yang dikelola oleh SQL Server Memory Manager untuk instance dari SQL Server. Secara default, SQL Server dapat mengubah persyaratan memorinya secara dinamis berdasarkan sumber daya sistem yang tersedia.
Prosedur untuk mengonfigurasi jumlah memori tetap Untuk menetapkan jumlah memori tetap:
Gunakan pengaturan default untuk memungkinkan SQL Server mengubah persyaratan memorinya secara dinamis berdasarkan sumber daya sistem yang tersedia. Pengaturan default untuk memori server min adalah 0, dan pengaturan default untuk memori server maks adalah 2147483647 megabita (MB).
Saya harap ini membantu!
sumber
Seperti kata Eric, Anda harus mengelola memori untuk menjaga ruang kosong untuk proses lainnya. Untuk penjelasan umum dan beberapa panduan tentang cara mengatur memori maksimum, periksa pos oleh Jonathan Kehayias:
http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actual-need/
Anda dapat memodifikasi rekomendasi dengan mempertimbangkan penggunaan server Anda.
sumber
SQL Server akan menggunakan RAM yang tersedia kecuali Anda membatasi penggunaan. Sebagai aturan saya mencoba untuk meninggalkan tidak kurang dari 2GB gratis untuk OS, yaitu jika Anda memiliki 64 GB RAM fisik di host, tutup SQL Server @ 62 GB.
http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx
sumber