SQL Server Deadlock Graph - Table, Page atau Row Lock?

10

Apakah ada cara untuk menguraikan jika kunci dalam grafik kebuntuan adalah tingkat Tabel, Halaman atau Baris? Saya memiliki semua informasi yang saya butuhkan dari grafik, termasuk Level Isolasi, (2) tetapi saya benar-benar ingin mengetahui hal ini juga.

Terima kasih kepada siapa saja yang dapat membantu!

tuseau
sumber

Jawaban:

13

Pada grafik deadlock XML Anda akan melihat sesuatu seperti:

<deadlock-list>
  <deadlock victim="...">
    <process-list>
      <process id="..." ... waitresource="X:..."
...

The Xadalah sedikit menarik, nilai yang mungkin Anda tertarik dalam adalah:

  • RID untuk id baris (penguncian level baris)
  • PAG untuk kunci tingkat halaman
  • OBJECT(yang mungkin lebih lanjut memenuhi syarat TABmenunjukkan kunci meja)

Ada beberapa jenis lain yang tercantum dalam dokumentasi juga.

Gayus
sumber
Terima kasih, itu berguna. Meskipun dalam grafik saya, saya memiliki 2 proses, yang tampaknya menggunakan halaman yang berbeda: waitresource = "RID: 21: 1: 2588: 0" waitresource = "RID: 21: 1: 2699: 1" Jadi jika mereka menggunakan halaman yang berbeda , maka mereka tidak dapat bertentangan dengan baris yang sama, benar? Karena saya menggunakan petunjuk WITH (ROWLOCK) pada kueri ini.
tuseau
2
Jika proses 1 memegang 2699 dan menginginkan 2588, dan proses 2 memegang 2588 dan ingin 2699, itu akan menemui jalan buntu. Ingat kebuntuan menyiratkan ketergantungan melingkar.
Gayus