Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 11079|Jawab: 1

[Sumber] MSSQL DENGAN (NOLOCK) pembacaan kotor

[Salin tautan]
Dipaparkan pada 2020-4-3 10:06:04 | | |
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





Mantan:Latensi master-slave database menyebabkan resolusi kueri yang tidak akurat
Depan:Menyelesaikan masalah bahwa fiddler tidak dapat merayapi permintaan jaringan localhost lokal, 127.0.0.1
Dipaparkan pada 2020-4-5 14:21:36 |
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com