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

Große Tabellen und Analysen in MySql

Auf dem Weg zu 'respektabel ', 2 Millionen Zeilen sind immer noch eine relativ kleine Größe für eine Tabelle. (Und daher ist normalerweise eine schnellere Leistung möglich)

Wie Sie herausgefunden haben, sind Front-End-Platzhalter besonders ineffizient und wir müssen dafür eine Lösung finden, wenn dieser Anwendungsfall für Ihre Anwendung üblich ist.

Es könnte einfach sein, dass Sie nicht über die richtigen Indizes verfügen . Bevor ich fortfahre, möchte ich jedoch betonen, dass Indizes zwar typischerweise die DBMS-Leistung mit SELECT-Anweisungen aller Art verbessern, sich aber systematisch negativ auf die Leistung von "CUD"-Operationen auswirken (d. h. mit den SQL CREATE/INSERT, UPDATE , DELETE-Verben, also die Abfragen, die schreiben in die Datenbank, anstatt nur zu lesen dazu). In einigen Fällen können die negativen Auswirkungen von Indizes auf "Schreib"-Abfragen sehr erheblich sein.

Mein Grund, die ambivalente Natur von Indizes besonders hervorzuheben, ist, dass Ihre Anwendung offenbar im Rahmen ihres normalen Betriebs eine beträchtliche Menge an Daten sammelt und Sie auf eine mögliche Verschlechterung achten müssen, wenn die INSERTs-Abfragen verlangsamt werden . Eine mögliche Alternative besteht darin, die Datenerfassung in einer relativ kleinen Tabelle/Datenbank ohne oder mit sehr wenigen Indizes durchzuführen und die Daten aus dieser Eingabedatenbank regelmäßig in eine Datenbank zu importieren, in der das eigentliche Data Mining stattfindet. (Nachdem sie importiert wurden, können die Zeilen aus der "Eingabedatenbank" gelöscht werden, um sie für ihre INSERT-Funktion klein und schnell zu halten.)

Ein weiteres Anliegen / eine Frage betrifft die Breite einer Zeile in der Besetzungstabelle (die Anzahl der Spalten und die Summe der Breiten dieser Spalten). Eine schlechte Leistung könnte mit der Tatsache zusammenhängen, dass die Zeilen zu breit sind, was zu zu wenigen Zeilen in den Blattknoten der Tabelle und damit zu einer Baumstruktur führt, die tiefer als nötig ist.

Zurück zu den Indizes...
Angesichts der wenigen Abfragen in der Frage scheint es, dass Sie von einem ip + note-Index profitieren könnten (ein Index, der mindestens mit diesen beiden Schlüsseln in dieser Reihenfolge erstellt wurde). Eine vollständige Analyse der Indexsituation und ehrlich gesagt eine mögliche Überprüfung des Datenbankschemas kann hier nicht durchgeführt werden (nicht genug Informationen für eine ...), aber der allgemeine Prozess dafür besteht darin, die Liste der häufigsten Anwendungsfälle zu erstellen und um zu sehen, welche Datenbankindizes in diesen Fällen helfen könnten. Mit dem mySQL-Befehl EXPLAIN.

kann man sich einen Einblick verschaffen, wie bestimmte Abfragen gehandhabt werden, anfänglich oder nachdem Index(e) hinzugefügt wurden

Normalisierung ODER Demormalisierung (oder tatsächlich eine Kombination aus beidem!) ist oft eine praktikable Idee zur Verbesserung der Leistung auch während des Mining-Betriebs.