MySQL Slow Query Spike: Regression and Full-Scan Triage
Compares Slow_queries growth against baseline, then traces regressions through digests, full scans and on-disk temporary tables.
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
- M18 (`Slow_queries` artış hızı) baz çizginin birkaç katına çıkar; p95/p99 gecikmesi, uygulama timeout'ları artar.
2. Business & Technical Impact
İşlem süreleri uzar, aktif bağlantılar birikir ve çağrı zincirinde zaman aşımı oluşabilir.
3. Diagnosis & Root-Cause Analysis
SELECT VERSION(), @@GLOBAL.long_query_time, @@GLOBAL.slow_query_log;
SHOW GLOBAL STATUS LIKE 'Slow_queries';`Slow_queries` kümülatiftir; hız için iki örnek arasındaki farkı alın. `long_query_time` veya log ayarı yakın zamanda değiştiyse eski baz çizgiyle kıyas yanıltıcı olabilir.
SELECT LEFT(digest_text,160) AS pattern, count_star,
ROUND(sum_timer_wait/1e12,2) AS total_s,
ROUND(avg_timer_wait/1e9,2) AS mean_ms,
sum_rows_examined, sum_rows_sent, sum_no_index_used
FROM performance_schema.events_statements_summary_by_digest
WHERE schema_name IS NOT NULL ORDER BY sum_timer_wait DESC LIMIT 20;4. Remediation & Action Plan
5. Verification & Health Checks
- Yavaş sorgu hızı, p95 gecikmesi ve hata oranı baz çizgiye döner; `EXPLAIN` ve taranan satır sayısı iyileşir.
- Değişiklikten sonra replica gecikmesi ve yazma maliyeti artmaz.
6. Rollback & Contingency Plan
- Geçici açılan slow log'u eski değere döndürün; sorgu dağıtımını veya batch hızını eski duruma alın.
- İndeksi kaldırma işlemini ayrıca test edip bakım penceresinde yapın; iptal edilmiş sorgular otomatik devam etmez.