Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man MySQL-Indizes optimieren, damit INSERT-Vorgänge in einer großen Tabelle mit häufigen Schreib- und Lesevorgängen schnell ausgeführt werden?

Schreibvorgänge für eine einzelne Zeile in eine Datentabelle sollten nicht 5 Sekunden dauern, egal wie groß der Tisch wird.

Basiert Ihr gruppierter Index auf dem Zeitstempelfeld? Wenn nicht, sollte es so sein, also schreiben Sie nicht irgendwo in die Mitte Ihres Tisches. Stellen Sie außerdem sicher, dass Sie InnoDB-Tabellen verwenden – MyISAM ist nicht für Schreibvorgänge optimiert.

Ich würde vorschlagen, in zwei zu schreiben Tabellen:eine langfristige Tabelle, eine kurzfristige Berichtstabelle mit wenig oder keiner Indizierung, die dann nach Bedarf ausgegeben wird.

Eine andere Lösung wäre die Verwendung von Memcached oder einer In-Memory-Datenbank für die Live-Berichtsdaten, sodass es keinen Treffer in der Produktionsdatenbank gibt.

Noch ein Gedanke:Wie „live“ muss einer dieser Berichte genau sein? Vielleicht das Abrufen einer neuen Liste auf Zeitbasis statt einmal für jeden Seitenaufruf wäre ausreichend.