Datenbankoptimierung: Bewerten Sie die Indizierung einzelner Tabellen im Vergleich zu mehreren kleinen Tabellen ohne Indizes
Im Bereich der Datenbankoptimierung ist die Debatte zwischen der Verwendung von a Oft entsteht eine einzelne Tabelle mit einem Index oder mehrere kleinere Tabellen ohne Indizes. Um Licht in dieses Thema zu bringen, wollen wir uns mit einem bestimmten Szenario befassen.
Szenario:
Stellen Sie sich eine Tabelle namens „statistics“ mit 20.000 Benutzern und 30 Millionen Zeilen vor Spalten für Benutzer-ID, Aktionen, Zeitstempel usw. Zu den primären Abfragevorgängen gehört das Einfügen von Daten basierend auf Benutzer-ID und das Abrufen von Daten für bestimmte Benutzer-IDs.
Frage:
Wäre es mehr? Ist es sinnvoll, einen Index für eine einzelne „Statistik“-Tabelle zu nutzen oder sich für eine separate „Statistik“-Tabelle für jeden Benutzer zu entscheiden, sodass keine Indizes erforderlich sind?
Antwort:
Die Verwendung von 20.000 Tabellen wird nicht empfohlen, da dies zu Wartungsproblemen und Leistungsengpässen führt. Stattdessen bietet MySQL-Partitionierung eine Lösung zur Optimierung der Leistung, ohne die Datenintegrität zu beeinträchtigen.
MySQL-Partitionierung:
<code class="sql">CREATE TABLE statistics ( id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, PRIMARY KEY (id, user_id) ) PARTITION BY HASH(user_id) PARTITIONS 101;</code>
Vorteile der Partitionierung:
Überlegungen:
Das obige ist der detaillierte Inhalt vonEinzelner Tabellenindex vs. mehrere kleine Tabellen: Ist Partitionierung die optimale Lösung für große Datensätze?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!