All Products
Search
Document Center

PolarDB:Analisis kunci

Last Updated:Aug 27, 2026

Fitur Diagnostik Cepat PolarDB for MySQL mengintegrasikan berbagai kemampuan dari DAS. Fitur analisis deadlock memungkinkan Anda menganalisis secara visual deadlock terbaru pada database Anda.

Ikhtisar

Fitur analisis deadlock mendukung analisis multidimensi terhadap deadlock, pemblokiran transaksi, dan penundaan kunci metadata.

Penting

Fitur analisis deadlock lengkap dan analisis kunci lainnya memiliki persyaratan berikut:

  1. Instansiasi basis data Anda harus merupakan instans PolarDB for MySQL.

  2. Anda harus mengaktifkan DAS Economy Edition atau DAS Enterprise Edition. Untuk daftar wilayah yang didukung, lihat Database dan wilayah yang didukung untuk setiap edisi. Untuk mengetahui cara mengaktifkan edisi tersebut, lihat Mengelola log audit DAS dan layanan O&M (sebelumnya Economy Edition).

  • Analisis deadlock terbaru: DAS menganalisis log deadlock terbaru yang dikembalikan oleh SHOW ENGINE INNODB STATUS. Jika terjadi beberapa deadlock, DAS hanya menganalisis yang paling baru.

  • Analisis deadlock lengkap: DAS secara berkala menganalisis error logs untuk mengurai informasi deadlock. Anda juga dapat melihat tren deadlock dalam rentang waktu tertentu serta meninjau detail setiap deadlock.

  • Analisis kunci lainnya: Berdasarkan data dari information_schema dan performance_schema, DAS menganalisis kunci metadata dan pemblokiran transaksi pada sesi database saat ini secara real time.

    • Analisis kunci metadata: DAS melakukan inferensi terhadap hubungan penundaan kunci dan menghasilkan graf hubungan berdasarkan data dari sumber seperti information_schema.processlist.

    • Analisis pemblokiran transaksi: DAS menganalisis hubungan pemblokiran transaksi dan menghasilkan graf hubungan yang sesuai berdasarkan information_schema.processlist, information_schema.innodb_trx, dan tabel spesifik versi berikut: information_schema.innodb_lock_waits (untuk MySQL 5.6 dan 5.7) serta performance_schema.data_lock_waits (untuk MySQL 8.0).

      Catatan

      Analisis pemblokiran transaksi tidak didukung untuk instans PolarDB for MySQL 5.6.

Persyaratan parameter

Untuk menggunakan fitur-fitur analisis ini, Anda harus mengatur parameter yang diperlukan.

Fitur

Parameter

Analisis deadlock terbaru

Aktifkan parameter innodb_deadlock_detect.

Analisis deadlock lengkap

  • Aktifkan parameter innodb_deadlock_detect.

  • Aktifkan parameter innodb_print_all_deadlocks dan atur log_error_verbosity=3.

Analisis pemblokiran transaksi (di bawah analisis kunci lainnya)

Untuk instans PolarDB for MySQL 8.0, Anda harus mengaktifkan parameter performance_schema.

Untuk memodifikasi parameter instansiasi basis data:

Untuk PolarDB for MySQL, lihat Mengatur parameter kluster dan node.

Prosedur

  1. Masuk ke Konsol PolarDB. Di panel navigasi sebelah kiri, klik Clusters, pilih region kluster Anda, lalu klik ID kluster target untuk membuka halaman detailnya.

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

  3. Klik tab Deadlock Analytics.

  4. Pada halaman Deadlock Analytics, dari daftar Current Node, pilih ID instans target, lalu klik Diagnose.

  5. Pada daftar hasil diagnostik yang dihasilkan, klik View Details di kolom Details.

    Catatan

    Anda hanya dapat mengklik View Details ketika Deadlock Detected bernilai Yes.

  6. Pada kotak dialog Deadlock Analytics, tinjau hasil diagnostik detail. Anda juga dapat mengklik View Deadlock Log untuk melihat log deadlock terbaru.

FAQ

Q: Mengapa pernyataan UPDATE menyebabkan deadlock, dan bagaimana cara mengatasinya?

A: Deadlock dapat terjadi ketika dua transaksi masing-masing memegang kunci eksklusif (Kunci X) pada suatu record dan masing-masing mencoba mengambil kunci milik pihak lain, sehingga terbentuk penantian melingkar. Contohnya:

  • Transaksi 1: UPDATE accounts SET balance = balance - 100 WHERE user_id = 1; mencoba mengambil kunci eksklusif pada akun Pengguna A (id=1).

  • Transaksi 2: UPDATE accounts SET balance = balance + 100 WHERE user_id = 2; mencoba mengambil kunci eksklusif pada akun Pengguna B (id=2).

Catatan

Transaksi 1 kemudian mencoba mengunci record yang dipegang oleh Transaksi 2 (di mana user_id=2) dan harus menunggu. Secara bersamaan, Transaksi 2 mencoba mengunci record yang dipegang oleh Transaksi 1 (di mana user_id=1) dan juga harus menunggu. Pemblokiran timbal balik ini menciptakan penantian melingkar, yang mengakibatkan deadlock.

Solusi: Perbarui record dalam urutan yang konsisten di semua transaksi (misalnya, selalu perbarui record dengan ID lebih rendah terlebih dahulu). Anda juga dapat menggabungkan beberapa operasi pembaruan menjadi satu Pembaruan batch untuk mengurangi persaingan kunci.