Saya telah menginstal perangkat lunak pemantauan pada beberapa contoh SQL Server di lingkungan. Saya mencoba menemukan hambatan dan memperbaiki beberapa masalah kinerja. Saya ingin mengetahui apakah beberapa server membutuhkan lebih banyak memori.
Saya tertarik pada satu penghitung: harapan hidup halaman. Itu terlihat berbeda di setiap mesin. Mengapa sering berubah pada beberapa kasus dan apa artinya?
Silakan lihat data dari minggu lalu yang dikumpulkan di beberapa mesin yang berbeda. Apa yang bisa Anda katakan tentang setiap contoh?
Contoh produksi yang sangat banyak digunakan (1):
Istance produksi sedang digunakan (2)
Contoh uji yang jarang digunakan (3)
Contoh produksi yang sangat banyak digunakan (4)
Contoh uji yang cukup digunakan (5)
Gudang data yang sangat digunakan (6)
EDIT: Saya menambahkan output SELECT @@ VERSION untuk semua server ini:
Instance 1: Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Instance 2: Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Instance 3: Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Instance 4: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Instance 5: Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Instance 6: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Saya juga menjalankan kueri berikut pada mesin:
SELECT DISTINCT memory_node_id
FROM sys.dm_os_memory_clerks
dan mengembalikan 2 atau 3 baris untuk setiap server:
Instance 1: 0; 64; 1
Instance 2: 0; 64
Instance 3: 0; 64
Instance 4: 0; 64
Instance 5: 0; 64
Instance 6: 0; 64; 1
Apa artinya? Apakah server ini menjalankan NUMA?
Jawaban:
Diambil dari MSDN: - https://msdn.microsoft.com/en-us/library/ms189628.aspx
Harapan hidup halaman - Menunjukkan jumlah detik halaman akan tetap di kolam buffer tanpa referensi.
SQL selalu mencari halaman data dalam memori. Jika halaman data tidak ada dalam memori SQL harus pergi ke disk (melakukan operasi IO fisik) untuk mengambil data yang diperlukan untuk memenuhi permintaan. Jika penghitung PLE Anda rendah, ini menunjukkan bahwa halaman data dalam memori secara teratur telah ditimpa dengan halaman baru yang berasal dari operasi IO fisik. Operasi IO fisik mahal artinya kinerja turunan SQL Anda akan terpengaruh. Jadi, Anda ingin penghitung PLE Anda setinggi mungkin.
Abaikan saran apa pun yang Anda lihat online yang menyebutkan 300 sebagai ambang batas yang baik untuk penghitung ini
Ambang ini berasal dari hari-hari ketika memori terbatas (pikirkan sistem 32-bit). Sekarang kami memiliki sistem 64-bit yang dapat memiliki TB RAM sehingga saran ini sangat ketinggalan zaman.
Hal pertama, sudahkah Anda membatasi memori SQL? Jika demikian, berapa banyak memori yang tersisa? Bisakah batas ditingkatkan?
Hal kedua yang akan saya cari di server Anda adalah, apakah ada pekerjaan pemeliharaan yang berjalan? Periksa pekerjaan yang melakukan pembangunan kembali indeks, perbarui statistik atau operasi DBCC CHECKDB. Ini melakukan sejumlah besar bacaan dan bisa menjadi alasan untuk lapisan datar PLE Anda,
Selanjutnya, saat Anda menggunakan SQL Server 2008 +, Anda bisa mengatur sesi Peristiwa Diperpanjang untuk menangkap kueri yang masuk yang sedang melakukan sejumlah besar pembacaan. Berikut kode untuk melakukannya: -
Ini akan menangkap semua kueri di server Anda yang melakukan lebih dari 200000 pembacaan logis. Saya tidak tahu berapa banyak memori yang Anda miliki di setiap server sehingga Anda mungkin ingin mengubah angka itu. Setelah ini dibuat, Anda dapat memulai sesi dengan menjalankan: -
Lalu kueri sesi dengan menjalankan: -
Hati-hati saat menjalankan ini! Ukuran file bisa tumbuh cukup besar jadi cobalah terlebih dahulu pada contoh pengembangan. Anda dapat mengatur maks. ukuran file tetapi saya belum memasukkannya di sini. Berikut tautan MSDN untuk Acara yang Diperpanjang: - https://msdn.microsoft.com/en-us/library/hh213147.aspx
Pantau sesi ini secara rutin dan semoga sesi ini akan menjawab pertanyaan apa pun yang masuk ke PLE Anda.
Bacaan lebih lanjut -
Blog MSDN di PLE - http://blogs.msdn.com/b/mcsukbi/archive/2013/04/12/sql-server-page-life-expectancy.aspx
Video tentang pengaturan Acara yang Diperpanjang - https://dbafromthecold.wordpress.com/2014/12/05/video-identifying-large-queries-using-extended-events/ (Ini dari blog saya sendiri, maaf tentang promosi mandiri yang tidak tahu malu ini. )
sumber
Harapan hidup halaman adalah ukuran berapa lama Anda dapat mengharapkan halaman yang baru saja dibaca dari disk untuk berkeliaran di memori sebelum didorong oleh sesuatu yang lain atau dihancurkan (yaitu halaman yang tidak dialokasikan pada disk untuk tidak perlu lagi untuk menyimpan salinan dalam cache RAM).
Sebagai ukuran umum, semakin tinggi semakin cepat pola beban Anda akan diproses karena semuanya disimpan dalam memori. Jika sangat rendah ini dapat mengindikasikan masalah kinerja yang disebabkan oleh kehabisan memori.
Pembacaan yang rendah tidak selalu berarti ada masalah: misalnya, bisa jadi rendah setelah banyaknya sekali proses yang menggunakan banyak halaman sehingga mereka dibawa masuk dan mereka turun untuk memberi ruang lebih banyak. Grafik Anda yang tampaknya turun pada akhir setiap hari misalnya, dapat disebabkan oleh pekerjaan administrasi malam (cadangan, pengarsipan data, pemrosesan semalam lainnya).
sumber