können Sie optimieren Ihren Tabellenindex für den Wiederaufbau und Raum zurück, wenn auch nicht nach deletions-
optimize table table_name;
Aber als Tisch zu bekommen ist sperrig, so dass es während optimze Tabelle sperren wird und auch stehen Sie Frage, wie kann alte Daten entfernen, selbst wenn Sie nicht wenige Stunden alte Daten benötigen. So können Sie wie folgt tun:
Schritt1: während der Nachtstunden oder wenn es weniger Verkehr auf Ihrem DB gibt, benennen Sie zuerst Ihre Haupttabelle um und erstellen Sie eine neue Tabelle mit demselben Namen. Fügen Sie nun einige Stunden Daten von alter Tabelle in neue Tabelle ein.
Dadurch können Sie unerwünschte Daten entfernen und auch neue Tabelle wird optimiert.
Schritt2: In Zukunft können Sie eine gespeicherte Prozedur erstellen, um dieses Problem zu vermeiden. Diese wird in den Nachtstunden nur 1 Mal pro Tag ausgeführt und löscht entweder die Daten aus dieser Tabelle bis zum vorherigen Tag (gemäß Ihrer Anforderung) oder verschiebt die Daten in eine beliebige historische Tabelle.
Schritt3: Da Ihre Tabelle immer nur einzelne Tagesdaten enthält, können Sie die Tabelle optimieren, um die Tabelle neu zu erstellen und Speicherplatz auf dieser Tabelle zu beanspruchen.
Hinweis: delete-Anweisung wird Index nicht neu erstellen und Speicherplatz auf Server nicht freigeben. Dafür müssen Sie Ihren Tisch optimieren. Es kann auf verschiedene Arten wie durch Änderung Aussage oder durch optimieren Aussage etc.
, wie Sie wissen, dass Ihr Indexgröße 6GB ist, und es ist Aufgabe der Erstellung innodb_file_per_table aktiviert oder ot in Ihrem Setup .. .können Sie Ihr Tabellenschema mit "show create table your_table;" –
Ich habe die Größe des Index von SHOW TABLE STATUS überprüft. –
innodb_file_per_table ist auch aktiviert –