Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment optimiser les tables MySQL/MariaDB

Les commandes de cet article fonctionneront sur les serveurs MySQL et MariaDB.

C'est une bonne idée d'effectuer une maintenance de la base de données de temps en temps. Une chose à faire est d'optimiser les tables. Nous avons deux options :

1. OPTIMISER LE TABLEAU commande

Réorganise le stockage physique des données de table et des données d'index associées, afin de réduire l'espace de stockage et d'améliorer l'efficacité des E/S lors de l'accès à la table. Les modifications exactes apportées à chaque table dépendent du moteur de stockage utilisé par cette table.

Voir ci-dessous comment l'utiliser.

root@web [~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3670
Server version: 10.1.22-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use roundcube
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [roundcube]> OPTIMIZE TABLE cache;
+-----------------+----------+----------+-------------------------------------------------------------------+
| Table           | Op       | Msg_type | Msg_text                                                          |
+-----------------+----------+----------+-------------------------------------------------------------------+
| roundcube.cache | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| roundcube.cache | optimize | status   | OK                                                                |
+-----------------+----------+----------+-------------------------------------------------------------------+
2 rows in set (0.04 sec)

MariaDB [roundcube]> quit
Bye
root@web [~]#

Si vous souhaitez exécuter la commande pour plusieurs tables de la même base de données, utilisez :

OPTIMIZE TABLE table1,table2,table3;

OPTIMIZE TABLE fonctionne avec les tables InnoDB, MyISAM et ARCHIVE.

2. mysqlcheck commande

Le client mysqlcheck effectue la maintenance des tables :il vérifie, répare, optimise ou analyse les tables.

Pour vérifier une table, utilisez :mysqlcheck db_name tbl_name
Pour vérifier toutes les tables d'une base de données :mysqlcheck –databases db_name
Pour vérifier les tables de toutes les bases de données sur le serveur :mysqlcheck –all-databases

Notez que les tables de la base de données sont verrouillées pendant que mysqlcheck est en cours d'exécution. Aucun enregistrement ne peut être inséré ou supprimé des tables.

root@web [~]# mysqlcheck roundcube
roundcube.cache                                    OK
roundcube.cache_index                              OK
roundcube.cache_messages                           OK
roundcube.cache_shared                             OK
roundcube.cache_thread                             OK
roundcube.contactgroupmembers                      OK
roundcube.contactgroups                            OK
roundcube.contacts                                 OK
roundcube.cp_schema_version                        OK
roundcube.dictionary                               OK
roundcube.identities                               OK
roundcube.searches                                 OK
roundcube.session                                  OK
roundcube.system                                   OK
roundcube.users                                    OK
root@web [~]# 

Pour optimiser une base de données, utilisez :

root@web [~]# mysqlcheck -o roundcube
roundcube.cache
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.cache_index
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.cache_messages
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.cache_shared
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.cache_thread
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.contactgroupmembers
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.contactgroups
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.contacts
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.cp_schema_version                        Table is already up to date
roundcube.dictionary
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.identities
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.searches
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.session
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.system
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
roundcube.users
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
root@web [~]#

Pour optimiser toute la base de données sur le serveur, utilisez :

root@web [~]# mysqlcheck -o -A

Ressources :
Manuel OPTIMISER LA TABLE
manuel mysqlcheck