Situation
In unserer Magento-Datenbank haben wir drei Tabellen, die zu groß werden.
- sales_flat_quote_shipping_rate: 3045 MB
- sales_flat_quote_address: 1688 MB
- sales_flat_quote: 1897 MB
Das sind mehr als 6 GB Daten.
Ich habe diesen Artikel zum Abschneiden dieser Tabellen gefunden . Dieser Artikel spricht nur von der dritten Tabelle.
Ich bin mir nicht sicher, ob die Daten abgeschnitten wurden, und bevorzuge es, alle Daten zu löschen, die älter als 60 Tage sind. Der Artikel spricht von 17 Millionen Datensätzen - wir haben 20! Wenn ich richtig liege, wird die Tabelle durch das Löschen dieser Datensätze nicht gesperrt. Dies wird derzeit in einer Testinstallation getestet. Das scheint zu funktionieren und widerspricht der Website nicht zu sehr.
Fragen
- Ich möchte wissen, ob ich dieselbe Abfrage auch für die anderen beiden Tabellen verwenden kann.
- Ich frage mich, wozu diese Tische gut sind.
quelle
limit 1000000
, bis alle Datensätze, die älter als 60 Tage waren, weg waren. Dann habe ich das AOE Quote Cleaner-Modul installiert. Ich habe das AOE-Modul für die 20-Meter-Löschvorgänge nicht verwendet, da die Website nicht mehr funktioniert - zumindest auf dem Testcomputer. Das Skript war ohne Probleme.In Magento2 wurde "sales_flat_quote" durch "quote" ersetzt, sodass der folgende SQL-Befehl dieses Problem für Magento2 beheben kann:
quelle
DELETE FROM quote WHERE updated_at < DATE_SUB(Now(),INTERVAL 60 DAY)
Obwohl die Lösung von Fiasco Labs funktioniert, würde ich gleich von Anfang an mit einer Erweiterung beginnen und
Mage_Sales_Model_Quote_Resource_Collection
zum Filtern und Entfernen älterer Zitate verwenden. Mit den richtigen Methoden können Sie sicherstellen, dass Ihr Betrieb bei jeder Magento-Installation funktioniert, indem Sie sich nicht auf Datenbankeinschränkungen oder unformatierte Abfragen verlassen.So etwas wie (ungetestet) ...
Sie können dies ausbauen
Mage_Log
oder eine eigene eigenständige Erweiterung erstellen. Ziemlich einfach.quelle
1.
Vermeiden Sie die Verwendung manueller Abfragen in Erweiterungen.2.
Versuchen Sie, Ihre Nebenstellen möglichst unabhängig zu machen.DELETE
Abfragen wie diese hängen von der Datenbankeinschränkung ab, die in Zukunft möglicherweise geändert wird.3.
Verwenden Sie die Magento Factory-Methoden entsprechend.Diese Abfrage löscht alle Angebote, die nicht in Bestellungen umgewandelt wurden.
quelle