Kekurangan:
1. Ini akan menghasilkan pembacaan kotor
2. Hanya berlaku untuk pernyataan kueri tertentu
Kelebihan:
1. Beberapa file mengatakan bahwa efisiensi kueri SQL dengan WITH (NOLOCK) dapat ditingkatkan sebesar 33%.
2. Dapat digunakan untuk pernyataan gabungan dalam
Pembacaan kotor: Pengguna melakukan modifikasi pada sumber daya, dan pengguna lain kebetulan membaca catatan yang dimodifikasi, dan kemudian pengguna pertama melepaskan modifikasi, dan data kembali ke modifikasi sebelumnya, dua hasil yang berbeda ini adalah pembacaan kotor.
Rincian:
Untuk meningkatkan performa kueri SQL, secara umum, pertimbangan pertama adalah membuat indeks. Faktanya, selain pembentukan indeks, ketika kita menempatkan perintah SQL, menambahkan bagian WITH (NOLOCK) ke sintaks dapat meningkatkan fenomena himpunan data yang DIKUNCI di lingkungan dengan sejumlah besar kueri online, sehingga meningkatkan kinerja kueri.
Namun, satu hal yang perlu diperhatikan adalah bahwa SQL SELECT dengan (NOLOCK) dapat menyebabkan Dirty Read.
Misalnya:
Selain SELECT sederhana, Anda juga dapat menggunakan sintaks SELECT dengan JOIN. Tapi DELETE, INSERT, UPDATE, dan perintah lain yang memerlukan transaksi tidak bagus...
Beberapa file mengatakan bahwa efisiensi kueri SQL dapat ditingkatkan sebesar 33% dengan WITH (NOLOCK). Menambahkan WITH (NOLOCK) memberi tahu SQL Server bahwa perintah SELECT kita tidak perlu mempertimbangkan status kunci transaksi dari tabel saat ini, sehingga performa akan ditingkatkan secara signifikan, dan fenomena kunci sistem database akan berkurang secara signifikan (termasuk kunci buntu).
Satu hal yang perlu diperhatikan adalah bahwa karena WITH (NOLOCK) tidak memperhitungkan kunci transaksi tabel saat ini, jadi ketika ada beberapa data yang berada dalam beberapa fase (misalnya transaksi di beberapa tabel - >misalnya sistem penarikan), WITH (NOLOCK) mengabaikan data yang saat ini sedang memproses proses transaksi...
Terus terang, yaitu saat menggunakan NoLock, memungkinkan membaca data yang telah dimodifikasi tetapi transaksi belum selesai. Oleh karena itu, jika Anda perlu mempertimbangkan integritas data transaksi secara real-time, sebaiknya Anda berpikir baik-baik untuk menggunakan WITH (NOLOCK).
Jika Anda tidak perlu mempertimbangkan transaksi, WITH (NOLOCK) mungkin menjadi referensi yang berguna.
Catatan 1: DENGAN ( < table_hint > ) Menentukan pemindaian tabel, satu atau beberapa indeks yang digunakan oleh pengoptimal kueri, Atau oleh pengoptimal kueri untuk memanfaatkan tabel data ini dan menggunakan mode kunci untuk pernyataan ini.
Catatan 2: WITH (NOLOCK) setara dengan READ UNCOMMITTED
|