Führen Sie OPTIMIZE TABLE aus, um Tabellen für eine bessere Leistung zu defragmentieren

11

Ich verwende Linux 64-Bit OS. Mein MySQL-Tuner sagt die folgenden Dinge:

-------- Allgemeine Statistiken ---------------------------------------- ----------
[-] Versionsprüfung für MySQLTuner-Skript übersprungen
[OK] Derzeit wird MySQL Version 5.1.61-log unterstützt
[OK] Betrieb mit 64-Bit-Architektur

-------- Storage Engine-Statistiken --------------------------------------- ----
[-] Status: -Archiv -BDB -Federated + InnoDB -ISAM -NDBCluster
[-] Daten in MyISAM-Tabellen: 1G (Tabellen: 1914)
[-] Daten in InnoDB-Tabellen: 4M (Tabellen: 199)
[!!] Insgesamt fragmentierte Tabellen: 296

-------- Sicherheitsempfehlungen ------------------------------------ --- ---.
[OK] Allen Datenbankbenutzern sind Kennwörter zugewiesen

-------- Leistungsmetriken ------------------------------------ ---------
[-] Bis zu: 6s (7K q [1K qps], 142 conn, TX: 8M, RX: 701K)
[-] Liest / schreibt: 97% / 3%
[-] Gesamtpuffer: 1,7 G global + 13,2 MB pro Thread (maximal 384 Threads)
[OK] Maximal mögliche Speichernutzung: 6,6 G (42% des installierten RAM)
[OK] Langsame Abfragen: 0% (0 / 7K)
[OK] Höchste Nutzung verfügbarer Verbindungen: 5% (20/384)
[OK] Schlüsselpuffergröße / Gesamt-MyISAM-Indizes: 1,5 G / 2,7 G.
[OK] Trefferquote des Schlüsselpuffers: 97,4% (553 KB zwischengespeichert / 14 KB Lesevorgänge)
[OK] Effizienz des Abfragecaches: 64,6% (4K zwischengespeichert / 6K ausgewählt)
[OK] Cache-Pflaumen pro Tag abfragen: 0
[OK] Sortierungen, die temporäre Tabellen erfordern: 0% (2 temporäre Sortierungen / 337 Sortierungen)
[OK] Auf der Festplatte erstellte temporäre Tabellen: 8% (17 auf der Festplatte / insgesamt 198)
[OK] Trefferquote im Thread-Cache: 85% (20 erstellte / 142 Verbindungen)
[OK] Trefferquote im Tabellen-Cache: 98% (438 geöffnet / 445 geöffnet)
[OK] Verwendetes offenes Dateilimit: 10% (856 / 8K)
[OK] Sofort erworbene Tabellensperren: 99% (2K sofort / 2K Sperren)
[OK] InnoDB-Datengröße / Pufferpool: 4,2 M / 8,0 M.


-------- Empfehlungen ------------------------------------- ------------
Allgemeine Empfehlungen:
    Führen Sie OPTIMIZE TABLE aus, um Tabellen für eine bessere Leistung zu defragmentieren
    MySQL wurde innerhalb der letzten 24 Stunden gestartet - Empfehlungen sind möglicherweise ungenau

Sie empfehlen, OPTIMIZE TABLETabellen zu defragmentieren, um eine bessere Leistung zu erzielen. Aber ich weiß nicht, wie ich es über Putty ausführen soll.

Gibt es jemanden, der mir den Code geben kann, wie ich ihn über Putty ausführen kann?

Barkat Ullah
quelle

Antworten:

6

OPTIMIZE TABLE ist eine SQL-Anweisung - führen Sie sie in einem MySQL-Client aus.

In der Befehlszeile des Servers sollte der Befehlszeilenclient installiert sein. Sie können eine Verbindung zu Ihrer Datenbank im Client mit herstellen mysql -u username -p.

Weitere Informationen finden Sie in der Dokumentation zuOPTIMIZE TABLE .

Shane Madden
quelle
Auf dieser Website geht es um Fragen, die von professionellen Systemadministratoren gestellt werden.
Eltern
@gparent - war das nicht die vollkommen gültige Antwort von Shane?
Mark Henderson
2
@gparent Richtig - aber ich denke nicht, dass es fair ist, die Professionalität einer Person anhand der Kenntnis einer SQL-Anweisung zu beurteilen, wenn sie diese sieht. Die Forschung hätte die Antwort schnell gefunden, aber ich mag die Idee nicht, dass diese Community Fragen abweist, weil sie zu "offensichtlich" sind.
Shane Madden
Sie haben Recht, mein Kommentar gehört überhaupt nicht hierher. Ich glaube, der Autor hat einen Kommentar zu Shane's Frage gepostet und ihn dann entfernt, entweder das oder ich wollte ihn wirklich zu Barkats Frage posten, aber ich würde normalerweise weitere Informationen hinzufügen, wenn das war der Fall.
Eltern
1
Ich bin nicht einverstanden mit Ihnen, es gibt einen Ort, an dem Sie die Grenze ziehen müssen. Ich denke, es ist fair zu sagen, dass ein Fachmann (FAQ: in professioneller Funktion), der derzeit mit MySQL-Datenbanken arbeitet und versucht, diese zu optimieren, kompetent genug sein sollte, um den Begriff zu googeln und herauszufinden, dass es sich um eine MySQL-Abfrage aus dem ersten Suchergebnis handelt. Vielleicht erwarte ich zu viel von einem Mitarbeiter ..
gparent
18

Sie können es auch mysqlcheck -u username -p --auto-repair --optimize --all-databasesim Terminal versuchen .

Wenn Sie "Tabelle optimieren" mysql -u username -pausführen, können Sie MySQL wie folgt starten und von dort aus Befehle ausführen. Normalerweise ist der erste Befehl, den ich verwende, show databases;aber Sie sollten zuerst ein MySQL-Tutorial finden. Der erste, der in Google auftauchte: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Ob Sie Kitt verwenden oder nicht, spielt keine Rolle. Vielleicht möchten Sie "über die Befehlszeile" anstelle von "über Putty" sagen.

PJ Brunet
quelle
2
Dies ist eine viel bessere Lösung als die, die akzeptiert wurde. Sie müssen nicht alle Datenbanken und Tabellen auflisten, bevor Sie die Befehle ausführen, und müssen nicht automatisch repariert werden.
Sammitch
1
Tun Sie sich selbst einen Gefallen und führen Sie eine Datenbanksicherung durch, bevor Sie dies ausführen. mysqldump -u username -p dbname > dbname.sqlund gzip dbname.sqlsollte es schön machen.
Fiasco Labs
Fiasko, zumindest in Centos, sollte der Befehl seinmysqldump -u username -p db_name > dbname.sql
yitwail