Lihat beberapa kebuntuan innodb terakhir


12

Saya melihat bahwa saya dapat melihat kebuntuan terbaru di mysql / innodb, tetapi apakah ada cara untuk melihat kebuntuan terakhir? Kami memiliki dua masalah kebuntuan, yang satu penting dan yang lainnya tidak. Kebuntuan yang kurang penting terjadi beberapa kali sehari sehingga menjadi kebuntuan "terbaru".

Jawaban:


15

Ada pengaturan yang diperkenalkan di MySQL 5.5.30: innodb_print_all_deadlocks

Ketika opsi ini diaktifkan, informasi tentang semua kebuntuan dalam transaksi pengguna InnoDB dicatat dalam log kesalahan mysqld. Jika tidak, Anda melihat informasi tentang hanya kebuntuan terakhir, menggunakan perintah SHOW ENGINE INNODB STATUS. Kebuntuan InnoDB sesekali tidak selalu menjadi masalah, karena InnoDB segera mendeteksi kondisi tersebut, dan memutar kembali salah satu transaksi secara otomatis. Anda mungkin menggunakan opsi ini untuk memecahkan masalah mengapa deadlock terjadi jika aplikasi tidak memiliki logika penanganan kesalahan yang sesuai untuk mendeteksi rollback dan coba lagi operasinya. Sejumlah besar kebuntuan mungkin menunjukkan kebutuhan untuk merestrukturisasi transaksi yang mengeluarkan DML atau SELECT ... UNTUK UPDATE pernyataan untuk beberapa tabel, sehingga setiap transaksi mengakses tabel dalam urutan yang sama, sehingga menghindari kondisi kebuntuan.

Tambahkan saja pengaturan ini ke my.cnf

[mysqld]
innodb_print_all_deadlocks = 1

atau

[mysqld]
innodb_print_all_deadlocks = on

Anda tidak harus memulai ulang mysql. Cukup login ke mysql dan jalankan

mysql> SET GLOBAL innodb_print_all_deadlocks = 1;

or

mysql> SET GLOBAL innodb_print_all_deadlocks = 'ON';

Pengaturan ini juga baru bagi saya.

Cobalah dan beri tahu kami semua pendapat Anda !!!


Kami menjalankan 5.5.34. Apakah ada opsi untuk versi kami?
gwgeller

Kesalahanku. Itu ada di 5.5 dev.mysql.com/doc/refman/5.5/en/… . Saya akan memperbarui jawaban saya.
RolandoMySQLDBA

Berfungsi seperti yang diiklankan, terima kasih! Saya mengubah pengaturan menggunakan sql jadi saya tidak perlu me-restart. Kebetulan beberapa kebuntuan yang kurang serius terjadi dan muncul di log kesalahan.
gwgeller

Mengatur nilai saat runtime tidak berfungsi untuk saya, itu tidak menulis apa pun di log kesalahan.
Lapo

1
@Jordan AWS tidak pernah memberikan SUPER dan saya menyebutkan ini 6 tahun yang lalu: dba.stackexchange.com/questions/34525/… . Mereka menggunakan pemicu untuk memastikan Anda tidak bisa meretas mysql.userdan menjalankan FLUSH PRIVILEGES;.
RolandoMySQLDBA
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.