Rencana pelaksanaan kueri tidak menampilkan detail penguncian secara default, apakah mungkin untuk melihat kunci, bersama dengan jenisnya, yang diperoleh selama eksekusi kueri?
sumber
Rencana pelaksanaan kueri tidak menampilkan detail penguncian secara default, apakah mungkin untuk melihat kunci, bersama dengan jenisnya, yang diperoleh selama eksekusi kueri?
apakah mungkin untuk melihat kunci, bersama dengan jenisnya, yang diperoleh selama pelaksanaan kueri?
Ya, untuk menentukan kunci,
Anda dapat menggunakan beta_lockinfooleh Erland Sommarskog
beta_lockinfo
adalah prosedur tersimpan yang menyediakan informasi tentang proses dan kunci yang mereka pegang serta transaksi aktifnya.beta_lockinfo
dirancang untuk mengumpulkan informasi sebanyak mungkin tentang situasi pemblokiran, sehingga Anda dapat langsung menemukan pelakunya dan membunuh proses pemblokiran jika situasinya putus asa. Kemudian Anda dapat duduk dan menganalisis output daribeta_lockinfo
untuk memahami bagaimana situasi pemblokiran muncul dan mencari tahu tindakan apa yang harus diambil untuk mencegah agar situasi tidak terjadi lagi. Keluaran daribeta_lockinfo
menunjukkan semua proses aktif serta proses pasif dengan kunci, objek mana yang dikunci, perintah apa yang terakhir mereka kirimkan dan pernyataan apa yang mereka jalankan. Anda juga mendapatkan paket permintaan untuk laporan saat ini. Biasanya, Anda laribeta_lockinfo
untuk melihat output secara langsung, tetapi ada juga mode arsip di mana data disimpan ke tabel. Ini bukan yang paling tidak berguna, jika Anda ingin seseorang mengirimi Anda hasil daribeta_lockinfo
situs yang tidak dapat Anda akses sendiri.
Metode lain adalah menggunakan sp_whoIsActiveoleh Adam Machanic dengan@get_locks = 1
EXEC sp_WhoIsActive
@filter = '',
@filter_type = 'session',
@not_filter = '',
@not_filter_type = 'session',
@show_own_spid = 0,
@show_system_spids = 0,
@show_sleeping_spids = 1,
@get_full_inner_text = 0,
@get_plans = 1,
@get_outer_command = 1,
@get_transaction_info = 0,
@get_task_info = 1,
@get_locks = 1, ----------> 1 = ON (get lock info); 0 = OFF
@get_avg_time = 0,
@get_additional_info = 0,
@find_block_leaders = 0,
@delta_interval = 0,
@output_column_list = '[dd%][session_id][sql_text][sql_command][login_name][wait_info][tasks][tran_log%][cpu%][temp%][block%][reads%][writes%][context%][physical%][query_plan][locks][%]',
@sort_order = '[start_time] ASC',
@format_output = 1,
@destination_table = '',
@return_schema = 0,
@schema = NULL,
@help = 0
Inilah cara saya melihat kunci berdasarkan proses / tabel / jenis kunci:
sumber
Anda dapat melihat riwayat kunci yang diperoleh di tab "Pesan" setelah menjalankan ini: DBCC TRACEON (1200, 3604, -1) Namun WASPADALAH, ini memungkinkan bendera jejak tersebut secara GLOBAL, jadi jangan lupa mematikannya segera setelah Anda tidak melakukannya. butuh mereka.
sumber
Anda dapat melihat kunci untuk sesi menggunakan sp_lock atau sys.dm_tran_locks. Dengan kedua cara ini, Anda dapat memfilter menurut sesi. Anda juga dapat menggunakan Acara yang Diperpanjang untuk melakukan itu.
sumber
Ya, Anda dapat melihat kunci dan jenisnya selama eksekusi permintaan melalui
SP_whoisactive Adam mechanics klik di sini untuk melihat
Apalagi jika Anda ingin membuat laporan blok dengan Anda dapat melakukannya dengan bantuan pelacakan seperti yang dijelaskan di sini
sumber
performance counters
hanya akan memberi Anda contoh perilaku luas. OP ingin di tingkat permintaan.