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 dari penghitung ini. Kueri penghitung ini menggunakan tampilan manajemen dinamis sys.dm_os_process_memory , mengamati physical_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 dari penghitung ini. Karena penghitung ini mencakup semua alokasi memori yang diminta oleh sqlservr.exe, termasuk yang tidak dibatasi oleh opsi memori server maks, 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';