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

Apakah praktik buruk NOLOCK (Petunjuk Sql Server)?

Sebelum mengerjakan Stack Overflow, saya menentang NOLOCK pada prinsip bahwa Anda berpotensi melakukan SELECT dengan NOLOCK dan dapatkan kembali hasil dengan data yang mungkin kedaluwarsa atau tidak konsisten. Faktor yang perlu dipikirkan adalah berapa banyak record yang dapat dimasukkan/diperbarui pada saat yang sama, proses lain mungkin memilih data dari tabel yang sama. Jika ini sering terjadi maka kemungkinan besar akan terjadi deadlock kecuali jika Anda menggunakan mode database seperti READ COMMITED SNAPSHOT .

Sejak itu saya mengubah perspektif saya tentang penggunaan NOLOCK setelah menyaksikan bagaimana hal itu dapat meningkatkan SELECT kinerja serta menghilangkan kebuntuan pada SQL Server yang dimuat secara besar-besaran. Ada kalanya Anda mungkin tidak peduli bahwa data Anda tidak benar-benar 100% berkomitmen dan Anda membutuhkan hasil kembali dengan cepat meskipun mungkin kedaluwarsa.

Ajukan pertanyaan kepada diri sendiri ketika berpikir untuk menggunakan NOLOCK :

Apakah kueri saya menyertakan tabel yang memiliki jumlah INSERT . yang tinggi? /UPDATE perintah dan apakah saya peduli jika data yang dikembalikan dari kueri mungkin kehilangan perubahan ini pada saat tertentu?

Jika jawabannya tidak, maka gunakan NOLOCK untuk meningkatkan kinerja.

Saya baru saja melakukan pencarian cepat untuk NOLOCK kata kunci dalam basis kode untuk Stack Overflow dan menemukan 138 instance, jadi kami menggunakannya di beberapa tempat.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prosesor AMD EPYC 7002 Series dan SQL Server

  2. Apa itu @@TEXTSIZE di SQL Server?

  3. Ubah nilai kolom yang dipisahkan koma menjadi baris

  4. Bagaimana menemukan semua dependensi tabel di sql server

  5. Perbaiki Msg 529 "Konversi eksplisit dari tipe data int ke xml tidak diizinkan" di SQL Server