Son birkaç innodb kilitlenmesini görüntüle


12

Mysql / innodb'daki son kilitlenmeyi görebildiğimi görüyorum, ancak geçmiş kilitlenmeleri görmenin bir yolu var mı? İki önemli kilitlenme sorunumuz var, biri önemli, diğeri önemli değil. Daha az önemli çıkmaz günde birkaç kez olur, böylece "en son" çıkmaz olur.

Yanıtlar:


15

MySQL 5.5.30'da tanıtılan bir ayar var: innodb_print_all_deadlocks

Bu seçenek etkinleştirildiğinde, InnoDB kullanıcı işlemlerindeki tüm kilitlenmeler hakkındaki bilgiler mysqld hata günlüğüne kaydedilir. Aksi takdirde, SHOW ENGINE INNODB STATUS komutunu kullanarak yalnızca son kilitlenme hakkında bilgi görürsünüz. Ara sıra InnoDB kilitlenme mutlaka bir sorun değildir, çünkü InnoDB durumu hemen algılar ve işlemlerden birini otomatik olarak geri alır. Bir uygulamada geri alma algılayıp çalışmayı yeniden denemek için uygun hata işleme mantığı yoksa kilitlenme nedenlerinin giderildiğini gidermek için bu seçeneği kullanabilirsiniz. Çok sayıda kilitlenme, birden çok tablo için DML veya SELECT ... FOR UPDATE deyimleri yayınlayan işlemlerin yeniden yapılandırılması gerektiğini gösterebilir, böylece her işlem tablolara aynı sırayla erişerek kilitlenme koşulunu önler.

Bu ayarı şuraya eklemeniz yeterlidir: my.cnf

[mysqld]
innodb_print_all_deadlocks = 1

veya

[mysqld]
innodb_print_all_deadlocks = on

MySQL'i yeniden başlatmanız gerekmez. MySQL'e giriş yapın ve çalıştırın

mysql> SET GLOBAL innodb_print_all_deadlocks = 1;

or

mysql> SET GLOBAL innodb_print_all_deadlocks = 'ON';

Bu ayar benim için de yeni.

Bir deneyin ve bize ne düşündüğünüzü söyler !!!


5.5.34 çalıştırıyoruz. Versiyonumuz için herhangi bir seçenek var mı?
gwgeller

Benim hatam. 5.5 dev.mysql.com/doc/refman/5.5/en/… . Cevabımı güncelleyeceğim.
RolandoMySQLDBA

İlan edildiği gibi çalışıyor, teşekkürler! Yeniden başlatmak zorunda kaldım bu yüzden sql kullanarak ayarı değiştirdim. Tesadüfen, daha az ciddi kilitlenmelerden birkaçı meydana geldi ve hata günlüğünde ortaya çıktı.
gwgeller

Çalışma zamanında değeri ayarlamak benim için işe yaramıyor, hata günlüğüne hiçbir şey yazmıyor.
lapo

1
@Jordan AWS asla SUPER vermiyor ve 6 yıl önce bundan bahsettim: dba.stackexchange.com/questions/34525/… . Onlar kesmek mysql.userve çalıştırmak olamaz emin olmak için tetikleyicileri kullanır FLUSH PRIVILEGES;.
RolandoMySQLDBA
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.