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

Metrik Kinerja SQL Server untuk Tetap Terdepan dalam Game

“Dok, saya khawatir dengan kinerja SQL Server saya.”

Itu bukan jenis hal yang Anda dengar dari kebanyakan pasien. Namun, sebagai profesional berbayar, saya telah dilatih untuk menangani semuanya — bahkan saat-saat sulit menjadi administrator database.

"Betulkah? Mari kita jelajahi itu, ya?”

“Tentu, Dok. Maksudku, kadang-kadang terasa begitu luar biasa. Saya pikir semuanya akan berjalan dengan sendirinya setelah saya berkomitmen untuk itu. Tapi sebelum saya menyadarinya, saya mulai mengalami masalah kinerja di SQL Server 2012, lalu 2014, lalu 2017. Saya bahkan tidak ingin memikirkan SQL Server 2019.”

"Saya mengerti. Nah, hubungan yang baik dengan SQL Server tidak terjadi begitu saja. Anda harus bekerja untuk itu. Katakan padaku, apakah Anda sudah mengerjakan teknik penyetelan kinerja SQL Server Anda?”

“Eh, tidak, Dok. Saya tidak benar-benar tahu teknik-teknik itu.”

"Jangan khawatir. Kita bisa bekerja pada mereka. SQL Server Anda mungkin merasa diabaikan. Anda harus mengawasinya untuk memastikan Anda tetap terdepan dalam permainan. Itu membutuhkan pemantauan SQL Server.”

“Pemantauan? Bagaimana Anda melakukannya?”

“Anda harus menunjukkan SQL Server bahwa Anda peduli. Anda harus memperhatikan metrik tertentu. Kami juga bisa mengerjakannya.”

“Oke, Dok. Terserah apa kata kamu. Saya bersedia untuk mencoba apa pun pada saat ini. Tidak ada yang lebih buruk dari sekarang.”

"Bagus kalau begitu. Mari kita mulai."

Metrik kinerja SQL Server — Banyak bagian yang bergerak

Pasien benar:memantau kinerja SQL Server Anda bisa terasa luar biasa. Anda tidak dapat berhenti memperhatikannya setelah aktif dan berjalan. Anda harus terus menunjukkan bahwa Anda peduli.

SQL Server memiliki banyak bagian yang bergerak yang terus-menerus menghasilkan metrik. Mengetahui mana yang harus ditonton dan kemudian benar-benar meluangkan waktu dari hari sibuk Anda untuk memantaunya bisa menjadi pekerjaan berat bagi DBA.

Jadi saya membahas beberapa area utama metrik kinerja SQL Server dengan pasien.

Indeks

Salah satu tempat pertama yang harus dilihat ketika Anda mengalami masalah kinerja dengan SQL Server adalah indeks. Data Anda selalu bertambah, jadi indeks Anda juga selalu bertambah. Namun mereka tunduk pada kondisi seperti fragmentasi dan pemisahan halaman yang dapat memperlambat respons terhadap kueri.

Apa yang terjadi di database hari demi hari? Pengguna membuat, mengedit, dan menghapus catatan. Indeks mengikuti di mana semua bagian catatan berada, tetapi seiring waktu, fragmentasi indeks menghambat kinerja.

Lalu ada faktor pengisian indeks, parameter yang dapat Anda konfigurasikan di SQL Server untuk mengontrol jumlah pemisahan halaman dan meningkatkan efisiensi kueri. Namun keseimbangan antara lebih banyak dan lebih sedikit pemisahan halaman memengaruhi kinerja dengan cara lain.

Menonton metrik dalam faktor pengisian , I/O dan fragmentasi adalah cara yang baik untuk menjaga kesehatan indeks SQL Server.

Tembolok penyangga

Mari kita buat ini sederhana:Disk, lambat; buffer cache, cepat. Cache buffer adalah salinan dalam memori dari halaman database yang baru saja digunakan. Jika SQL Server tidak menemukan apa yang dicari di sana, maka SQL Server harus pergi ke disk untuk itu, yang memperlambat kinerja.

SQL Server memungkinkan Anda menentukan jumlah memori sistem untuk dialokasikan ke cache buffer, tetapi Anda menukarnya dengan memori yang tersisa untuk tugas lain. Tujuan Anda adalah mengalokasikan sebanyak mungkin tanpa menghambat kinerja SQL Server di area lain.

Juga penting adalah harapan hidup halaman, jumlah waktu yang dihabiskan halaman informasi dari database di buffer tanpa diakses lagi. SQL Server terus-menerus mengeluarkan halaman dari cache buffer untuk memberi ruang bagi yang lebih baru digunakan. Tetapi semakin sedikit halaman berguna yang ditemukan di sana, semakin banyak yang harus dibaca dari disk, yang memperlambat kinerja.

Metrik seperti harapan hidup halaman dan rasio klik yang berhasil di cache buffer membantu Anda membuat keputusan tentang menghapus halaman lebih jarang atau meningkatkan ukuran cache.

T-SQL

SQL Server menggunakan bahasa query yang disebut T-SQL. Daripada menjalankan pernyataan SQL ad hoc, SQL Server mencoba meningkatkan kinerja dengan mengelompokkannya, mengompilasinya sebagai rencana eksekusi dan menyimpannya dalam cache. Ini juga mencoba meminimalkan frekuensi kompilasi dan menggunakan kembali rencana eksekusi sesering mungkin. Jika tidak dapat menggunakan kembali rencana eksekusi — katakanlah, karena database telah berubah terlalu banyak — maka itu akan mengkompilasi ulang rencana tersebut. Yang terbaik adalah menjaga jumlah kompilasi ulang pernyataan SQL serendah mungkin, karena prosesnya dapat menghabiskan banyak CPU dan menurunkan kinerja.

Kebutuhan untuk mengkompilasi dan mengkompilasi ulang adalah fungsi dari praktik pengkodean yang baik, seperti menggunakan prosedur tersimpan dan membuat parameter kueri. DBA yang memantau metrik seperti kecepatan kompilasi SQL dan kompilasi ulang SQL dapat memodifikasi petunjuk kueri SQL Server untuk meningkatkan kinerja.

Mengunci, menunggu, dan memblokir proses

Sungguh frustasi mengetahui bahwa orang lain sedang memodifikasi sesuatu pada saat yang sama dengan Anda. Jadi database secara otomatis mengunci hal-hal seperti baris dan tabel untuk menjaga beberapa juru masak keluar dari dapur. Trade-off untuk perlindungan itu, tentu saja, adalah bahwa semua pengguna lain harus menunggu sampai sumber daya dibuka. Dan, sulit untuk memastikan bahwa penguncian dilakukan hanya pada tingkat yang diperlukan.

Dengan metrik yang menunjukkan seberapa sering dan seberapa luas penguncian memengaruhi operasi lain, DBA dapat menentukan kebutuhan akan lebih banyak sumber daya sistem fisik untuk memproses transaksi dengan lebih cepat. Mungkin juga SQL Server mengunci pada level rendah yang tidak perlu. Frekuensi kunci menunggu dan, secara lebih luas, jumlah proses yang diblokir dapat membantu dalam menemukan kemacetan.

Hilangkan kemacetan dengan penyetelan kinerja SQL

“Astaga, Dok, Anda benar tentang semua bagian yang bergerak. Sekarang saya melihat bagaimana saya tidak bisa begitu saja menginstal SQL Server, mengaturnya dan melupakannya. Saya perlu memelihara hubungan. Tapi ini semua masih terasa luar biasa. Bagaimana saya bisa mempertahankan begitu banyak hal yang berbeda dan tetap menjadi yang terdepan dalam permainan?”

“Itu bagian yang terbaik. Ada alat yang dapat membantu kinerja SQL Server Anda. Anda tidak harus melakukannya sendiri.”

"Wah! Itu meyakinkan. Saya tidak tahu tentang itu.”

"Betul sekali. Alat ini memantau kinerja server SQL Anda dan melaporkan semua metrik ini sehingga Anda dapat menerapkan teknik penyetelan dan menghilangkan kemacetan.”

“Benarkah?”

"Tentu. Dan kita bisa mengerjakannya dengan benar — oh, astaga, kita kehabisan waktu untuk minggu ini. Tolong buat janji dengan resepsionis saya dan kami akan mengambilnya minggu depan.”

“Wah, empat jam itu berlalu dengan cepat, Dok! Waktu pasti berlalu dengan cepat saat Anda mengatasi masalah kinerja seputar fragmentasi, penggunaan sumber daya dan rasio hit cache buffer , bukan?”

“Ya, dan saya yakin bahwa setelah Anda berkomunikasi secara terbuka tentang masalah tersebut dengan SQL Server Anda, semua masalah kinerja Anda akan menjadi sejarah.”

Bersemangat dengan sesi kami, pasien pergi. Lain kali, kami akan bekerja memantau kemacetan kinerja SQL Server. Saya akan membuat blog tentangnya, jadi pantau terus.

Sementara itu, percayalah padaku. Saya seorang profesional berbayar, dan saya mendorong Anda untuk mencoba hal-hal ini dalam hubungan Anda sendiri dengan database Anda. Buat SQL Server Anda merasa diinginkan. Perhatikan metrik kinerjanya.

Tidak ada kata terlambat untuk mencoba.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tingkatkan penyetelan kinerja SQL Server dengan 3 tips ini

  2. bisakah kita memiliki kunci asing yang bukan kunci utama di tabel lain?

  3. Sisipkan Pemicu pembaruan cara menentukan apakah memasukkan atau memperbarui

  4. Cara Mendeteksi jika Nilai Berisi Setidaknya Satu Nomor di SQL Server

  5. Kesalahan 28000:Gagal masuk untuk pengguna DOMAIN\\pengguna dengan pyodbc