Tab DeadLock telah ditambahkan untuk menampilkan informasi deadlock terkait instance ApsaraDB RDS for SQL Server. Informasi ini mencakup waktu mulai transaksi, ID sesi, detail sumber daya yang terkunci, dan jenis deadlock. Anda dapat mengidentifikasi serta mengoptimalkan pernyataan SQL dan pengecualian lainnya yang menyebabkan deadlock berdasarkan informasi ini. Topik ini menjelaskan cara melihat statistik deadlock dari instance ApsaraDB RDS for SQL Server di Konsol Manajemen ApsaraDB RDS.
Informasi latar belakang
Saat menjalankan transaksi untuk memodifikasi sumber daya tertentu, sumber daya tersebut dikunci untuk mencegah modifikasi oleh transaksi konkuren lainnya. Hal ini memastikan konsistensi data.
Dalam kebanyakan kasus, deadlock terjadi ketika beberapa transaksi bersaing untuk mendapatkan sumber daya yang sama. Sebagai contoh, Transaksi A mengunci Sumber Daya A dan mencoba memodifikasi Sumber Daya B, sedangkan Transaksi B mengunci Sumber Daya B dan mencoba memodifikasi Sumber Daya A. Akibatnya, Transaksi A dan Transaksi B saling menunggu sumber daya yang dimiliki satu sama lain, sehingga terjadilah deadlock. Dalam situasi ini, sistem secara otomatis menghentikan sesi dengan biaya rollback lebih rendah, dan tugas dalam sesi tersebut gagal. 
Jenis-jenis deadlock
ApsaraDB RDS dapat menganalisis jenis-jenis deadlock berikut:
KeyDeadlock
ObjectDeadLock
RIDDeadlock
PageDeadlock
ComplieDeadlock
Untuk informasi lebih lanjut tentang setiap jenis deadlock, lihat Granularitas Kunci dan Hierarki.
Mode penguncian
Ketika transaksi mengakses sumber daya, mode penguncian yang digunakan untuk mengunci sumber daya bervariasi berdasarkan tipe akses. ApsaraDB RDS for SQL Server mendukung mode penguncian berikut:
Berbagi (S): Setelah transaksi memperoleh kunci bersama pada sumber daya, sumber daya tersebut hanya bisa dibaca tetapi tidak dapat dimodifikasi hingga transaksi melepaskan kunci bersama.
Pembaruan (U): Setelah transaksi memperoleh kunci pembaruan pada sumber daya, sumber daya tersebut tidak dapat dimodifikasi oleh transaksi lain hingga transaksi tersebut memperoleh kunci eksklusif pada sumber daya.
Eksklusif (X): Setelah transaksi memperoleh kunci eksklusif pada sumber daya, sumber daya tersebut tidak dapat diakses oleh transaksi lain hingga transaksi pertama melepaskan kunci eksklusif.
Prasyarat
Instance RDS Anda tidak menjalankan SQL Server 2008 R2 dengan disk cloud.
Instance RDS Anda berada di salah satu wilayah berikut: Cina (Hangzhou), Cina (Shanghai), Cina (Qingdao), Cina (Beijing), Cina (Zhangjiakou), Cina (Hohhot), Cina (Ulanqab), Cina (Shenzhen), Cina (Heyuan), Cina (Guangzhou), Cina (Chengdu), Cina (Hong Kong), Singapura, dan UEA (Dubai).
Melihat detail deadlock
Pergi ke halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instance RDS berada. Kemudian, temukan instance RDS dan klik ID instance tersebut.
Di panel navigasi di sebelah kiri, pilih .
Pengenalan tab DeadLock
Jumlah deadlock
Bagian ini menampilkan jumlah deadlock selama rentang waktu terakhir. Anda dapat menentukan rentang waktu untuk melihat jumlah deadlock.

Deadlock Trend
Bagian ini menampilkan berbagai jenis deadlock yang terjadi selama rentang waktu tertentu. Anda dapat melakukan operasi berikut untuk menanyakan informasi deadlock:
Tentukan start time dan end time, lalu klik Search untuk melihat tren deadlock yang terjadi selama rentang waktu tersebut. Interval antara waktu mulai dan waktu akhir tidak boleh melebihi 30 hari.
Klik Last 24 Hours, Last 7 Days, atau Last Month untuk melihat tren deadlock selama 1 hari terakhir, 7 hari terakhir, atau 30 hari terakhir.
Geser pointer ke titik waktu tertentu untuk melihat jenis dan jumlah deadlock yang terjadi pada saat itu.
Di sudut kanan atas grafik tren, klik salah satu ikon
untuk mengubah gaya tampilan grafik tren dan mengunduh grafik tren sebagai gambar.

Deadlock Details

Bagian ini menampilkan detail deadlock. Anda dapat mengklik ikon
di sebelah kiri catatan deadlock untuk melihat detail tentang sesi yang menghalangi dan sesi yang terhalangi. Detailnya mencakup informasi berikut:LastTranStarted: menunjukkan waktu mulainya transaksi dalam sesi.
SPID: Menunjukkan ID sesi.
IsVictim: Menunjukkan apakah sesi telah dihentikan.
CatatanSQL Server menyediakan thread pemantau deadlock yang secara berkala memeriksa adanya deadlock. Jika deadlock terdeteksi, SQL Server mengevaluasi sesi yang memblokir dan sesi yang diblokir, lalu menghentikan sesi di mana transaksi dapat di-rollback dengan biaya lebih rendah dibandingkan sesi lainnya. Sebagai contoh, deadlock terjadi antara sesi yang menjalankan pernyataan SELECT dan sesi yang menjalankan pernyataan UPDATE. Pernyataan SELECT dapat di-rollback dengan biaya lebih rendah dibandingkan pernyataan UPDATE. Dalam kasus ini, SQL Server menghentikan sesi yang menjalankan pernyataan SELECT.
LogUsed: Menunjukkan ukuran log yang dihasilkan dalam sesi. Satuan: byte.
LockMode: Menunjukkan mode penguncian dari deadlock.
WaitResourceDesc: Menampilkan detail sumber daya yang ditunggu oleh transaksi dalam sesi.
ObjectOwned: Menunjukkan objek yang dikunci dalam sesi.
ObjectRequested: Menunjukkan objek yang diminta oleh transaksi untuk dikunci dalam sesi.
WaitResource: Menunjukkan nama sumber daya yang ditunggu oleh transaksi dalam sesi.
HostName: Menunjukkan nama host tempat transaksi dalam sesi dijalankan.
LoginName: Menunjukkan nama pengguna akun yang digunakan untuk menjalankan transaksi dalam sesi.
Status: Menunjukkan status transaksi dalam sesi.
ClientApp: Menunjukkan nama klien yang memulai transaksi dalam sesi.
SQLText: Menampilkan detail Pernyataan SQL yang dijalankan dalam Sesi.
CatatanAnda dapat mengklik pernyataan SQL untuk menyalin dan menganalisis lebih lanjut pernyataan SQL tersebut.
Anda dapat mengklik catatan deadlock untuk melihat diagram deadlock di bagian Diagram Deadlock.
Deadlock Diagram

Bagian ini menampilkan hubungan antara sesi yang menghalangi dan sesi yang terhalangi, serta detail tentang sumber daya yang terkunci. Anda dapat mengklik Download untuk mengunduh file XDL yang berisi detail deadlock. File ini dapat dibuka dan dilihat menggunakan SQL Server Management Studio (SSMS).
Solusi deadlock dan saran optimasi
Apa yang harus saya lakukan jika deadlock terjadi pada instance ApsaraDB RDS for SQL Server?