suchen
HeimDatenbankMySQL-TutorialDetails zur Entwicklung der MySQL-Architektur von klein nach groß

Angenommen, eine Website (discuz) hat von Anfang an eine geringe Anzahl von Besuchen und mehrere zehn Millionen tägliche PVs. Spekulieren wir über die Entwicklung ihrer MySQL-Serverarchitektur.

Die erste Phase
Der tägliche PV-Wert der Website-Besuche liegt unter 1 W. Ein einzelner Computer führt Web und DB aus, und es besteht keine Notwendigkeit, eine Optimierung der Architekturebene vorzunehmen (z. B. ist es nicht erforderlich, den zwischengespeicherten Cache zu erhöhen). Derzeit werden Daten oft täglich kalt gesichert, aber manchmal wird aus Gründen der Datensicherheit ein MySQL-Master-Slave eingerichtet.

Die zweite Phase
Der tägliche PV der Website-Besuche erreichte Zehntausende. Zu diesem Zeitpunkt ist die einzelne Maschine bereits etwas ausgelastet Wir müssen Web und Datenbank trennen und wir müssen einen zwischengespeicherten Dienst als Cache erstellen. Mit anderen Worten: In dieser Phase können wir MySQL auch auf einem einzigen Computer ausführen, um die Datenspeicherung und Abfrage der gesamten Website durchzuführen. Wenn Sie MySQL-Master-Slave verwenden, dient dies auch der Datensicherheit.

Die dritte Stufe
Der tägliche PV der Website-Besuche erreichte Hunderttausende. Obwohl dies auch von einer einzelnen Maschine unterstützt werden kann, ist die erforderliche Maschinenkonfiguration viel besser als bei der vorherigen Maschine. Wenn es die Mittel erlauben, können Sie eine Maschine mit hoher Konfiguration kaufen, um den MySQL-Dienst auszuführen. Dies bedeutet jedoch nicht, dass eine Verdoppelung der Konfiguration zu einer Verdoppelung der Leistung führt . Daher werden wir in dieser Phase darüber nachdenken, MySQL-Dienste zu gruppieren, was bedeutet, dass wir mehrere Maschinen zum Ausführen von MySQL verwenden können. Allerdings unterscheiden sich MySQL-Cluster von Web-Clustern. Da wir die Datenkonsistenz berücksichtigen müssen, können wir nicht einfach die Methoden des Web-Clusters (LVS, Nginx-Proxy) anwenden. Die mögliche Architektur ist MySQL-Master-Slave, ein Master und mehrere Slaves . Um die Robustheit der Architektur und Datenintegrität sicherzustellen, kann es nur einen Master und mehrere Slaves geben.

Es gibt ein weiteres Problem, über das wir nachdenken müssen, nämlich, dass unser Programm in der Front-End-Webebene die IP der MySQL-Maschine angibt Maschinen, was passiert im Programm? discuz verfügt tatsächlich über eine Funktion, die die Lese- und Schreibtrennung von MySQL unterstützt. Das heißt, wir können mehrere Maschinen zum Ausführen von MySQL verwenden, von denen eine zum Schreiben und die anderen zum Lesen dienen. Wir müssen nur die Lese- und Schreib-IPs im Programm konfigurieren, und das Programm unterscheidet die Maschinen automatisch. Wenn wir nicht die mit discuz gelieferte Konfiguration verwenden, können wir natürlich auch eine Software namens mysql-proxy verwenden, um eine Lese-/Schreibtrennung zu erreichen. Es unterstützt einen Master- und mehrere Slave-Modus.

Die vierte Stufe
Die tägliche Zahl der Website-Besuche erreicht mehrere Millionen. Beim vorherigen Ein-Master-Mehrfach-Slave-Modell sind Engpässe aufgetreten, da mit zunehmender Anzahl von Website-Besuchen auch die Lesemenge in der Datenbank zunimmt. Wir müssen mehr Slaves hinzufügen, aber wenn die Anzahl der Slaves auf Dutzende ansteigt, Aufgrund der Tatsache, dass alle Bin-Protokolle an alle Slaves verteilt werden müssen, ist dieser Vorgang selbst eine sehr umständliche Angelegenheit. In Verbindung mit häufigem Lesen führt dies unweigerlich zu einer großen Verzögerung bei der Synchronisierung der Daten von den Slaves. Daher können wir eine Optimierung vornehmen, den ursprünglichen Master und die mehreren Slaves von MySQL in einen Master und einen Slave ändern, und dann wird der Slave als Master für andere Slaves dienen. Der ehemalige Master ist nur für das Schreiben von Website-Geschäften verantwortlich. und die nachfolgenden Slaves Es ist nicht für die Geschäfte der Website verantwortlich, sondern nur für die Synchronisierung des Bin-Logs mit anderen Slaves. Auf diese Weise können Sie weiterhin mehrere Slave-Bibliotheken stapeln.

Die fünfte Phase
Als der tägliche Pv der Website-Besuche 10 Millionen erreichte, stellten wir fest, dass die Anzahl der Schreibvorgänge auf die Die Website ist sehr groß. In unserer vorherigen Architektur gab es nur einen Master, und der Master hier ist zu einem Engpass geworden. Daher sind weitere Anpassungen erforderlich. Beispielsweise können wir das Unternehmen in Module, separate benutzerbezogene Module, separate Berechtigungen, Punkte usw. unterteilen, eine separate Bibliothek ausführen und diese dann als Master-Slave verwenden, die sogenannte Unterbibliothek . Natürlich können Sie auch den Breitengrad ändern, die Tabellen mit großem Zugriffs- oder Schreibvolumen trennen und auf einem Server ausführen. Sie können eine Tabelle auch in mehrere kleine Tabellen aufteilen. Dieser Arbeitsschritt bringt einige Verfahrensänderungen mit sich, daher ist es notwendig, im Voraus mit Entwicklungskollegen zu kommunizieren und zu entwerfen. Kurz gesagt, was Sie in diesem Schritt tun müssen, ist die Unterdatenbank und Untertabelle.

Schreiben Sie auf die Rückseite
Für die weitere Entwicklung teilen Sie den großen Tisch einfach weiter in kleine Tische auf. Die inländische Alibaba Taobao-Website verfügt über eine große Datenmenge. Ihre MySQL-Architektur folgt dem Prinzip der Unterdatenbank und der Untertabelle. kann nach Käufern und Verkäufern, nach Zeit usw. unterteilt werden.

Das Obige zeigt die Details des Entwicklungsprozesses der MySQL-Architektur von klein nach groß. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was sind gespeicherte Verfahren in MySQL?Was sind gespeicherte Verfahren in MySQL?May 01, 2025 am 12:27 AM

Speichernde Verfahren sind vorkompilierte SQL -Anweisungen in MySQL zur Verbesserung der Leistung und zur Vereinfachung komplexer Vorgänge. 1. Verbesserung der Leistung: Nach der ersten Zusammenstellung müssen nachfolgende Anrufe nicht neu kompiliert werden. 2. Die Sicherheit verbessern: Beschränken Sie den Zugriff auf die Datenentabelle durch Berechtigungssteuerung. 3. Vereinfachen Sie komplexe Operationen: Kombinieren Sie mehrere SQL -Anweisungen, um die Logik der Anwendungsschicht zu vereinfachen.

Wie funktioniert das Caching von Abfrage in MySQL?Wie funktioniert das Caching von Abfrage in MySQL?May 01, 2025 am 12:26 AM

Das Arbeitsprinzip des MySQL -Abfrage -Cache besteht darin, die Ergebnisse der ausgewählten Abfrage zu speichern. Wenn dieselbe Abfrage erneut ausgeführt wird, werden die zwischengespeicherten Ergebnisse direkt zurückgegeben. 1) Abfrage -Cache verbessert die Leistung der Datenbank und findet zwischengespeicherte Ergebnisse durch Hash -Werte. 2) Einfache Konfiguration, setzen Sie in MySQL -Konfigurationsdatei query_cache_type und query_cache_size. 3) Verwenden Sie das Schlüsselwort SQL_NO_Cache, um den Cache spezifischer Abfragen zu deaktivieren. 4) In Hochfrequenz-Update-Umgebungen kann Abfrage-Cache Leistungs Engpässe verursachen und muss für die Verwendung durch Überwachung und Anpassung von Parametern optimiert werden.

Was sind die Vorteile der Verwendung von MySQL gegenüber anderen relationalen Datenbanken?Was sind die Vorteile der Verwendung von MySQL gegenüber anderen relationalen Datenbanken?May 01, 2025 am 12:18 AM

Die Gründe, warum MySQL in verschiedenen Projekten häufig verwendet wird, umfassen: 1. Hochleistungs und Skalierbarkeit, die mehrere Speichermotoren unterstützen; 2. Einfach zu verwendende und pflegende, einfache Konfiguration und reichhaltige Werkzeuge; 3. Reiches Ökosystem, das eine große Anzahl von Community- und Drittanbietern anzieht; V.

Wie behandeln Sie Datenbank -Upgrades in MySQL?Wie behandeln Sie Datenbank -Upgrades in MySQL?Apr 30, 2025 am 12:28 AM

Zu den Schritten für die Aktualisierung der MySQL -Datenbank gehören: 1. Sicherung der Datenbank, 2. Stoppen Sie den aktuellen MySQL -Dienst, 3. Installieren Sie die neue Version von MySQL, 14. Starten Sie die neue Version des MySQL -Dienstes, 5. Wiederherstellen Sie die Datenbank wieder her. Während des Upgrade -Prozesses sind Kompatibilitätsprobleme erforderlich, und erweiterte Tools wie Perconatoolkit können zum Testen und Optimieren verwendet werden.

Was sind die verschiedenen Sicherungsstrategien, die Sie für MySQL verwenden können?Was sind die verschiedenen Sicherungsstrategien, die Sie für MySQL verwenden können?Apr 30, 2025 am 12:28 AM

Zu den MySQL-Backup-Richtlinien gehören logische Sicherungen, physische Sicherungen, inkrementelle Sicherungen, replikationsbasierte Backups und Cloud-Backups. 1. Logical Backup verwendet MySQldump, um die Datenbankstruktur und -daten zu exportieren, die für kleine Datenbanken und Versionsmigrationen geeignet sind. 2. Physische Sicherungen sind durch das Kopieren von Datendateien schnell und umfassend, erfordern jedoch eine Datenbankkonsistenz. 3. Incremental Backup verwendet eine binäre Protokollierung, um Änderungen aufzuzeichnen, was für große Datenbanken geeignet ist. V. 5. Cloud -Backups wie AmazonRDs bieten Automatisierungslösungen, aber Kosten und Kontrolle müssen berücksichtigt werden. Bei der Auswahl einer Richtlinie sollten Datenbankgröße, Ausfallzeittoleranz, Wiederherstellungszeit und Wiederherstellungspunktziele berücksichtigt werden.

Was ist MySQL Clustering?Was ist MySQL Clustering?Apr 30, 2025 am 12:28 AM

MysqlclusteringenhancesDatabaserObustnessandScalabilityBydiTributingDataacrossmultiPlenodes

Wie optimieren Sie das Datenbankschema -Design für die Leistung in MySQL?Wie optimieren Sie das Datenbankschema -Design für die Leistung in MySQL?Apr 30, 2025 am 12:27 AM

Das Optimieren von Datenbankschema -Design in MySQL kann die Leistung in den folgenden Schritten verbessern: 1. Indexoptimierung: Erstellen Sie Indizes für gemeinsame Abfragespalten, Ausgleich des Aufwand der Abfragen und Einfügen von Aktualisierungen. 2. Tabellenstrukturoptimierung: Redundieren Sie die Datenreduktion durch Normalisierung oder Anti-Normalisierung und verbessern Sie die Zugangseffizienz. 3. Datentypauswahl: Verwenden Sie geeignete Datentypen, z. B. int anstelle von VARCHAR, um den Speicherplatz zu reduzieren. 4. Partitionierung und Untertisch: Verwenden Sie für große Datenvolumina die Partitionierung und Untertabelle, um Daten zu dispergieren, um die Abfrage- und Wartungseffizienz zu verbessern.

Wie können Sie die MySQL -Leistung optimieren?Wie können Sie die MySQL -Leistung optimieren?Apr 30, 2025 am 12:26 AM

TooptimizeMySQLperformance,followthesesteps:1)Implementproperindexingtospeedupqueries,2)UseEXPLAINtoanalyzeandoptimizequeryperformance,3)Adjustserverconfigurationsettingslikeinnodb_buffer_pool_sizeandmax_connections,4)Usepartitioningforlargetablestoi

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor