全部产品
Search
文档中心

PolarDB:Analisis Deadlock

更新时间:Jul 02, 2025

Fitur diagnosis cepat yang disediakan oleh PolarDB for MySQL terintegrasi dengan beberapa fitur dari Database Autonomy Service (DAS) dan memungkinkan Anda menggunakan fitur analisis deadlock untuk menganalisis deadlock terbaru pada database serta memeriksa detail analisisnya.

Ikhtisar

Fitur analisis deadlock memungkinkan Anda melakukan analisis multi-dimensi pada deadlock, pemblokiran transaksi, dan kunci metadata di kluster.

Penting

Untuk mengaktifkan fitur analisis deadlock lengkap dan analisis deadlock lainnya, pastikan persyaratan berikut terpenuhi:

  1. Kluster adalah kluster PolarDB for MySQL.

  2. DAS Edisi Hemat Biaya atau DAS Edisi Perusahaan telah diaktifkan. Kedua edisi ini hanya tersedia di beberapa wilayah. Untuk informasi lebih lanjut, lihat Basis data dan wilayah yang didukung. Untuk panduan mengaktifkan DAS Edisi Hemat Biaya atau DAS Edisi Perusahaan, lihat Aktifkan dan kelola DAS Edisi Hemat Biaya dan DAS Edisi Perusahaan.

  • Analisis deadlock terbaru: DAS menganalisis log deadlock terbaru dari hasil pernyataan SHOW ENGINE INNODB STATUS. Jika terjadi beberapa deadlock, DAS hanya menganalisis deadlock terbaru.

  • Analisis deadlock lengkap: DAS secara berkala menganalisis log kesalahan, mengurai informasi deadlock, dan melakukan analisis komprehensif. Fitur ini juga memungkinkan Anda melihat tren deadlock dalam rentang waktu tertentu dan memeriksa detail setiap deadlock.

  • Analisis kunci lainnya: DAS menganalisis kunci metadata dan pemblokiran transaksi dalam sesi saat ini dari kluster Anda secara real-time berdasarkan data di information_schema dan performance_schema.

    • Analisis kunci metadata: DAS menyimpulkan hubungan tunggu kunci dan menghasilkan diagram yang sesuai berdasarkan data di tabel seperti information_schema.processlist.

    • Analisis pemblokiran transaksi: DAS menganalisis hubungan pemblokiran transaksi dan menghasilkan diagram berdasarkan data dari tabel information_schema.processlist, information_schema.innodb_trx, information_schema.innodb_lock_waits, atau performance_schema.data_lock_waits. Data dari tabel information_schema.innodb_lock_waits digunakan untuk kluster yang menjalankan MySQL 5.6 atau MySQL 5.7, sedangkan data dari tabel performance_schema.data_lock_waits digunakan untuk kluster yang menjalankan MySQL 8.0.

      Catatan

      Fitur analisis pemblokiran transaksi tidak didukung untuk kluster PolarDB for MySQL yang menjalankan MySQL 5.6.

Pengaturan parameter

Untuk menggunakan fitur analisis deadlock pada kluster, Anda harus mengonfigurasi parameter yang sesuai. Tabel berikut menjelaskan pengaturan parameter yang diperlukan untuk fitur analisis deadlock yang berbeda.

Fitur analisis deadlock

Pengaturan parameter yang diperlukan

Analisis deadlock terbaru

Atur parameter innodb_deadlock_detect ke ON.

Analisis deadlock lengkap

  • Atur parameter innodb_deadlock_detect ke ON.

  • Atur parameter innodb_print_all_deadlocks ke ON dan atur log_error_verbosity ke 3.

Analisis pemblokiran transaksi dalam analisis kunci lainnya

Atur parameter performance_schema ke ON jika kluster PolarDB for MySQL Anda menjalankan MySQL 8.0.

Untuk informasi tentang cara memodifikasi parameter kluster PolarDB for MySQL, lihat Konfigurasikan parameter kluster dan node.

Prosedur

  1. Masuk ke Konsol PolarDB. Di panel navigasi sebelah kiri, klik Clusters. Di pojok kiri atas, pilih wilayah kluster. Di daftar kluster, klik ID kluster untuk masuk ke halaman Informasi Dasar.

  2. Di panel navigasi sebelah kiri, pilih Diagnostics and Optimization > Quick Diagnostics.

  3. Klik tab Deadlock Analysis.

  4. Di halaman Deadlock Analysis, pilih ID kluster target dari daftar drop-down Current Node dan klik Diagnose.

  5. Klik View Details di kolom Details untuk deadlock terbaru yang terdeteksi.

    Catatan

    Tombol View Details hanya tersedia ketika kolom Deadlock Detected untuk item yang sama muncul dalam status Yes.

  6. Di kotak dialog Deadlock Analysis, lihat detail hasil analisis deadlock. Anda dapat mengklik View Deadlock Log untuk melihat detail log deadlock terbaru.

FAQ

Mengapa mengeksekusi pernyataan UPDATE menyebabkan deadlock? Bagaimana cara mengatasinya?

Deadlock terjadi ketika dua transaksi memegang kunci eksklusif (X lock) pada rekaman yang sesuai dan mencoba mendapatkan kunci yang dipegang oleh yang lain secara bersamaan. Sebagai contoh:

  • Transaksi 1 mengeksekusi pernyataan UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;, yang memperoleh kunci eksklusif pada akun pengguna A (id=1).

  • Transaksi 2 mengeksekusi pernyataan UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;, yang memperoleh kunci eksklusif pada akun pengguna B (id=2).

Catatan

Dalam skenario ini, setiap transaksi memegang kunci eksklusif pada rekaman yang berbeda. Jika transaksi 1 mencoba memperoleh kunci eksklusif pada rekaman dengan user_id=2 dan transaksi 2 mencoba memperoleh kunci eksklusif pada rekaman dengan user_id=1, deadlock terjadi karena kunci dipegang oleh transaksi lain.

Solusi: Pastikan semua transaksi memperbarui rekaman dalam urutan yang sama, seperti selalu memperbarui rekaman dengan ID yang lebih kecil terlebih dahulu. Alternatifnya, Anda dapat menggabungkan beberapa operasi pembaruan menjadi satu pembaruan batch untuk mengurangi kontes kunci.