MySQL InnoDB Tablo Fragmentasyonu ve Geri Kazanılabilir Alan
Büyük boş alana (data_free) sahip tabloları listeler. OPTIMIZE TABLE ile alan geri kazanımı için aday belirler.
SELECT table_schema, table_name,
ROUND(data_length / 1048576, 1) AS data_mb,
ROUND(data_free / 1048576, 1) AS free_mb,
ROUND(100 * data_free / NULLIF(data_length + index_length + data_free, 0), 1) AS free_pct
FROM information_schema.tables
WHERE engine = 'InnoDB' AND data_free > 100 * 1048576
ORDER BY data_free DESC
LIMIT 25;Geri kazanım (yazma etkisi): `ALTER TABLE tablo ENGINE=InnoDB;` Online DDL kullanır ama yoğun saatlerde çalıştırmayın.
- Bu script salt okunur (read-only) teşhis için tasarlanmıştır; doğrudan veri veya şema değişikliği yapmaz.
- Ağır yük altındaki üretim sunucularında çalıştırmadan önce hedef veritabanı sürümünü (Min. Sürüm: 5.7) doğrulayın.
- İlişkili oturumu sonlandırma veya indeks silme gibi yazma etkili aksiyonlar için notlar bölümündeki komutları temkinli uygulayın.
Diğer MYSQL Teşhis Scriptleri
Tümünü Gör (100)MySQL'de Uzun Süren Sorguları Bulma
Processlist üzerinden 60 saniyeden uzun süren aktif sorguları listeler. Yavaşlama ve kilitlenme olaylarında hızlı teşhis sağlar.
MySQL InnoDB Kilit Beklemelerini ve Bloklayan Sorguyu Bulma
sys şeması ile bekleyen ve bloklayan oturumları, kilit modlarıyla birlikte gösterir. Hangi işlemin hangisini beklettiğini tek sorguda çözer.
MySQL'de En Büyük Tabloları ve Disk Kullanımını Listeleme
Veri, indeks ve boş alan boyutlarını tablo bazında sıralar. Kapasite planlaması ve arşivleme kararları için temel veridir.
MySQL Kullanılmayan İndeksleri Tespit Etme
sys.schema_unused_indexes ile hiç kullanılmamış indeksleri listeler. Yazma performansını düşüren gereksiz indeksleri güvenle temizlemeye yardımcı olur.