Yanıtlar:
İbdata1 dosyası, InnoDB altyapısı için sistem tablo alanıdır.
InnoDB için hayati önem taşıyan bilgiler için birkaç sınıf içerir
Resimli Temsili Görmek İçin Buraya Tıklayın
İnnodb_file_per_table işlevini etkinleştirerek Veri ve Dizin Sayfalarını ibdata1'den boşlayabilirsiniz . Bu, yeni oluşturulan InnoDB tablosunun veri ve dizin sayfalarını harici bir .ibd
dosyada depolamasına neden olur .
Misal
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, oluşturur /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
InnoDB tablosunun nerede depolandığına bakılmaksızın, InnoDB'nin işlevselliği, tablo meta verilerinin aranmasını ve ACID uyumluluğunu ve İşlem İzolasyonunu desteklemek için MVCC bilgilerinin depolanmasını ve alınmasını gerektirir .
İşte tablo verilerini ve dizinleri ibdata1'den ayırma ile ilgili geçmiş makalelerim
Oct 29, 2010
: StackOverflow'daki Orijinal YazımNov 26, 2011
: ERROR 1114 (HY000) satır 6308 dosyada & user_analysis tablosu doluFeb 03, 2012
: MySQL InnoDB'deki çizelgelerin zamanlanmış optimizasyonuMar 25, 2012
: InnoDB neden tüm veritabanlarını tek bir dosyada depolar?Apr 01, 2012
: İnnodb_file_per_table tavsiye edilebilir mi?ib_logfile0
, ib_logfile1
)Eğer ib_logfile0
ve ne için olduğunu bilmek istiyorsanız ib_logfile1
, bunlar InnoDB Yinele Günlükleri vardır. MySQL'in tamamen normal bir şekilde kapanmasına kadar hiçbir zaman silinmemeli veya yeniden boyutlandırılmamalıdır . Eğer mysqld çökerse, sadece mysqld'yi başlatın. Karşılıklı olarak okunacak ib_logfile0
ve ib_logfile1
içindeki çift yazma arabelleğine kaydedilmemiş veri değişikliklerini kontrol edecektir ibdata1
. Bu değişiklikleri tekrarlar (yeniden yapar). Tekrar oynatılıp saklandıktan sonra, mysqld yeni DB Bağlantıları için hazır hale gelir.
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd
ve innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1
tam tersi olmalı, değil mi?