MySQL verfügt über einen Befehl OPTIMIZE TABLE, mit dem nicht verwendeter Speicherplatz in einer MySQL-Installation zurückgefordert werden kann. Gibt es eine Möglichkeit (integrierter Befehl oder allgemeine gespeicherte Prozedur), diese Optimierung für jede Tabelle in der Datenbank- und / oder Serverinstallation auszuführen, oder müssten Sie diese selbst skripten?
245
OPTIMIZE TABLE
war nützlich für MyISAM. Jetzt, da diese Engine weg ist, verschwindet die NotwendigkeitOPTIMIZE TABLE
, insbesondere die Notwendigkeit, alle Tabellen regelmäßig zu optimieren.Antworten:
Sie können
mysqlcheck
dies in der Befehlszeile tun.Eine Datenbank:
Alle Datenbanken:
quelle
mysqlcheck -u [username] -p[password] -o [database name]
OPTIMIZE TABLE
Befehl optimieren : dev.mysql.com/doc/refman/5.5/en/optimize-table.html . Optimieren Sie beispielsweise eine Tabelle wie folgt:OPTIMIZE TABLE <your_schema>.<your_table>;
Optimieren Sie alle Tabellen in einem bestimmten Schema wie folgt: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;
Ich habe dieses 'einfache' Skript erstellt:
Fügen Sie es zum Ausführen einfach in eine beliebige SQL-IDE ein, die mit Ihrer Datenbank verbunden ist.
Hinweis: Dieser Code funktioniert nicht mit phpmyadmin.
Wie es funktioniert
Es führt eine
show tables
Anweisung aus und speichert sie in einer vorbereiteten Anweisung. Dann wird einoptimize table
im ausgewählten Satz ausgeführt.Sie können steuern, welche Tabellen optimiert werden sollen, indem Sie in der Variable einen anderen Wert festlegen
@tables_like
(zset @tables_like = '%test%';
. B. :) .quelle
bd
aus @b Fehlercode: 1064. Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von 'NULL' in Zeile 1Das folgende Beispiel-PHP-Skript kann Ihnen helfen, alle Tabellen in Ihrer Datenbank zu optimieren
quelle
Führen Sie alle erforderlichen Schritte aus, um alle Tabellen in allen Datenbanken mit einem einfachen Shell-Skript zu reparieren:
quelle
für alle Datenbanken:
Für eine Datenbankoptimierung:
quelle
mysqlcheck -Aos
erfordert der Befehl unter Linux keinen Benutzer + Passwort.Aus phpMyAdmin und anderen Quellen können Sie verwenden:
Anschließend können Sie das Ergebnis kopieren und in eine neue Abfrage einfügen oder aus Ihrer eigenen Quelle ausführen. Wenn Sie nicht die ganze Aussage sehen:
quelle
Wenn Sie alle Tabellen in allen Datenbanken Ihres MySQL-Servers analysieren, reparieren und optimieren möchten, können Sie dies auf einmal über die Befehlszeile tun. Sie benötigen jedoch root, um dies zu tun.
Sobald Sie dies ausführen, werden Sie aufgefordert, Ihr MySQL-Root-Passwort einzugeben. Danach startet es und Sie sehen die Ergebnisse, während es passiert.
Beispielausgabe:
Wenn Sie das Root-Passwort nicht kennen und WHM verwenden, können Sie es in WHM ändern, indem Sie zu: Home> SQL Services> MySQL-Root-Passwort gehen
quelle
Über die Befehlszeile:
Geben Sie dann das Passwort ein
quelle
Mit dem MySQL-Client können Sie alle Datenbanktabellen optimieren / überprüfen und reparieren.
Zuerst sollten Sie alle Tabellenlisten erhalten, getrennt durch ',':
Wenn Sie nun alle Tabellen zur Optimierung haben:
quelle
Der
MySQL Administrator
(Teil der MySQL GUI Tools) kann dies auf Datenbankebene für Sie erledigen.Wählen Sie einfach Ihr Schema aus und klicken Sie auf die
Maintenance
Schaltfläche in der unteren rechten Ecke.Da die GUI-Tools den Status "End-of-Life" erreicht haben, sind sie auf der MySQL-Seite schwer zu finden. Gefunden über Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
Ich weiß nicht, ob die neue MySQL Workbench das auch kann.
Und Sie können das
mysqlcheck
Kommandozeilen-Tool verwenden, das dies auch kann.quelle
Wenn Sie direkt auf die Datenbank zugreifen, können Sie folgende Abfrage schreiben:
quelle
Dieses Bash-Skript akzeptiert das Root-Passwort als Option und optimiert es nacheinander mit Statusausgabe:
quelle
Ein Starter-Bash-Skript zum Auflisten und Ausführen eines Tools für die DBs ...
quelle
Meine 2 Cent: Beginnen Sie mit der Tabelle mit der höchsten Fragmentierung
quelle