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.
NOLOCK
kata kunci dalam basis kode untuk Stack Overflow dan menemukan 138 instance, jadi kami menggunakannya di beberapa tempat.