Maison > base de données > tutoriel mysql > Comment puis-je nettoyer et réduire mon moteur de stockage MySQL InnoDB ?

Comment puis-je nettoyer et réduire mon moteur de stockage MySQL InnoDB ?

Mary-Kate Olsen
Libérer: 2024-12-18 22:09:17
original
208 Les gens l'ont consulté

How Can I Clean Up and Shrink My MySQL InnoDB Storage Engine?

Nettoyage du moteur de stockage MySQL InnoDB

Afin de nettoyer un moteur de stockage MySQL InnoDB et de supprimer les données des tables supprimées, suivez ces étapes :

Comprendre l'architecture InnoDB

Magasins InnoDB six types d'informations dans le fichier ibdata1 :

  • Données de table
  • Index de table
  • Données MVCC (Multiversioning Concurrency Control)
  • Métadonnées de table ( Dictionnaire de données)
  • Double tampon d'écriture
  • Insérer Buffer

Pouvez-vous exécuter OPTIMIZE TABLE ?

L'utilisation d'OPTIMIZE TABLE sur une table InnoDB stockée dans ibdata1 a deux effets :

  • Il rend les données et les index de la table contigus au sein du fichier.
  • Il fait croître ibdata1 en ajoutant les données et les index modifiés.

Pouvez-vous exécuter OPTIMIZE TABLE avec innodb_file_per_table ?

Avec cette option activée, OPTIMIZE TABLE crée des fichiers .ibd distincts pour chaque table InnoDB. Bien que cette ségrégation sépare les données et les index d'ibdata1, elle ne supprime pas les entrées du dictionnaire de données d'ibdata1.

Nettoyage de l'infrastructure InnoDB

Pour réduire ibdata1 et supprimer les données inutiles :

  1. Dump toutes les bases de données dans un fichier texte SQL (SQLData.sql).
  2. Supprimez toutes les bases de données sauf mysql et information_schema. Préserver les autorisations des utilisateurs.
  3. Définissez innodb_fast_shutdown sur 0 pour effacer les modifications transactionnelles.
  4. Arrêtez MySQL.
  5. Modifiez mon.cnf (ou mon.ini) avec ceux-ci paramètres :

    • innodb_file_per_table
    • innodb_flush_method=O_DIRECT
    • innodb_log_file_size=1G (assurez-vous qu'il s'agit de 25 % de innodb_buffer_pool_size)
  6. Supprimez les fichiers ibdata et ib_logfile.
  7. Démarrez MySQL.
  8. Importez SQLData.sql.

Après ce processus, ibdata1 contiendra seules les métadonnées des tables et les tables InnoDB individuelles seront stockées dans des fichiers séparés avec les extensions .frm et .ibd. OPTIMIZE TABLE peut ensuite être utilisé pour réduire le fichier .ibd de la table.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal