MySQL possède une commande OPTIMIZE TABLE qui peut être utilisée pour récupérer de l'espace inutilisé dans une installation MySQL. Existe-t-il un moyen (commande intégrée ou procédure stockée commune) d'exécuter cette optimisation pour chaque table de l'installation de la base de données et / ou du serveur, ou est-ce quelque chose que vous auriez à écrire vous-même?
245
OPTIMIZE TABLE
était utile pour MyISAM. Maintenant que ce moteur disparaît, le besoin deOPTIMIZE TABLE
disparaît, en particulier le besoin d'optimiser périodiquement toutes les tables.Réponses:
Vous pouvez utiliser
mysqlcheck
pour ce faire sur la ligne de commande.Une base de données:
Toutes les bases de données:
la source
mysqlcheck -u [username] -p[password] -o [database name]
OPTIMIZE TABLE
commande: dev.mysql.com/doc/refman/5.5/en/optimize-table.html . Par exemple, optimisez une table comme ceciOPTIMIZE TABLE <your_schema>.<your_table>;
:, optimisez toutes les tables dans un schéma donné comme ceci:select concat('OPTIMIZE NO_WRITE_TO_BINLOG TABLE ',table_schema,'.',table_name,';') into outfile '/tmp/optimize_all_tables.sql' from information_schema.tables where table_schema = 'pabeta' and table_type = 'base table'; source /tmp/optimize_all_tables.sql;
J'ai fait ce script "simple":
Pour l'exécuter, collez-le simplement dans n'importe quel IDE SQL connecté à votre base de données.
Remarque: ce code NE fonctionnera PAS sur phpmyadmin.
Comment ça fonctionne
Il exécute une
show tables
instruction et la stocke dans une instruction préparée. Ensuite, il exécute unoptimize table
dans l'ensemble sélectionné.Vous pouvez contrôler les tables à optimiser en définissant une valeur différente dans la var
@tables_like
(par exemple:)set @tables_like = '%test%';
.la source
bd
partir de @b Code d'erreur: 1064. Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser près de 'NULL' à la ligne 1L'exemple de script php suivant peut vous aider à optimiser toutes les tables de votre base de données
la source
Effectuez toutes les procédures nécessaires pour réparer toutes les tables dans toutes les bases de données avec un simple script shell:
la source
pour toutes les bases de données:
Pour une optimisation de base de données:
la source
mysqlcheck -Aos
ne nécessite pas d'utilisateur + mot de passe.Depuis phpMyAdmin et d'autres sources, vous pouvez utiliser:
Ensuite, vous pouvez copier et coller le résultat dans une nouvelle requête ou l'exécuter à partir de votre propre source. Si vous ne voyez pas l'intégralité de la déclaration:
la source
Si vous souhaitez analyser, réparer et optimiser toutes les tables de toutes les bases de données de votre serveur MySQL, vous pouvez le faire en une seule fois depuis la ligne de commande. Vous aurez cependant besoin de root pour le faire.
Une fois que vous avez exécuté cela, vous serez invité à entrer votre mot de passe racine MySQL. Après cela, cela commencera et vous verrez les résultats au fur et à mesure.
Exemple de sortie:
Si vous ne connaissez pas le mot de passe root et que vous utilisez WHM, vous pouvez le changer depuis WHM en accédant à: Accueil> Services SQL> MySQL Root Password
la source
Depuis la ligne de commande:
puis tapez le mot de passe
la source
Vous pouvez optimiser / vérifier et réparer toutes les tables de base de données, en utilisant le client mysql.
Tout d'abord, vous devriez obtenir toute la liste des tableaux, séparés par ',':
Maintenant, lorsque vous avez toutes les listes de tables à optimiser:
la source
Le
MySQL Administrator
(partie des outils de l'interface graphique MySQL) peut le faire pour vous au niveau de la base de données.Sélectionnez simplement votre schéma et appuyez sur le
Maintenance
bouton dans le coin inférieur droit.Étant donné que les outils GUI ont atteint le statut de fin de vie, ils sont difficiles à trouver sur la page mysql. Je les ai trouvés via Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
Je ne sais pas si le nouveau MySQL Workbench peut le faire aussi.
Et vous pouvez utiliser l'
mysqlcheck
outil de ligne de commande qui devrait également pouvoir le faire.la source
Si vous accédez directement à la base de données, vous pouvez écrire la requête suivante:
la source
Ce script bash acceptera le mot de passe root comme option et l'optimisera un par un, avec une sortie d'état:
la source
Un script bash de démarrage pour répertorier et exécuter un outil sur les bases de données ...
la source
mes 2 cents: commencez par le tableau avec la fragmentation la plus élevée
la source