Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pantau Harapan Hidup Halaman di SQL Server

Metrik SQL Server Page Life Expectancy (PLE) telah lama dianggap sebagai indikator kinerja utama untuk DBA yang melihat kesehatan keseluruhan instance database mereka. PLE menunjukkan apakah sistem berada di bawah tekanan memori internal menggunakan penghitung yang disediakan oleh objek Buffer Manager.

Melihat Lebih Dekat Harapan Hidup Halaman

PLE adalah ukuran lamanya waktu (dalam detik) halaman file data diharapkan untuk tetap berada di kumpulan buffer SQL Server. Metrik ini bukan agregat atau akumulasi, tetapi hanya nilai titik waktu yang akan diminta oleh DBA dari Buffer Manager.

SQL Server hanya membaca halaman data dari kumpulan buffer (yaitu, pembacaan logis), jadi jika halaman tersebut tidak ada di kumpulan buffer, ia menemukannya di disk (yaitu, pembacaan fisik) dan memindahkan halaman ke kumpulan buffer sehingga itu bisa melakukan pembacaan logis. Ini adalah proses yang memakan waktu dan dapat memengaruhi kinerja secara negatif.

Apakah Nilai PLE “Baik” itu?

Nilai PLE yang tinggi berarti halaman berada di buffer pool lebih lama, sehingga SQL Server cenderung tidak perlu pergi ke disk untuk mencari halaman data, yang membuat sistem berjalan lebih cepat.

Secara historis, DBA menganggap 300 detik (lima menit) sweet spot PLE. Namun, jumlah itu cukup arbitrer. Microsoft merekomendasikan 300 sebagai standar PLE di tahun 2000-an ketika memori terbatas.

Saat ini, DBA tidak fokus pada angka yang "benar" karena banyak memori menjadi standar di sebagian besar sistem. Bukan hal yang aneh jika SQL Server berjalan pada sistem yang memiliki TB RAM, jadi DBA telah mengadopsi pendekatan formula untuk mengidentifikasi nilai PLE yang "baik":

Harapan Hidup Halaman =300 detik untuk setiap 4 GB RAM di server Anda

Namun, bisa dibilang lebih penting untuk terus memantau nilai PLE untuk perubahan konsistensi sehingga Anda dapat mengidentifikasi masalah memori dan menyelesaikannya dengan cepat.

Jika Anda bekerja dengan volume data yang besar, penting untuk diperhatikan bahwa server yang lebih besar sering kali memiliki banyak PLE. Setiap node akses memori non-seragam (NUMA) mendapatkan nilai PLE-nya sendiri, dan kemudian angka-angka tersebut dihitung untuk mendapatkan nilai PLE server. Misalnya, ambil nilai PLE dari simpul x 1.000 (lakukan ini untuk semua simpul NUMA). Tambahkan nilai semua node, lalu bagi dengan jumlah total NUMA node, lalu bagi lagi dengan 1.000. Ini akan memberi Anda PLE server.

Cara Menentukan Apakah Ada Masalah dengan Harapan Hidup Halaman

Fluktuasi pada PLE normal karena didasarkan pada beban kerja. Melacak tren tinggi, rata-rata, dan rendah dapat menunjukkan kepada Anda apakah proses tertentu, seperti pemindaian tabel atau menghapus cache buffer, perlu disetel untuk meningkatkan PLE.

Cara yang baik untuk menentukan apakah ada masalah adalah apakah kisaran nilai PLE normal turun dan tetap rendah. Hal ini menunjukkan bahwa ada kemungkinan peningkatan permintaan dan tekanan pada buffer pool.

Apakah ini berarti Anda perlu membuang lebih banyak memori untuk masalah ini? Mungkin. Mungkin tidak.

Pemecahan Masalah Harapan Hidup Halaman SQL Server Rendah

Ada beberapa alasan mengapa nilai PLE cenderung rendah. Sangat penting untuk memecahkan masalah karena solusinya tidak sama untuk setiap akar masalah. Berikut adalah tiga penyebab yang paling mungkin memperlambat PLE Anda:

Memori Tidak Cukup

Jika beban kerja terus meningkat dan PLE berkurang, Anda mungkin kekurangan memori. Menambahkan memori mungkin membantu meningkatkan PLE, tetapi itu tidak akan membuat kueri berjalan lebih efisien.

Operasi Mahal

Jika beban kerja tidak berubah, tetapi ada peningkatan permintaan pada kumpulan buffer, bisa jadi outlier menggunakan lebih banyak memori. Periksa untuk melihat apakah ada pekerjaan pemeliharaan yang sedang berjalan atau pembangunan kembali indeks sedang berlangsung.

Statistik Lama

Statistik basi dapat menyebabkan perubahan pada rencana kueri. Hal ini meningkatkan permintaan pada kumpulan buffer dengan menyebabkan operasi yang mahal berjalan karena tidak disinkronkan dengan statistik baru.

Cara Memperbaiki Harapan Hidup Halaman Rendah dengan Mengoptimalkan Kueri

Cara terbaik untuk memperbaiki nilai PLE yang rendah adalah dengan membuka sumber dan mengoptimalkan kueri SQL Server Anda. Ini datang dengan bonus tambahan karena mengoptimalkan kueri akan meningkatkan kinerja keseluruhan sistem Anda pada saat yang bersamaan.

Ada beberapa hal yang ingin Anda lakukan yang akan membantu Anda mengoptimalkan kueri untuk peningkatan PLE yang maksimal:

  • Lepaskan indeks yang tidak digunakan
  • Gabungkan indeks duplikat
  • Cari kueri besar
  • Ketahui apa yang ada di buffer pool
  • Defrag indeks
  • Perbarui statistik
  • Hapus data

Harapan Umur Laman Pelacakan Seiring Waktu

Meskipun PLE adalah metrik titik-dalam-waktu, melihat PLE dari waktu ke waktu adalah cara penting untuk mengidentifikasi masalah lebih awal dan memperbaikinya dengan cepat sebelum kinerja terpengaruh secara signifikan.

Ada banyak cara untuk memantau metrik PLE dari waktu ke waktu dan mengidentifikasi kueri yang transaksinya menyebabkan banyak pembacaan. DMV dan acara yang diperluas di SQL Server adalah metode yang terbukti benar dan telah berperan dalam proses pengumpulan data ini. Tetapi mereka juga manual dan memakan waktu, dan mereka menawarkan manfaat terbatas dalam hal mendapatkan perspektif historis tentang kinerja metrik dari waktu ke waktu.

Solusi komersial seperti Spotlight Cloud tidak hanya memberi DBA kemampuan untuk melacak PLE langsung dari waktu ke waktu, tetapi juga menganalisis beban kerja untuk mengidentifikasi kueri dan aktivitas outlier mana yang menyebabkan tekanan pada kumpulan buffer sehingga Anda dapat mengisolasi dan memulihkan masalah dan optimalkan kinerja SQL Server Anda.

Awalnya diterbitkan April 2019 dan diperbarui September 2020.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tipe data setara mysql

  2. Cara Mengekspor Data SQL Server Dari Tabel Ke File CSV

  3. Arsitektur SQL Server AlwaysOn (Availability Group) dan Instalasi Langkah demi Langkah -4 Langkah Tambah dan Hapus Database

  4. Cara Melihat Paket Eksekusi Kueri di Azure Data Studio (SQL Server)

  5. Apa gunanya GO di SQL Server Management Studio &Transact SQL?