Lassen Sie uns heute ein interessantes Thema besprechen: Wie viele Daten benötigt eine einzelne MySQL-Tabelle, bevor Sie über eine Aufteilung der Datenbank und der Tabellen nachdenken müssen? Einige sagen 20 Millionen Zeilen, andere sagen 5 Millionen Zeilen. Also, welcher Wert halten Sie für angemessen? In chinesischen Internet-Technologiekreisen gab es einst ein weit verbreitetes Sprichwort: Wenn die Datenmenge in einer einzelnen MySQL-Tabelle 20 Millionen Zeilen überschreitet, wird die Leistung erheblich reduziert. Tatsächlich soll dieses Gerücht von Baidu stammen. Die konkrete Situation ist ungefähr so. Als der DBA die MySQL-Leistung testete, stellte er fest, dass die Leistung von SQL-Operationen stark abfiel, wenn das Volumen einer einzelnen Tabelle 20 Millionen Zeilen erreichte. Daher ergab sich daraus die Schlussfolgerung. Dann hieß es, die Ingenieure von Baidu seien zu anderen Unternehmen in der Branche gewechselt und hätten diese Informationen mitgebracht, sodass sich dieses Gerücht in der Branche verbreitete. Später empfahl Alibabas „Java Development Manual“, die Datenbank und die Tabellen nur dann aufzuteilen, wenn die Anzahl der Zeilen in einer einzelnen Tabelle 5 Millionen überschritt oder die Kapazität einer einzelnen Tabelle 2 GB überschritt. Die goldene Regel von Alibaba unterstützt dies. Daher verwenden viele Leute sie als Standard für die Tabellenpartitionierung beim Entwurf von Big Data-Speichern. Also, welcher Wert halten Sie 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 sein könnte? Die Frage ist also, wie dieser Wert bewertet wird. 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 des Computers zusammen. Denn um die Leistung zu verbessern, lädt MySQL den Index der Tabelle in den Speicher. Wenn die InnoDB-Puffergröße ausreichend ist, können alle Daten in den Speicher geladen werden und es treten keine Probleme mit der Abfrage auf. Wenn jedoch eine Datenbank mit einer einzelnen Tabelle eine bestimmte Obergrenze erreicht, kann der Speicher ihren Index nicht speichern, sodass nachfolgende SQL-Abfragen Festplatten-E/A generieren und die Leistung dadurch beeinträchtigt wird. Dies hängt natürlich auch mit dem Entwurf der spezifischen Tabellenstruktur zusammen, und das letzte Problem ist die Speicherbegrenzung. Hier kann eine Erhöhung der Hardwarekonfiguration unmittelbare Leistungsverbesserungen bringen. Meine Meinung zum Thema Datenbank- und Tabellen-Sharding ist, dass es mit den tatsächlichen Anforderungen kombiniert werden muss und nicht überdimensioniert werden sollte. Datenbank- und Tabellen-Sharding sollte nicht gleich zu Beginn des Projekts eingeführt werden. Wenn das Geschäft wächst und die Optimierung nicht mehr fortgesetzt werden kann, sollte Datenbank- und Tabellen-Sharding in Betracht gezogen werden, um die Systemleistung zu verbessern. In diesem Zusammenhang fügt Alibabas „Java Development Manual“ hinzu: Wenn Sie davon ausgehen, dass die Datenmenge dieses Niveau in drei Jahren nicht erreichen wird, teilen Sie die Datenbank oder Tabelle beim Erstellen der Tabelle bitte nicht auf. Kommen wir also zurück zur ursprünglichen Frage: Welchen Wert halten Sie für angemessen? 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 ein relativ kompromissbereiter Wert ist. Werfen wir einen Blick auf einige Punkte zum Schreiben von SQL, die für alle hilfreich sein werden Das Schreiben von SQL muss optimiert werden
Das könnte Sie auch interessieren:
|
<<: Implementierungs- und Nutzungsszenarien der JS-Anti-Shake-Drosselungsfunktion
>>: Lösen Sie das Problem der Installation von Theano auf Ubuntu 19
Der Pseudoklassenselektor :not kann Elemente filt...
1. Einführung in KVM Die Abkürzung für Kernel-bas...
1. Einleitung MySQL verfügt über eine Replikation...
Inhaltsverzeichnis Zyklusvergleich Verwendung Zus...
Vorwort: Im täglichen Studium und bei der Arbeit ...
Inhaltsverzeichnis Vorwort Zusammenfassung des Pr...
Umgebungsvorbereitung Docker-Umgebung MySQL 5.7 (...
Vorwort Wenn wir Abfrageanweisungen verwenden, mü...
In diesem Artikel wird eine kleine Demo gezeigt, ...
In meiner Verzweiflung dachte ich plötzlich: Wie i...
Inhaltsverzeichnis 1. Objektänderungserkennung 2....
Bei der Installation von MySQL sind mir mehrere P...
In diesem Artikel wird hauptsächlich die Methode ...
Wenn Sie Ihr MySQL-Anmeldekennwort vergessen, ist...
Informationen zur ersten Installation der MySQL-5...