Pantau penggunaan memori
Berlaku untuk: SQL Server
Pantau instans SQL Server secara berkala untuk mengonfirmasi bahwa penggunaan memori berada dalam rentang umum.
Mengonfigurasi memori maks SQL Server
Secara default, instans SQL Server dapat seiring waktu menggunakan sebagian besar memori sistem operasi Windows yang tersedia di server. Setelah memori diperoleh, memori tidak akan dirilis kecuali tekanan memori terdeteksi. Ini dirancang dan tidak menunjukkan kebocoran memori dalam proses SQL Server. Gunakan opsi memori server maks untuk membatasi jumlah memori yang diizinkan untuk diperoleh SQL Server untuk sebagian besar penggunaannya. Untuk informasi selengkapnya, lihat Panduan Arsitektur Manajemen Memori.
Di SQL Server di Linux, atur batas memori dengan alat mssql-conf dan pengaturan memory.memorylimitmb.
Memantau memori sistem operasi
Untuk memantau kondisi memori rendah, gunakan penghitung server Windows berikut. Banyak penghitung memori sistem operasi dapat dikueri melalui tampilan manajemen dinamis sys.dm_os_process_memory dan sys.dm_os_sys_memory.
Memori: Byte yang Tersedia
Penghitung ini menunjukkan berapa banyak byte memori yang saat ini tersedia untuk digunakan oleh proses. Nilai rendah untuk penghitung Byte yang Tersedia dapat menunjukkan kekurangan memori sistem operasi secara keseluruhan. Nilai ini dapat dikueri melalui T-SQL menggunakan sys.dm_os_sys_memory.available_physical_memory_kb.Memori: Halaman/detik
Penghitung ini menunjukkan jumlah halaman yang diambil dari disk karena kesalahan halaman keras atau ditulis ke disk ke ruang kosong dalam set kerja karena kesalahan halaman. Tingkat tinggi untuk penghitung Halaman/detik dapat menunjukkan penomor yang berlebihan.Memori: Kesalahan Halaman/detik Penghitung ini menunjukkan tingkat Kesalahan Halaman untuk semua proses termasuk proses sistem. Tingkat penomoran ke disk yang rendah tetapi tidak nol (dan karenanya kesalahan halaman) khas, bahkan jika komputer memiliki banyak memori yang tersedia. Microsoft Windows Virtual Memory Manager (VMM) mengambil halaman dari SQL Server dan proses lainnya saat memangkas ukuran yang ditetapkan kerja dari proses tersebut. Aktivitas VMM ini cenderung menyebabkan kesalahan halaman.
Proses: Kesalahan Halaman/detik Penghitung ini menunjukkan tingkat Kesalahan Halaman untuk proses pengguna tertentu. Proses Monitor : Kesalahan Halaman/detik untuk menentukan apakah aktivitas disk disebabkan oleh paging oleh SQL Server. Untuk menentukan apakah SQL Server atau proses lain adalah penyebab halaman yang berlebihan, pantau penghitung Proses: Kesalahan Halaman/detik untuk instans proses SQL Server.
Untuk informasi selengkapnya tentang menyelesaikan halaman yang berlebihan, lihat dokumentasi sistem operasi.
Mengisolasi memori yang digunakan oleh SQL Server
Untuk memantau penggunaan memori SQL Server, gunakan penghitung objek SQL Server berikut. Banyak penghitung objek SQL Server dapat dikueri melalui tampilan manajemen dinamis sys.dm_os_performance_counters atau sys.dm_os_process_memory.
Secara default, SQL Server mengelola persyaratan memorinya secara dinamis, berdasarkan sumber daya sistem yang tersedia. Jika SQL Server membutuhkan lebih banyak memori, SQL Server meminta sistem operasi untuk menentukan apakah memori fisik gratis tersedia dan menggunakan memori yang tersedia. Jika ada memori bebas rendah untuk OS, SQL Server akan merilis memori kembali ke sistem operasi sampai kondisi memori rendah dikurangi, atau sampai SQL Server mencapai batas memori server min. Namun, Anda dapat mengambil alih opsi untuk menggunakan memori secara dinamis dengan menggunakan memori server min, dan opsi konfigurasi server memori server maks. Untuk informasi selengkapnya, lihat Opsi Memori Server.
Untuk memantau jumlah memori yang digunakan SQL Server, periksa penghitung kinerja berikut:
SQL Server: Manajer Memori: Total Memori Server (KB)
Penghitung ini menunjukkan jumlah memori sistem operasi yang saat ini telah diterapkan oleh manajer memori SQL Server ke SQL Server. Jumlah ini diperkirakan akan bertambah sesuai kebutuhan aktivitas aktual, dan akan tumbuh mengikuti startup SQL Server. Kueri penghitung ini menggunakan tampilan manajemen dinamis sys.dm_os_sys_info , mengamati kolom committed_kb .SQL Server: Manajer Memori: Memori Server Target (KB)
Penghitung ini menunjukkan jumlah memori ideal yang dapat dikonsumsi SQL Server, berdasarkan beban kerja terbaru. Bandingkan dengan Total Memori Server setelah periode operasi umum untuk menentukan apakah SQL Server memiliki jumlah memori yang diinginkan yang dialokasikan. Setelah operasi umum, Total Memori Server dan Memori Server Target harus serupa. Jika Total Memori Server secara signifikan lebih rendah dari Memori Server Target, instans SQL Server mungkin mengalami tekanan memori. Selama periode setelah SQL Server dimulai, Total Memori Server diperkirakan lebih rendah dari Memori Server Target, saat Memori Server Total tumbuh. Kueri penghitung ini menggunakan tampilan manajemen dinamis sys.dm_os_sys_info , mengamati kolom committed_target_kb . Untuk informasi selengkapnya dan praktik terbaik mengonfigurasi memori, lihat Opsi konfigurasi memori server.Proses: Set Kerja
Penghitung ini menunjukkan jumlah memori fisik yang digunakan oleh proses saat ini, sesuai dengan sistem operasi. Amati instans sqlservr.exe penghitung ini. Kueri penghitung ini menggunakan tampilan manajemen dinamis sys.dm_os_process_memory , mengamatiphysical_memory_in_use_kb
kolom.Proses: Byte Privat
Penghitung ini menunjukkan jumlah memori yang telah diminta proses untuk penggunaannya sendiri ke sistem operasi. Amati instans sqlservr.exe penghitung ini. Karena penghitung ini mencakup semua alokasi memori yang diminta oleh sqlservr.exe, termasuk yang tidak dibatasi oleh opsi memori server maksimum, penghitung ini dapat melaporkan nilai yang lebih besar dari opsi memori server maks.SQL Server: Manajer Buffer: Halaman Database
Penghitung ini menunjukkan jumlah halaman di kumpulan buffer dengan konten database. Tidak menyertakan memori kumpulan nonbuffer lainnya dalam proses SQL Server. Kueri penghitung ini menggunakan tampilan manajemen dinamis sys.dm_os_performance_counters .SQL Server: Manajer Buffer: Rasio Hit Buffer Cache
Penghitung ini khusus untuk SQL Server. Rasio 90 atau lebih tinggi diinginkan. Nilai yang lebih besar dari 90 menunjukkan bahwa lebih dari 90 persen dari semua permintaan data terpenuhi dari cache data dalam memori tanpa harus membaca dari disk. Temukan informasi selengkapnya tentang Pengelola Buffer SQL Server, lihat Objek Pengelola Buffer SQL Server. Kueri penghitung ini menggunakan tampilan manajemen dinamis sys.dm_os_performance_counters .SQL Server: Manajer Buffer: Harapan hidup halaman
Penghitung ini mengukur jumlah waktu dalam detik yang halaman tertua tetap berada di kumpulan buffer. Untuk sistem yang menggunakan arsitektur NUMA, ini adalah rata-rata di semua simpul NUMA. Nilai yang lebih tinggi dan berkembang adalah yang terbaik. Penurunan mendadak menunjukkan churn data yang signifikan masuk dan keluar dari kumpulan buffer, menunjukkan beban kerja tidak dapat sepenuhnya mendapat manfaat dari data yang sudah ada dalam memori. Setiap simpul NUMA memiliki simpul sendiri dari kumpulan buffer. Di server dengan lebih dari satu simpul NUMA, lihat harapan hidup halaman setiap simpul kumpulan buffer menggunakan SQL Server: Buffer Node: Harapan hidup halaman. Kueri penghitung ini menggunakan tampilan manajemen dinamis sys.dm_os_performance_counters .
Contoh
Menentukan alokasi memori saat ini
Kueri berikut mengembalikan informasi tentang memori yang saat ini dialokasikan.
SELECT
(total_physical_memory_kb/1024) AS Total_OS_Memory_MB,
(available_physical_memory_kb/1024) AS Available_OS_Memory_MB
FROM sys.dm_os_sys_memory;
SELECT
(physical_memory_in_use_kb/1024) AS Memory_used_by_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_by_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;
Menentukan pemanfaatan memori SQL Server saat ini
Kueri berikut mengembalikan informasi tentang pemanfaatan memori SQL Server saat ini.
SELECT
sqlserver_start_time,
(committed_kb/1024) AS Total_Server_Memory_MB,
(committed_target_kb/1024) AS Target_Server_Memory_MB
FROM sys.dm_os_sys_info;
Menentukan harapan hidup halaman
Kueri berikut menggunakan untuk mengamati nilai harapan hidup halaman instans sys.dm_os_performance_counters
SQL Server saat ini di tingkat manajer buffer keseluruhan, dan di setiap tingkat simpul NUMA.
SELECT
CASE instance_name WHEN '' THEN 'Overall' ELSE instance_name END AS NUMA_Node, cntr_value AS PLE_s
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Page life expectancy';
Konten terkait
- Memantau Penggunaan Sumber Daya (Monitor Performa)
- sys.dm_os_sys_memory (T-SQL)
- sys.dm_os_process_memory (T-SQL)
- sys.dm_os_sys_info (T-SQL)
- sys.dm_os_performance_counters (Transact-SQL)
- SQL Server, objek Manajer Memori
- SQL Server, objek Manajer Buffer
- Opsi konfigurasi memori server
- Panduan arsitektur manajemen memori