Friday, June 28, 2013

Memahami masalah pemblokiran SQL Server

       Memblokir adalah karakteristik yang tidak dapat dihindari dari setiap relasional sistem manajemen basis data (RDBMS) dengan berbasis kunci concurrency. Pada SQL Server, memblokir terjadi ketika satu SPID memegang kunci pada sumber daya tertentu dan kedua SPID upaya untuk memperoleh sejenis kunci bertentangan pada sumber daya yang sama. Biasanya, kerangka waktu yang SPID pertama mengunci sumber daya yang sangat kecil. Ketika melepaskan kunci, koneksi kedua gratis untuk memperoleh yang memiliki kunci pada sumber daya dan melanjutkan proses. Ini merupakan perilaku normal dan mungkin terjadi berkali-kali sepanjang hari dengan efek tidak terlihat pada kinerja sistem.

       Konteks durasi dan transaksi permintaan menentukan berapa lama kunci yang diselenggarakan dan, dengan demikian, dampaknya terhadap lain queries. Jika query tidak dijalankan dalam transaksi (dan tidak ada petunjuk kunci digunakan), kunci untuk Pilih pernyataan hanya akan diadakan pada sumber daya pada waktu itu benar-benar sedang dibaca, tidak selama query. Untuk INSERT, UPDATE, dan DELETE pernyataan, kunci diadakan selama permintaan, baik untuk data konsistensi dan untuk memungkinkan permintaan untuk memutar kembali Jika diperlukan.

       Untuk pertanyaan yang dijalankan dalam transaksi, durasi yang kunci diadakan ditentukan oleh jenis permintaan, tingkat isolasi transaksi, dan apakah atau tidak petunjuk kunci yang digunakan dalam permintaan. Untuk keterangan mengunci, mengunci petunjuk dan transaksi isolasi tingkat, lihat topik berikut dalam SQL Server buku Online:

  • Mengunci di mesin Database
  • Menyesuaikan mengunci dan versi baris
  • Kunci mode
  • Kunci kompatibilitas
  • Baris berbasis versi tingkat isolasi di mesin Database
  • Mengendalikan transaksi (Database Engine)
        Ketika mengunci dan memblokir peningkatan ke titik di mana ada efek yang merugikan pada kinerja sistem, hal ini biasanya disebabkan oleh salah satu alasan berikut:
  • SPID memegang kunci pada set sumber daya untuk diperpanjang jangka waktu sebelum melepaskan mereka. Jenis ini menghalangi menyelesaikan sendiri dari waktu ke waktu, tetapi dapat menyebabkan penurunan kinerja.
  • SPID memegang kunci pada set sumber daya dan tidak pernah melepaskan mereka. Jenis ini menghalangi tidak memecahkan itu sendiri dan mencegah akses ke terpengaruh sumber daya tanpa batas.
      Dalam skenario pertama di atas, masalah pemblokiran menyelesaikan itu sendiri dari waktu ke waktu sebagai SPID melepaskan kunci. Namun, situasi dapat sangat fluida berbeda SPIDs menyebabkan menghalangi pada sumber daya yang berbeda dari waktu ke waktu, menciptakan target yang bergerak. Untuk alasan ini, situasi ini dapat menjadi sulit untuk memecahkan masalah menggunakan SQL Server Enterprise Manager atau individu SQL queries. The kedua hasil situasi di negara yang konsisten yang dapat lebih mudah untuk mendiagnosis.

No comments:

Post a Comment