Heute besprechen wir ein interessantes Thema: Wie viele Daten muss eine einzelne MySQL-Tabelle berücksichtigen, bevor sie in Datenbanken und Tabellen aufgeteilt werden muss? Manche sagen 20 Millionen Zeilen, andere sagen 5 Millionen Zeilen. Was halten Sie also von diesem Wert für angemessen?
In Chinas Internet-Technologiekreisen gab es einst ein weit verbreitetes Sprichwort: Die Leistung von MySQL wird erheblich sinken, wenn das Datenvolumen in einer einzelnen Tabelle 20 Millionen Zeilen überschreitet. Tatsächlich soll dieses Gerücht von Baidu stammen. Die konkrete Situation ist wahrscheinlich wie folgt: Als der DBA die Leistung von MySQL testete, stellte er fest, dass die Leistung von SQL-Operationen stark abnahm. Damals hieß es, dass Baidu-Ingenieure zu anderen Unternehmen der Branche wechselten und diese Informationen mitbrachten, sodass sich dieses Sprichwort in der Branche verbreitete.
Später schlug Alibabas „Java Development Manual“ vor, dass Datenbank- und Tabellen-Sharding nur dann empfohlen wird, wenn die Anzahl der Zeilen in einer einzelnen Tabelle 5 Millionen überschreitet oder die Kapazität einer einzelnen Tabelle 2 GB überschreitet. Dies wird durch die goldene Eisenregel von Alibaba unterstützt. Wenn viele Leute Big-Data-Speicher entwerfen, verwenden sie diese daher als Standard für die Durchführung von Tabellenoperationen.
Was halten Sie von diesem Wert für angemessen? Warum nicht 3 Millionen Zeilen oder 8 Millionen Zeilen, sondern 5 Millionen Zeilen? Vielleicht würden Sie sagen, dass dies Alis bester tatsächlicher Kampfwert ist? Es stellt sich also erneut die Frage: Wie wird dieser Wert bewertet? Warten Sie einen Moment, denken Sie bitte einen Moment darüber nach.
Tatsächlich hat dieser Wert nichts mit der tatsächlichen Anzahl der Datensätze zu tun, sondern hängt mit der Konfiguration von MySQL und der Hardware der Maschine zusammen. Denn um die Leistung zu verbessern, lädt MySQL den Index der Tabelle in den Speicher. Wenn die InnoDB-Puffergröße ausreichend ist, kann sie vollständig in den Speicher geladen werden und es treten keine Probleme bei der Abfrage auf. Wenn eine Einzeltabellendatenbank jedoch eine Obergrenze einer bestimmten Größenordnung erreicht, kann der Speicher ihren Index nicht speichern, was dazu führt, dass nachfolgende SQL-Abfragen Festplatten-E/A generieren, was zu Leistungseinbußen führt. Dies hängt natürlich auch mit dem Design der spezifischen Tabellenstruktur zusammen, und das ultimative Problem ist die Speicherbeschränkung. Hier kann eine Erhöhung der Hardwarekonfiguration zu sofortigen Leistungsverbesserungen führen.
Mein Standpunkt zu Unterdatenbanken und Untertabellen ist also, dass sie mit den tatsächlichen Bedürfnissen kombiniert werden müssen und nicht übergestaltet werden sollten. Das Design von Unterdatenbanken und Untertabellen sollte nicht so sein Wird zu Beginn des Projekts verwendet, wird es mit zunehmendem Geschäftswachstum schwierig sein, die Systemleistung zu verbessern. In diesem Zusammenhang heißt es im „Java Development Manual“ von Alibaba: Wenn erwartet wird, dass das Datenvolumen dieses Niveau in drei Jahren nicht erreicht, teilen Sie die Datenbank beim Erstellen der Tabelle bitte nicht in Tabellen auf. Zurück zur ursprünglichen Frage: Was ist Ihrer Meinung nach ein angemessener Wert? Mein Vorschlag ist, eine umfassende Bewertung basierend auf der Situation Ihrer eigenen Maschine vorzunehmen. Wenn Sie keinen Standard im Sinn haben, verwenden Sie vorübergehend 5 Millionen Zeilen als einheitlichen Standard, was einen relativen Kompromisswert darstellt.
Weitere technische Artikel zum Thema MySQL finden Sie in der Spalte MySQL-Tutorial.
Das obige ist der detaillierte Inhalt vonMySQL-Einzeltabellendaten sollten 5 Millionen Zeilen nicht überschreiten: Ist das ein Erfahrungswert oder eine goldene Regel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!