Exécutez OPTIMIZE TABLE pour défragmenter les tables pour de meilleures performances

12

J'utilise Linux OS 64 bits. Mon tuner mysql dit les choses ci-dessous:

-------- Statistiques générales ---------------------------------------- ----------
[-] Vérification de version ignorée pour le script MySQLTuner
[OK] Actuellement en cours d'exécution MySQL version 5.1.61 prise en charge
[OK] Fonctionnant sur une architecture 64 bits

-------- Statistiques du moteur de stockage --------------------------------------- ----
[-] Statut: -Archive -BDB -Federated + InnoDB -ISAM -NDBCluster
[-] Données dans les tableaux MyISAM: 1G (tableaux: 1914)
[-] Données dans les tableaux InnoDB: 4M (Tableaux: 199)
[!!] Total des tableaux fragmentés: 296

-------- Recommandations de sécurité ---------------------------------------- ---
[OK] Tous les utilisateurs de la base de données ont des mots de passe attribués

-------- Indicateurs de performance ---------------------------------------- ---------
[-] Jusqu'à: 6s (7K q [1K qps], 142 conn, TX: 8M, RX: 701K)
[-] Lectures / écritures: 97% / 3%
[-] Nombre total de tampons: 1,7 G global + 13,2 M par thread (384 threads max)
[OK] Utilisation maximale possible de la mémoire: 6,6 G (42% de la RAM installée)
[OK] Requêtes lentes: 0% (0 / 7K)
[OK] Utilisation la plus élevée des connexions disponibles: 5% (20/384)
[OK] Taille du tampon clé / total des index MyISAM: 1,5 G / 2,7 G
[OK] Taux de réussite du tampon clé: 97,4% (553 Ko mis en cache / 14 000 lectures)
[OK] Efficacité du cache de requête: 64,6% (sélections 4K en cache / 6K)
[OK] Query cache pruneaux par jour: 0
[OK] Tris nécessitant des tables temporaires: 0% (2 tris temporaires / 337 tris)
[OK] Tables temporaires créées sur disque: 8% (17 sur disque / 198 au total)
[OK] Taux de réussite du cache de threads: 85% (20 créées / 142 connexions)
[OK] Taux de réussite du cache de table: 98% (438 ouvert / 445 ouvert)
[OK] Limite d'ouverture de fichiers utilisée: 10% (856 / 8K)
[OK] Verrous de table acquis immédiatement: 99% (2K verrous immédiats / 2K)
[OK] Taille des données / pool de mémoire tampon InnoDB: 4,2 M / 8,0 M


-------- Recommandations ----------------------------------------- ------------
Recommandations générales:
    Exécutez OPTIMIZE TABLE pour défragmenter les tables pour de meilleures performances
    MySQL a démarré au cours des dernières 24 heures - les recommandations peuvent être inexactes

Leurs recommandations sont d'exécuter des OPTIMIZE TABLEtables de défragmentation pour de meilleures performances; Mais je ne sais pas comment l'exécuter via Putty.

Y a-t-il quelqu'un qui peut me donner le code comment l'exécuter via Putty?

Barkat Ullah
la source

Réponses:

7

OPTIMIZE TABLE est une instruction SQL - exécutez-la dans un client MySQL.

Sur la ligne de commande du serveur, le client de ligne de commande doit être installé; vous pouvez vous connecter à votre base de données dans le client avec mysql -u username -p.

Consultez la documentation surOPTIMIZE TABLE pour plus d'informations.

Shane Madden
la source
Ce site concerne les questions posées par les administrateurs système professionnels.
gparent
@gparent - est-ce que euhh était censé être sur la question, pas la réponse parfaitement valide de Shane?
Mark Henderson
2
@gparent Right - mais je ne pense pas qu'il soit juste de juger le professionnalisme de quelqu'un sur la base d'une connaissance d'une instruction SQL lorsqu'elle la voit. La recherche aurait rapidement trouvé la réponse, mais ... Je n'aime pas l'idée que cette communauté détourne les questions parce qu'elle est trop "évidente".
Shane Madden
Vous avez raison, mon commentaire n'appartient pas du tout ici, je pense que l'auteur a posté un commentaire sur la question de Shane puis l'a supprimé, ou bien je voulais vraiment le poster sur la question de Barkat mais j'ajouterais généralement plus d'informations si c'était le cas.
gparent
1
Je ne suis cependant pas d'accord avec vous, il y a un endroit où vous devez tracer la ligne. Je pense qu'il est juste de dire qu'un professionnel (FAQ: à titre professionnel) travaillant actuellement avec des bases de données MySQL et essayant de les optimiser devrait être suffisamment compétent pour rechercher le terme sur Google et comprendre qu'il s'agit d'une requête MySQL à partir du premier résultat de recherche. Peut-être que j'attends trop de tout employé ..
gparent
18

Vous pouvez également essayer mysqlcheck -u username -p --auto-repair --optimize --all-databasesdans le terminal.

En ce qui concerne l'exécution de "Optimiser la table", vous pouvez démarrer MySQL comme ceci mysql -u username -pet à partir de là, vous pouvez exécuter des commandes. En règle générale, la première commande que j'utilise est, show databases;mais vous devriez d'abord trouver un tutoriel MySQL. Le premier qui est apparu dans Google: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Que vous utilisiez du mastic ou non n'a pas d'importance. Vous voudrez peut-être dire «à partir de la ligne de commande» au lieu de «via Putty».

PJ Brunet
la source
2
C'est une bien meilleure solution que celle qui a été acceptée. Pas besoin d'énumérer toutes les bases de données et tables avant d'exécuter les commandes, plus la réparation automatique.
Sammitch
1
Rendez-vous également service et effectuez une sauvegarde de la base de données avant d'exécuter tout cela. mysqldump -u username -p dbname > dbname.sqlet gzip dbname.sqldevrait le faire bien.
Fiasco Labs
Fiasco, en centos au moins, la commande devrait êtremysqldump -u username -p db_name > dbname.sql
yitwail