2012-04-06 8 views
1

Wir verwenden MYSQL InnoDB Engine für Einfügen und Aktualisieren von Operationen, um die Leistung für die Abfrage zu verbessern, erwägen wir die Verwendung von Memory-Tabelle, um die neuesten Daten zu speichern. letzten zwei Monate Daten.So synchronisieren Sie MySQL InnoDB Tabellendaten mit Memory Tabelle

wir können konfigurieren, dass MySQL Daten in Memory Tabelle beim Serverstart zu importieren, aber die tatsächlichen Geschäftsdaten ständig aktualisiert werden, müssen wir die Daten von InnoDB Tabelle zu Meomory Tabelle häufig synchronisieren, aber wir können nicht jeden MySQL Server neu starten Zeit, wenn wir die Daten synchronisieren wollen.

Kann jemand wissen, wie man die Daten synchronisiert, ohne den MySQL neu zu starten?

+0

Klingt wie eine komplexe Lösung umfassen. Haben Sie zuerst versucht, MySQL so einzustellen, dass mehr Speicher für den Cache verwendet wird? –

+0

Ja, ich habe 6G Speicher zugewiesen, um MySQL Memory Tabelle – Scarlett

Antwort

2

Sie würden das normalerweise mit einer trigger tun. Meine erste Idee wäre, es in zwei Teilen zu machen.

1) Erstellen Sie Trigger für das Einfügen, Aktualisieren und Löschen (wenn das jemals passiert) für die innodb-Tabelle, die die gleiche Änderung in der Speichertabelle verursacht. Stellen Sie sicher, dass keine Logik davon abhängt, dass bestimmte Zeilen aus der Speichertabelle gelöscht wurden, sie wird die letzten 2 Monate und dann einige halten.

2) Erstellen Sie einen Hintergrundjob, um die Speichertabelle der alten Daten zu löschen. Wenn Sie eine hohe Belastung gegen es haben, denken Sie an einen häufigen Job, der die alten Reihen ein paar Mal knabbert.

würde andere Lösung partition die InnoDB-Tabelle von Zeit und dann stellen Sie sicher, dass Sie so etwas wie where time > subdate(now(), interval 2 month)

+0

zu unterstützen Danke für Ihre schnelle Antwort und gute Vorschläge! Ich werde deine zwei Ideen ausprobieren und die Leistung vergleichen. – Scarlett

Verwandte Themen