MySQL Lock wait timeout exceeded: Bloklayan İşlemi Bulma
MySQL "Lock wait timeout exceeded" — Kim Kilitliyor, Kimi KILL Etmeli?
Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.
▸Belirti
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transactionDeadlock'tan farkı kritiktir: deadlock'ta döngü vardır ve InnoDB müdahale eder; burada döngü yoktur, sadece bir işlem diğerini bekler ve süre dolar. Varsayılan bekleme süresi innodb_lock_wait_timeout = 50 saniyedir.
▸Bloklayan işlemi bulma
En kritik nokta: şikayet eden sorgu değil, onu bekleten süreç suçludur.
SELECT w.requesting_engine_transaction_id AS bekleyen_trx,
w.blocking_engine_transaction_id AS bloklayan_trx,
b.trx_mysql_thread_id AS bloklayan_thread,
b.trx_state AS bloklayan_durum,
TIMESTAMPDIFF(SECOND, b.trx_started, NOW()) AS acik_saniye,
b.trx_query AS bloklayan_sorgu,
r.trx_query AS bekleyen_sorgu
FROM performance_schema.data_lock_waits w
JOIN information_schema.innodb_trx b
ON b.trx_id = w.blocking_engine_transaction_id
LEFT JOIN information_schema.innodb_trx r
ON r.trx_id = w.requesting_engine_transaction_id
ORDER BY acik_saniye DESC;- •
trx_query = NULLveacik_saniyeyüksekse: uygulamaBEGINaçmış, hiçbir şey yapmıyor veCOMMITetmemiş.
▸KILL kararı
- •Önce `NULL` sorgulu, uzun süredir açık transaction'ı öldürün.
- •Bekleyen sorguyu öldürmeyin. Öldürürseniz uygulama hata alır, kilit sahibi yerinde kalır ve sorun saniyeler içinde tekrarlar.
KILL 4821; -- bağlantıyı sonlandırır, transaction'ı geri alır
KILL QUERY 4821; -- yalnızca çalışan sorguyu durdurur, bağlantı açık kalır▸En sık üç neden
- 1Kapanmayan transaction: Uygulama
commit()çağırmıyor. - 2İndekssiz `UPDATE`/`DELETE`: Milyonlarca satır taranır ve kilitlenir.
- 3Metadata lock (MDL): Bekleyen bir
ALTER TABLE, o tabloya gelen tüm sorguları kilitler.
SELECT object_type, object_schema, object_name, lock_type, lock_duration, owner_thread_id
FROM performance_schema.metadata_locks
WHERE object_schema NOT IN ('performance_schema', 'mysql');▸İlgili Mühendislik Rehberleri ve İç Linkler
- •MySQL Deadlock (ERROR 1213) Çözümü
- •MySQL InnoDB Tuning CheatSheet
- •Test edilen sürümler: MySQL 8.0 / 8.4 LTS
MySQL Diğer Üretim Rehberleri
Aynı veritabanı motoruna ait doğrulanmış diğer içerikler.
InnoDB Tuning Referansı
Buffer pool boyutlandırma formülü (%70-80), redo log ve flush politikaları, I/O kapasitesi, production my.cnf şablonu ve SHOW ENGINE INNODB STATUS okuma rehberi.
MySQL Yedekleme & Kurtarma
mysqldump ve MySQL Shell dumpInstance mantıksal yedekler, Percona XtraBackup fiziksel yedekleme, binary log ile PITR ve CLONE eklentisi.
MySQL OCP 8.0 DBA Sınav Konu Haritası
Oracle 1Z0-908 MySQL 8.0 Database Administrator sınavının 7 ana alanı: Mimari, Kurulum, Güvenlik, İzleme, Optimizasyon, Yedekleme, HA (InnoDB Cluster) ve sınav tuzakları.