Le fichier ibdata1
est l'espace de table système pour l'infrastructure InnoDB.
Il contient plusieurs classes pour des informations vitales pour InnoDB
- Pages de données de table
- Pages d'index de table
- Dictionnaire de données
- Données de contrôle MVCC
- Espace d'annulation
- Segments de retour arrière
- Tampon d'écriture double (pages écrites en arrière-plan pour éviter le cache OS)
- Tampon d'insertion (changements apportés aux index secondaires)
Veuillez noter la place d'ibdata1 dans l'Univers InnoDB (sur le côté droit)
Vous pouvez séparer les pages de données et d'index de ibdata1
en activant innodb_file_per_table. Cela fera en sorte que toute table InnoDB nouvellement créée stocke les pages de données et d'index dans un fichier externe .ibd
.
Exemple
- datadir est /var/lib/mysql
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, crée /var/lib/mysql/mydb/mytable.frm
- innodb_file_per_table activé, Pages de données/Index stockées dans
/var/lib/mysql/mydb/mytable.ibd
- innodb_file_per_table désactivé, Pages de données/Index stockées dans ibdata1
Peu importe où la table InnoDB est stockée, la fonctionnalité d'InnoDB nécessite la recherche des métadonnées de table et le stockage et la récupération des informations MVCC pour prendre en charge la conformité ACID et l'Isolation de Transaction.
Voici mes articles précédents sur la séparation des données de table et des index d'ibdata1
QUE FAIRE ENSUITE
Vous pouvez continuer à stocker ibdata1 de tout, mais cela rend les instantanés LVM vraiment fastidieux (mon avis personnel).
Vous devez utiliser mon post StackOverflow et réduire ce fichier de manière permanente.
Veuillez exécuter cette requête :
SELECT
((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) EspaceÀRécupérer
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;
Cela indiquera combien d'espace gaspillé peut être récupéré après l'application du nettoyage InnoDB.