Saya menggunakan SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDsebagian besar pertanyaan SQL umum saya, terutama karena ini dibor kepada saya ketika awalnya belajar bahasa.
Dari pemahaman saya, level isolasi ini bertindak dengan cara yang sama yang WITH (NO LOCK)bagaimanapun saya cenderung gunakan SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED.
- Apakah pernah ada waktu yang saya harus menggunakan
WITH (NO LOCK)lebihSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED. - Apakah
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDmenghentikan pengguna lain agar tidak dikunci dari tabel yang saya baca? - Jika
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDdigunakan untuk menghentikan kunci, tetapi saya hanya membaca data, apa gunanya menggunakannya? Apakah hanya kueri intensif sistem yang akan menghasilkan kunci? Apakah layak menggunakannya ketika menjalankan kueri yang akan kembali dalam mengatakan, 5-10 detik? - Saya telah diberitahu untuk tidak menggunakan
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDketika membaca data yang akan digunakan dalam pembaruan, mungkin untuk menghindari memperbarui data kotor. Apakah ini satu-satunya alasan? - Dengan jenis database yang saya kerjakan, ada lingkungan produksi dan pengujian. Kami sangat jarang akan menanyakan lingkungan produksi tetapi ketika saya perlu, saya biasanya akan menggunakan
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDdalam permintaan saya. Saya mengerti bahwa pembacaan yang kotor mungkin dilakukan dengan ini. Selain menerima data kembali yang mungkin tidak berkomitmen untuk database (dan karena itu membuang hasil saya) apa jenis 'membaca kotor' apa yang mungkin?
Maaf atas pertanyaan massal.
READ UNCOMMITTEDmana-mana, dengan cara yang sama persis seperti saya tidak akan menggunakan di WITH (NOLOCK)mana-mana (mereka pada dasarnya adalah hal yang sama) blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere