Opsi Konfigurasi Memori Server

Gunakan dua opsi memori server, memori server min dan memori server maks, untuk mengonfigurasi ulang jumlah memori (dalam megabyte) yang dikelola oleh SQL Server Memory Manager untuk proses SQL Server yang digunakan oleh instans SQL Server.

Pengaturan default untuk memori server min adalah 0, dan pengaturan default untuk memori server maks 2147483647 MB. Secara default, SQL Server dapat mengubah persyaratan memorinya secara dinamis berdasarkan sumber daya sistem yang tersedia.

Catatan

Mengatur memori server maks ke nilai minimum dapat sangat mengurangi performa SQL Server dan bahkan mencegahnya dimulai. Jika Anda tidak dapat memulai SQL Server setelah mengubah opsi ini, mulai menggunakan opsi startup -f dan reset memori server maks ke nilai sebelumnya. Untuk informasi selengkapnya, lihat Opsi Startup Layanan Mesin Database.

Ketika SQL Server menggunakan memori secara dinamis, ia meminta sistem secara berkala untuk menentukan jumlah memori kosong. Mempertahankan memori gratis ini mencegah sistem operasi (OS) dari penomor. Jika memori lebih sedikit gratis, SQL Server merilis memori ke OS. Jika lebih banyak memori gratis, SQL Server dapat mengalokasikan lebih banyak memori. SQL Server menambahkan memori hanya ketika beban kerjanya membutuhkan lebih banyak memori; server saat istirahat tidak meningkatkan ukuran ruang alamat virtualnya.

Lihat contoh B untuk kueri untuk mengembalikan memori yang saat ini digunakan. memori server maks mengontrol alokasi memori SQL Server, termasuk kumpulan buffer, memori kompilasi, semua cache, peruntukan memori qe, memori manajer kunci, dan memori clr (pada dasarnya setiap pegawai memori yang ditemukan di sys.dm_os_memory_clerks). Memori untuk tumpukan utas, tumpukan memori, penyedia server tertaut selain SQL Server, dan memori apa pun yang dialokasikan oleh DLL yang tidak SQL Server tidak dikendalikan oleh memori server maks.

SQL Server menggunakan API pemberitahuan memori QueryMemoryResourceNotification untuk menentukan kapan SQL Server Memory Manager dapat mengalokasikan memori dan memori rilis.

Memungkinkan SQL Server menggunakan memori secara dinamis disarankan; namun, Anda dapat mengatur opsi memori secara manual dan membatasi jumlah memori yang dapat diakses SQL Server. Sebelum Anda mengatur jumlah memori untuk SQL Server, tentukan pengaturan memori yang sesuai dengan mengurangi, dari total memori fisik, memori yang diperlukan untuk OS dan instans SQL Server lainnya (dan penggunaan sistem lainnya, jika komputer tidak sepenuhnya didedikasikan untuk SQL Server). Perbedaan ini adalah jumlah maksimum memori yang dapat Anda tetapkan ke SQL Server.

Mengatur Opsi Memori Secara Manual

Opsi server min memori server dan memori server maks dapat diatur untuk menjangkau berbagai nilai memori. Metode ini berguna bagi administrator sistem atau database untuk mengonfigurasi instans SQL Server bersama dengan persyaratan memori aplikasi lain, atau instans SQL Server lain yang berjalan pada host yang sama.

Catatan

Memori server min dan opsi memori server maks adalah opsi tingkat lanjut. Jika Anda menggunakan prosedur tersimpan sistem sp_configure untuk mengubah pengaturan ini, Anda hanya dapat mengubahnya saat memperlihatkan opsi tingkat lanjut diatur ke 1. Pengaturan ini segera berlaku tanpa menghidupkan ulang server.

Gunakan min_server_memory untuk menjamin jumlah minimum memori yang tersedia untuk SQL Server Memory Manager untuk instans SQL Server. SQL Server tidak akan segera mengalokasikan jumlah memori yang ditentukan dalam memori server min saat startup. Namun, setelah penggunaan memori mencapai nilai ini karena beban klien, SQL Server tidak dapat membebaskan memori kecuali nilai memori server min berkurang. Misalnya, ketika beberapa instans SQL Server dapat ada secara bersamaan di host yang sama, atur parameter min_server_memory alih-alih max_server_memory untuk tujuan menyimpan memori untuk instans. Selain itu, menetapkan nilai min_server_memory sangat penting dalam lingkungan virtual untuk memastikan tekanan memori dari host yang mendasar tidak mencoba untuk membatalkan alokasi memori dari kumpulan buffer pada tamu SQL Server komputer virtual (VM) di luar apa yang diperlukan untuk performa yang dapat diterima.

Catatan

SQL Server tidak dijamin untuk mengalokasikan jumlah memori yang ditentukan dalam memori server min. Jika beban pada server tidak pernah memerlukan alokasi jumlah memori yang ditentukan dalam memori server min, SQL Server akan berjalan dengan lebih sedikit memori.

Gunakan max_server_memory untuk menjamin OS tidak mengalami tekanan memori yang merugikan. Untuk mengatur konfigurasi memori server maksimum, pantau konsumsi keseluruhan proses SQL Server untuk menentukan persyaratan memori. Agar lebih akurat dengan perhitungan ini untuk satu instans:

  • Dari total memori OS, cadangkan 1GB-4GB ke OS itu sendiri.
  • Kemudian kurangi setara dengan potensi alokasi memori SQL Server di luar kontrol memori server maks, yang terdiri dari ukuran tumpukan 1 * menghitung utas pekerja maks 2 + -g parameter startup 3 (atau 256MB secara default jika -g tidak diatur). Apa yang tersisa harus menjadi pengaturan max_server_memory untuk satu penyiapan instans.

1 Lihat panduan Arsitektur Manajemen Memori untuk informasi tentang ukuran tumpukan utas per arsitektur.

2 Lihat halaman dokumentasi tentang cara Mengonfigurasi Opsi Konfigurasi Server utas pekerja maks, untuk informasi tentang utas pekerja default terhitung untuk sejumlah CPU afinitas tertentu di host saat ini.

3 Lihat halaman dokumentasi tentang Opsi Startup Layanan Mesin Database untuk informasi tentang parameter startup -g . Hanya dapat diajukan ke SQL Server 32-bit (SQL Server 2005 hingga SQL Server 2014).

Jenis OS Jumlah Memori Minimum yang Diizinkan untuk memori server maks
32-bit 64 MB
64-bit 128 MB

Cara mengonfigurasi opsi memori menggunakan SQL Server Management Studio

Gunakan dua opsi memori server, memori server min dan memori server maks, untuk mengonfigurasi ulang jumlah memori (dalam megabyte) yang dikelola oleh SQL Server Memory Manager untuk instans 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 mengatur jumlah memori tetap:

  1. Di Object Explorer, klik kanan server dan pilih Properti.

  2. Klik simpul Memori .

  3. Di bawah Opsi Memori Server, masukkan jumlah yang Anda inginkan untuk Memori server minimum dan Memori server maksimum.

    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 2147483647 megabyte (MB).

Memaksimalkan Throughput Data untuk Aplikasi Jaringan

Untuk mengoptimalkan penggunaan memori sistem untuk SQL Server, Anda harus membatasi jumlah memori yang digunakan oleh sistem untuk penembolokan file. Untuk membatasi cache sistem file, pastikan bahwa Maksimalkan throughput data untuk berbagi file tidak dipilih. Anda dapat menentukan cache sistem file terkecil dengan memilih Minimalkan memori yang digunakan atau Saldo.

Untuk memeriksa pengaturan saat ini pada sistem operasi Anda

  1. Klik Mulai, klik Panel Kontrol, klik dua kali Koneksi Jaringan, lalu klik dua kali Koneksi Area Lokal.

  2. Pada tab Umum , klik Properti, pilih Berbagi File dan Printer Jaringan Microsoft, lalu klik Properti.

  3. Jika Maksimalkan throughput data untuk aplikasi jaringan dipilih, pilih opsi lain, klik OK, lalu tutup kotak dialog lainnya.

Kunci Halaman dalam Memori

Kebijakan Windows ini menentukan akun mana yang dapat menggunakan proses untuk menyimpan data dalam memori fisik, mencegah sistem menomori data ke memori virtual pada disk. Mengunci halaman dalam memori dapat menjaga server tetap responsif ketika memori halaman ke disk terjadi. Opsi SQL Server Kunci Halaman dalam Memori diatur ke AKTIF dalam instans 32-bit dan 64-bit edisi Standar SQL Server 2014 dan lebih tinggi ketika akun dengan hak istimewa untuk dijalankan sqlservr.exe telah diberikan hak pengguna Windows "Halaman Terkunci dalam Memori" (LPIM). Di versi SQL Server sebelumnya, mengatur opsi Kunci Halaman untuk instans SQL Server 32-bit, mengharuskan akun dengan hak istimewa untuk dijalankan sqlservr.exe memiliki hak pengguna LPIM dan opsi konfigurasi 'awe_enabled' diatur ke AKTIF.

Untuk menonaktifkan opsi Kunci Halaman Dalam Memori untuk SQL Server, hapus hak pengguna "Halaman Terkunci dalam Memori" untuk akun startup SQL Server.

Untuk Menonaktifkan Halaman Kunci dalam Memori

Untuk menonaktifkan halaman kunci dalam opsi memori:

  1. Pada menu Mulai , klik Jalankan. Dalam kotak Buka , ketik gpedit.msc.

    Kotak dialog Kebijakan Grup terbuka.

  2. Pada konsol Kebijakan Grup, perluas Konfigurasi Komputer, lalu perluas Pengaturan Windows.

  3. Perluas Pengaturan Keamanan, lalu perluas Kebijakan Lokal.

  4. Pilih folder Penetapan Hak Pengguna .

    Kebijakan akan ditampilkan di panel detail.

  5. Di panel, klik dua kali Kunci halaman dalam memori.

  6. Dalam kotak dialog Pengaturan Kebijakan Keamanan Lokal , pilih akun dengan hak istimewa untuk menjalankan sqlservr.exe dan klik Hapus.

Manajer Memori Virtual

Sistem operasi 32-bit menyediakan akses ke ruang alamat virtual 4 GB. Memori virtual 2 GB bersifat privat per proses dan tersedia untuk penggunaan aplikasi. 2 GB disediakan untuk penggunaan sistem operasi. Semua edisi sistem operasi mencakup sakelar yang dapat menyediakan aplikasi dengan akses hingga 3 GB ruang alamat virtual, membatasi sistem operasi hingga 1 GB. Untuk informasi selengkapnya tentang cara menggunakan konfigurasi memori switch, lihat dokumentasi Windows tentang penyetelan 4-gigabyte (4GT). Ketika SQL Server 32-bit berjalan pada sistem operasi 64-bit, ruang alamat virtual yang tersedia penggunanya adalah 4 GB penuh.

Wilayah ruang alamat yang diterapkan dipetakan ke memori fisik yang tersedia oleh Windows Virtual Memory Manager (VMM).

Untuk informasi selengkapnya tentang jumlah memori fisik yang didukung oleh sistem operasi yang berbeda, lihat dokumentasi Windows "Batas Memori untuk Rilis Windows".

Sistem memori virtual memungkinkan komitmen memori fisik yang berlebihan, sehingga rasio memori virtual-ke-fisik dapat melebihi 1:1. Akibatnya, program yang lebih besar dapat berjalan di komputer dengan berbagai konfigurasi memori fisik. Namun, menggunakan memori virtual yang jauh lebih banyak daripada kumpulan kerja rata-rata gabungan dari semua proses dapat menyebabkan performa yang buruk.

Memori server min dan opsi memori server maks adalah opsi tingkat lanjut. Jika Anda menggunakan prosedur tersimpan sistem sp_configure untuk mengubah pengaturan ini, Anda hanya dapat mengubahnya saat memperlihatkan opsi tingkat lanjut diatur ke 1. Pengaturan ini segera berlaku tanpa menghidupkan ulang server.

Menjalankan Beberapa Instans SQL Server

Saat Anda menjalankan beberapa instans Mesin Database, ada tiga pendekatan yang dapat Anda gunakan untuk mengelola memori:

  • Gunakan memori server maks untuk mengontrol penggunaan memori. Tetapkan pengaturan maksimum untuk setiap instans, berhati-hatilah bahwa total jatah tidak lebih dari total memori fisik pada komputer Anda. Anda mungkin ingin memberikan setiap memori instans sebanding dengan beban kerja atau ukuran database yang diharapkan. Pendekatan ini memiliki keuntungan bahwa ketika proses atau instans baru dimulai, memori gratis akan segera tersedia untuk mereka. Kelemahannya adalah bahwa jika Anda tidak menjalankan semua instans, tidak ada instans yang berjalan yang akan dapat menggunakan memori kosong yang tersisa.

  • Gunakan memori server min untuk mengontrol penggunaan memori. Tetapkan pengaturan minimum untuk setiap instans, sehingga jumlah minimum ini adalah 1-2 GB kurang dari total memori fisik pada komputer Anda. Sekali lagi, Anda dapat menetapkan minimum ini secara proporsional dengan beban instans yang diharapkan. Pendekatan ini memiliki keuntungan bahwa jika tidak semua instans berjalan pada saat yang sama, yang berjalan dapat menggunakan memori kosong yang tersisa. Pendekatan ini juga berguna ketika ada proses intensif memori lain di komputer, karena akan memastikan bahwa SQL Server setidaknya akan mendapatkan jumlah memori yang wajar. Kelemahannya adalah bahwa ketika instans baru (atau proses lain) dimulai, mungkin perlu beberapa waktu bagi instans yang sedang berjalan untuk merilis memori, terutama jika mereka harus menulis halaman yang dimodifikasi kembali ke database mereka untuk melakukannya.

  • Jangan lakukan apa-apa (tidak disarankan). Instans pertama yang disajikan dengan beban kerja akan cenderung mengalokasikan semua memori. Instans diam, atau instans yang dimulai nanti, mungkin akan berjalan hanya dengan jumlah memori minimal yang tersedia. SQL Server tidak mencoba menyeimbangkan penggunaan memori di seluruh instans. Namun, semua instans akan merespons sinyal Pemberitahuan Memori Windows untuk menyesuaikan ukuran jejak memorinya. Windows tidak menyeimbangkan memori di seluruh aplikasi dengan API Pemberitahuan Memori. Ini hanya memberikan umpan balik global tentang ketersediaan memori pada sistem.

Anda dapat mengubah pengaturan ini tanpa memulai ulang instans, sehingga Anda dapat dengan mudah bereksperimen untuk menemukan pengaturan terbaik untuk pola penggunaan Anda.

Menyediakan Jumlah Maksimum Memori untuk SQL Server

32-bit 64-bit
Memori konvensional Hingga memproses batas ruang alamat virtual di semua edisi SQL Server:

2 GB

3 GB dengan parameter boot /3gb *

4 GB di WOW64**
Hingga memproses batas ruang alamat virtual di semua edisi SQL Server:

8 TB pada arsitektur x64

*/3gb adalah parameter boot sistem operasi. Untuk informasi selengkapnya, kunjungi Pustaka MSDN.

**WOW64 (Windows pada Windows 64) adalah mode di mana SQL Server 32-bit berjalan pada sistem operasi 64-bit. Untuk informasi selengkapnya, kunjungi Pustaka MSDN.

Contoh

Contoh A

Contoh berikut mengatur opsi ke max server memory 4 GB:

sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'max server memory', 4096;  
GO  
RECONFIGURE;  
GO  

Contoh B. Menentukan Alokasi Memori Saat Ini

Kueri berikut mengembalikan informasi tentang memori yang saat ini dialokasikan.

SELECT  
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,  
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,  
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,  
process_physical_memory_low,  
process_virtual_memory_low  
FROM sys.dm_os_process_memory;  

Lihat juga

Monitor dan Selaraskan Kinerja
KONFIGURASI ULANG (Transact-SQL)
Opsi Konfigurasi Server (SQL Server)
sp_configure (Transact-SQL)