All Products
Search
Document Center

ApsaraDB RDS:Deadlock

Last Updated:Jun 21, 2026

Laman Deadlock di ApsaraDB RDS for SQL Server menampilkan detail seperti waktu mulai transaksi, ID sesi, resource yang terkunci, dan jenis deadlock untuk membantu Anda mengidentifikasi serta menyelesaikan pernyataan SQL bermasalah penyebab deadlock. Topik ini menjelaskan cara melihat deadlock dan detailnya untuk instans ApsaraDB RDS for SQL Server di Konsol ApsaraDB RDS.

Informasi latar belakang

Ketika sebuah transaksi memodifikasi suatu resource, transaksi tersebut menerapkan kunci untuk mencegah transaksi lain mengubahnya, sehingga menjamin konsistensi data.

Deadlock biasanya terjadi ketika beberapa transaksi bersaing memperebutkan resource. Misalnya, Transaksi A mengunci Resource A dan mencoba memodifikasi Resource B, sementara Transaksi B mengunci Resource B dan mencoba memodifikasi Resource A. Ketergantungan siklis ini menyebabkan deadlock karena masing-masing transaksi menunggu pihak lain melepas kuncinya. Sistem kemudian secara otomatis menghentikan sesi dengan biaya rollback terendah (sesi korban), sehingga tugasnya gagal. Gambar berikut mengilustrasikan skenario ini.

死锁

Jenis deadlock

Laman Deadlock menampilkan statistik untuk lima jenis deadlock berikut:

  • KeyDeadlock

  • ObjectDeadlock

  • RIDDeadlock

  • PageDeadlock

  • CompileDeadlock

Mode lock

Saat sebuah transaksi mengakses suatu resource, transaksi tersebut menggunakan berbagai mode lock (LockMode) tergantung pada jenis aksesnya. Mode tersebut meliputi:

  • Shared lock (S): Mengizinkan resource dibaca tetapi tidak dimodifikasi selama lock aktif.

  • Update lock (U): Mencegah transaksi lain mendapatkan exclusive lock pada resource, sebagai indikasi niat untuk memodifikasinya. Lock ini biasanya digunakan untuk menghindari deadlock yang dapat terjadi ketika beberapa session mencoba membaca, mengunci, lalu memperbarui resource yang sama.

  • Exclusive lock (X): Mencegah transaksi lain mengakses resource tersebut.

Prasyarat

  • Fitur ini tidak tersedia untuk instans ApsaraDB RDS for SQL Server 2008 R2 yang menggunakan cloud disk.

  • Fitur ini hanya tersedia untuk instans ApsaraDB RDS for SQL Server di wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hohhot), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Heyuan), Tiongkok (Guangzhou), Tiongkok (Chengdu), Tiongkok (Hong Kong), Singapura, atau UEA (Dubai).

Detail deadlock

  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Lalu, temukan instans RDS tersebut dan klik ID-nya.

  2. Di panel navigasi kiri, pilih Autonomy Services > Lock Optimization.

Laman Deadlock

  • Deadlock count

    Bagian ini menunjukkan jumlah deadlock terbaru, dengan statistik untuk empat rentang waktu: deadlock dalam 24 jam terakhir, deadlock dalam 7 hari terakhir, deadlock dalam dua minggu terakhir, dan deadlock dalam sebulan terakhir.

  • Deadlock trend

    Bagian ini menampilkan grafik tren deadlock dalam rentang waktu tertentu. Anda dapat melakukan operasi berikut:

    • Pilih Start Date dan End Date, lalu klik Search untuk melihat informasi deadlock dalam rentang waktu tersebut. Rentang waktu tidak boleh melebihi 30 hari.

    • Klik Previous Day, Last 7 Days, atau Last Month untuk dengan cepat melihat informasi deadlock dalam rentang waktu tersebut.

    • Arahkan kursor ke titik waktu tertentu untuk melihat jenis dan jumlah deadlock yang terjadi pada waktu tersebut.

    • Klik ikon 图标 di pojok kanan atas grafik tren untuk mengubah gaya tampilan grafik atau mengunduhnya.

    死锁变化趋势

  • Deadlock Details

    Klik ikon 加号 di samping catatan deadlock untuk melihat detail sesi yang terlibat deadlock. Detail tersebut mencakup:

    • LastTranStarted: Waktu saat transaksi dimulai.

    • SPID: ID sesi yang memulai transaksi.

    • IsVictim: Menunjukkan apakah sesi tersebut dihentikan (killed) untuk menyelesaikan deadlock.

      Catatan

      SQL Server menyelesaikan deadlock dengan menggunakan thread internal yang secara berkala memeriksa keberadaannya. Saat deadlock terdeteksi, SQL Server menghentikan sesi yang memiliki biaya rollback lebih rendah di antara sesi yang terlibat. Sebagai contoh, karena pernyataan SELECT biasanya memiliki biaya lebih rendah daripada pernyataan UPDATE, sistem memprioritaskan penghentian sesi yang menjalankan pernyataan SELECT.

    • LogUsed: Ukuran log yang dihasilkan oleh sesi. Satuan: byte.

    • LockMode: mode lock.

    • WaitResourceDesc: Deskripsi resource yang sedang ditunggu oleh transaksi saat ini.

    • ObjectOwned: Objek yang sudah dikunci.

    • ObjectRequested: Objek yang diminta dikunci oleh transaksi saat ini.

    • WaitResource: Resource yang sedang ditunggu oleh transaksi saat ini.

    • HostName: hostname dari transaksi saat ini.

    • LoginName: Nama akun untuk transaksi saat ini.

    • Status: Status transaksi saat ini.

    • ClientApp: Nama aplikasi klien yang digunakan oleh transaksi saat ini.

    • SQLText: Detail pernyataan SQL.

      Catatan

      Klik Click to Copy untuk menyalin pernyataan SQL guna mempermudah troubleshooting dan analisis.

    Klik baris mana pun dalam daftar detail untuk menampilkan diagram deadlock yang sesuai di bawahnya.

  • Deadlock diagram

    Bagian ini menampilkan hubungan antar sesi yang terlibat deadlock dan memberikan detail tentang resource yang terkunci. Anda dapat mengklik tombol Download untuk mengunduh file XDL yang berisi detail deadlock saat ini. File ini dapat dibuka dan dilihat menggunakan SQL Server Management Studio (SSMS).

    死锁关系图

Solusi dan optimasi deadlock

Cara menyelesaikan deadlock pada instans ApsaraDB RDS for SQL Server