Saya telah melihat beberapa orang memanggil SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
sebelum membaca sistem DMV. Apakah ada alasan untuk melakukan ini, dengan asumsi Anda tidak mencampur panggilan ke DMV dan tabel dalam transaksi yang sama?
sql-server
dmv
James L.
sumber
sumber
sys.dm_exec_query_stats
dengansys.dm_exec_sql_text
dansys.dm_exec_query_plan
.Jawaban:
Ketika salah satu dari mereka menulis permintaan demo DMV seperti itu, saya akan menjelaskan alasannya.
Apakah penting jika Anda hanya meminta DMV? Tidak. Tapi cepat atau lambat, Anda akan mengambil salah satu skrip DMV Anda dan memakukan bergabung ke sys.databases atau sys.tables atau objek sistem lain untuk mendapatkan informasi lebih lanjut tentang apa yang Anda lihat. Jika Anda belum pernah membaca tanpa komitmen di sana, Anda dapat diblokir oleh kueri lain, dan memblokir kueri lainnya. Saya telah dibakar oleh itu berulang kali, jadi saya hanya menggunakan BACA TIDAK DIKOMITMASI secara default setiap kali saya melakukan pekerjaan diagnostik apa pun.
sumber
OBJECT_ID()
,SCHEMA_NAME()
, dllSaya tidak melihat ada bedanya.
Jika saya mencoba yang berikut dan membandingkan output kunci untuk kedua tingkat isolasi di winmerge mereka persis sama (dan bahkan memasangnya untuk
SERIALIZABLE
tidak mengubah output).sumber