# Bases de données : MySQL

# Défragmenter les tables

## Si vous avez accès au terminal

```shell
mysqlcheck --optimize --all-databases
```

## Si vous n’avez pas accès au terminal

Pour trouver les tables à défragmenter :
```sql
USE information_schema;

SELECT TABLE_SCHEMA,TABLE_NAME FROM TABLES
  WHERE TABLE_SCHEMA NOT IN ("information_schema","mysql") AND Data_free > 0;
```

Pour défragmenter les tables :
```sql
OPTIMIZE TABLE nom_de_la_table;
```

# Optimiser MySQL avec Mysqltuner

[mysqltuner.pl](https://github.com/major/MySQLTuner-perl) est un script Perl qui va analyser vos bases, la configuration de MySQL et ses statistiques pour vous fournir des indications de modifications de configuration, des actions à prendre, des conseils pour vos requêtes SQL…

C’est très simple à installer et utiliser, même si ça ne fait pas de miracles, MySQL étant ce qu’il est (quoi, ça se voit que j’aime pas MySQL ? 😛)

Ça se passe là pour l’installation : <https://github.com/major/MySQLTuner-perl#downloadinstallation>

Et pour l’utilisation : <https://github.com/major/MySQLTuner-perl#specific-usage>