MySQL InnoDB Lock Wait Timeout: Find and Resolve the Blocker
Correlates waiting and blocking transactions behind ERROR 1205 and row lock waits, then gives safe response and prevention steps.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
- `ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction`, M20 artışı.
- Çok sayıda kısa sorgu aynı tabloda bekler. `ERROR 1213` bir **deadlock**'tur ve farklı teşhis gerektirir.
2. Business & Technical Impact
İşlem zaman aşımına uğrar; MySQL varsayılanında timeout alan **statement** geri alınır, tüm transaction otomatik rollback olmayabilir (`innodb_rollback_on_timeout` ayarına bağlı). Uygulama hatalı biçimde devam ederse kısmi iş mantığı oluşabilir.
3. Diagnosis & Root-Cause Analysis
SELECT wait_started, wait_age, locked_table, locked_index,
waiting_pid, LEFT(waiting_query,160) AS waiting_sql,
blocking_pid, LEFT(blocking_query,160) AS blocking_sql
FROM sys.innodb_lock_waits ORDER BY wait_age DESC;`blocking_query` boş olabilir: oturum Sleep durumunda açık transaction tutuyordur.
SELECT trx_mysql_thread_id AS pid, trx_started, trx_state,
trx_rows_locked, trx_rows_modified, LEFT(trx_query,160) AS query_text
FROM information_schema.innodb_trx ORDER BY trx_started;4. Remediation & Action Plan
5. Verification & Health Checks
- S22 bekleme listesi temizlenir, M20 normalleşir; uygulama işlemleri ve satır sayısı/tutarlılık kontrolü başarılıdır.
- 1205 ve deadlock sayıları ayrı ayrı izlenir; değişiklik sonrası regresyon yoktur.
6. Rollback & Contingency Plan
- Sonlandırılan transaction geri gelmez, uygulama kontrollü yeniden denemelidir; indeks veya zaman aşımı ayarını planlı olarak eski değerine alın.
- Olay anında zorla yapılan COMMIT/ROLLBACK geri alınamaz; iş verisini doğrulayın.