Justifikasi JANGAN menggunakan petunjuk (nolock) di setiap kueri


23

Pernahkah Anda membenarkan TIDAK menggunakan petunjuk permintaan?

Saya melihat WITH (NOLOCK)di setiap permintaan yang mengenai server yang sangat sibuk. Sampai-sampai para pengembang berpikir itu seharusnya diaktifkan secara default karena mereka benci melihatnya dalam kode mereka ribuan kali.

Saya mencoba menjelaskan bahwa itu memungkinkan pembacaan yang kotor dan pada akhirnya mereka akan mendapatkan data yang buruk, tetapi mereka percaya pengorbanan kinerja sangat berharga. (Basis data mereka berantakan; tidak heran mereka memiliki masalah kinerja.)

Jika Anda memiliki contoh yang jelas tentang bagaimana menyajikan kasus terhadap penyalahgunaan NOLOCKpetunjuk ini, itu akan dihargai.

Jawaban:


17

Anda memilih pertempuran dan pertempuran seperti ini tidak bisa dimenangkan dengan mudah. Kami memiliki sistem di mana setiap DML diisyaratkan dengan petunjuk ROWLOCK (terlepas dari memodifikasi satu baris atau beberapa ribu baris). Saya menunjukkan beberapa contoh mengapa itu benar-benar merusak kinerja tetapi karena sistem sudah bekerja, ada penolakan untuk berubah. Perhatikan bahwa saya cukup meyakinkan mereka untuk TIDAK menggunakan ini untuk maju.

NOLOCK telah menempatkannya tetapi saya dapat merekomendasikan beberapa referensi bagus yang menunjukkan kesulitan menggunakannya:



9

Anda harus menjelaskan kepada kolega Anda pentingnya memahami tingkat isolasi. Tunjukkan pada mereka contoh. Penjelasan terbaik dan termudah yang saya temukan di Little Kendra's poster tingkat isolasi . Tanyakan kepada mereka mengapa mereka pikir mereka perlu petunjuk nolock. Mengapa mereka tidak menggunakan pernyataan "atur tingkat isolasi transaksi ..."? Tanyakan apa sebenarnya situasi yang ingin mereka perbaiki, mungkin mereka memiliki deadlock, memblokir .. dll Jika mereka tidak ingin memegang kunci, mereka mungkin mempertimbangkan tingkat isolasi snapshot.

Hanya dengan bertanya kepada mereka Anda dapat memiliki gambaran yang jelas.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.