dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Script #37
mysql
Maintenanceread-onlyMin Version: 5.7

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.

#fragmentation#data_free#optimize
mysql · sql
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;
Operasyonel Notlar & İyileştirme Aksiyonu

Geri kazanım (yazma etkisi): `ALTER TABLE tablo ENGINE=InnoDB;` Online DDL kullanır ama yoğun saatlerde çalıştırmayın.

Üretim Güvenliği & Çalıştırma Standartları
  • 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.