Dosya ibdata1
, InnoDB altyapısı için sistem tablo alanıdır.
InnoDB için hayati bilgiler için birkaç sınıf içerir.
- Tablo Veri Sayfaları
- Tablo Dizin Sayfaları
- Bilgi sözlüğü
- MVCC Kontrol Verileri
- Boşluğu Geri Al
- Geri Alma Segmentleri
- Çift Yazma Arabelleği (İşletim sisteminin önbelleğe alınmasını önlemek için Arka Planda Yazılan Sayfalar)
- Arabellek Tak (İkincil Dizinlerdeki Değişiklikler)
İbdata1'in InnoDB Universe'deki (Sağ Taraftaki) yerini lütfen unutmayın.
İnnodb_file_per_table özelliğiniibdata1
etkinleştirerek Veri ve Dizin Sayfalarını ayırabilirsiniz . Bu, yeni oluşturulan herhangi bir InnoDB tablosunun verileri ve dizin sayfalarını harici bir .ibd
dosyada saklamasını sağlar .
Örnek
- datadir / var / lib / mysql
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, oluşturur /var/lib/mysql/mydb/mytable.frm
- innodb_file_per_table etkin, Depolanan Veri / Dizin Sayfaları
/var/lib/mysql/mydb/mytable.ibd
- innodb_file_per_table devre dışı, ibdata1 içinde depolanan Veri / Dizin Sayfaları
InnoDB tablosunun nerede depolandığı önemli değildir, InnoDB'nin işlevselliği, tablo meta verilerini aramayı ve ACID uyumluluğunu ve İşlem İzolasyonunu desteklemek için MVCC bilgilerini depolamayı ve almayı gerektirir .
Tablo verilerini ve indeksleri ibdata1'den ayırma konusundaki geçmiş makalelerim
SONRA NE YAPACAĞIZ
İbdata1'in her şeyi saklamasını sağlamaya devam edebilirsiniz, ancak bu LVM anlık görüntülerini gerçek sıkıntıya sokuyor (benim görüşüme göre).
My StackOverflow yayınını kullanmanız ve bu dosyayı kalıcı olarak küçültmeniz gerekir.
Lütfen bu sorguyu çalıştırın:
SELECT
((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;
Bu InnoDB Temizleme'yi uyguladıktan sonra ne kadar boşa harcanabileceğini söyleyecektir.