In diesem Artikel werden Ihnen die Theorie und die Grundkenntnisse von MySQL ausführlich vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
1. Netzwerkverbindungsschicht
Client Connectors: Bietet Unterstützung für die Einrichtung mit dem MySQL-Server. Derzeit werden fast alle gängigen serverseitigen Programmiertechnologien unterstützt, wie z. B. gängiges Java, C, Python, .NET usw., die über ihre jeweiligen API-Technologien Verbindungen mit MySQL herstellen. 2. Serviceschicht (MySQL Server)
Die Serviceschicht ist Der Kern von MySQL Server besteht hauptsächlich aus sechs Teilen: Systemverwaltungs- und Kontrolltools, Verbindungspool, SQL-Schnittstelle, Parser, Abfrageoptimierer und Cache.
Verbindungspool: Verantwortlich für die Speicherung und Verwaltung der Verbindung zwischen dem Client und der Datenbank. Ein Thread ist für die Verwaltung einer Verbindung verantwortlich. Systemverwaltungs- und Kontrolltools (Management Services & Utilities): wie Sicherung und Wiederherstellung, Sicherheitsverwaltung, Clusterverwaltung usw. SQL-Schnittstelle (SQL-Schnittstelle): Wird verwendet, um verschiedene vom Client gesendete SQL-Befehle zu akzeptieren und zurückzugeben Abfrageergebnis des Benutzers. Wie DML, DDL, gespeicherte Prozeduren, Ansichten, Trigger usw. Parser (Parser): Verantwortlich für das Parsen des angeforderten SQL, um einen „Analysebaum“ zu generieren. Überprüfen Sie dann weiter, ob der Analysebaum gemäß einigen MySQL-Regeln zulässig ist. Abfrageoptimierer (Optimierer): Wenn der „Analysebaum“ die Parser-Grammatikprüfung besteht, wird er an den Optimierer übergeben, um ihn in einen Ausführungsplan umzuwandeln und dann mit der Speicher-Engine zu interagieren. select uid,name from user where gender=1;Select-》Projection-》Join strategy1)select wählt zuerst basierend auf der where-Anweisung aus, anstatt alle Daten abzufragen und dann zu filtern2)select-Abfrage Führen Sie basierend auf UID und Name eine Attributprojektion durch, anstatt alle Felder herauszunehmen. 3) Verbinden Sie die vorherige Auswahl und Projektion, um schließlich das Abfrageergebnis zu generieren. Cache (Cache und Puffer): Der Caching-Mechanismus besteht aus einer Reihe kleiner Caches. Zum Beispiel Tabellencache, Datensatzcache, Berechtigungscache, Enginecache usw. Wenn der Abfrage-Cache ein Treffer-Abfrageergebnis hat, kann die Abfrageanweisung Daten direkt aus dem Abfrage-Cache abrufen.3. Storage Engine Layer (Pluggable Storage Engines)
Die Storage Engine ist für die Speicherung und Extraktion von Daten in MySQL verantwortlich und interagiert mit den zugrunde liegenden Systemdateien. Die MySQL-Speicher-Engine ist ein Plug-in. Die Abfrageausführungs-Engine im Server kommuniziert mit der Speicher-Engine über eine Schnittstelle. Die Schnittstelle schirmt die Unterschiede zwischen verschiedenen Speicher-Engines ab. Mittlerweile gibt es viele Speicher-Engines, jede mit ihren eigenen Eigenschaften. Die häufigsten sind MyISAM und InnoDB.
4. Systemdateischicht (Dateisystem)
Diese Schicht ist für die Speicherung von Datenbankdaten und Protokollen im Dateisystem und die Vervollständigung der Interaktion mit der Speicher-Engine verantwortlich. Sie ist die physische Speicherschicht von Dateien. Enthält hauptsächlich Protokolldateien, Datendateien, Konfigurationsdateien, PID-Dateien, Socket-Dateien usw.
Protokolldatei
Zeichnen Sie alle SQL-Abfragen auf, deren Ausführungszeit abgelaufen ist. Der Standardwert beträgt 10 Sekunden.
Variablen wie „%slow_query%“ anzeigen; //Ob aktiviert werden soll
Variablen wie „%long_query_time%“ anzeigen; //Dauer
Konfigurationsdatei
wird zum Speichern aller MySQL-Konfigurationsinformationsdateien verwendet, z. cnf, my.ini usw.
Datendatei
db.opt-Datei: Zeichnet den von dieser Bibliothek verwendeten Standardzeichensatz und die Überprüfungsregeln auf.
FRM-Datei: Speichert Metadaten (Meta)-Informationen zur Tabelle, einschließlich Definitionsinformationen der Tabellenstruktur usw. Jede Tabelle verfügt über eine FRM-Datei.
MYD-Datei: Sie ist für die MyISAM-Speicher-Engine bestimmt und speichert die Daten der MyISAM-Tabelle. Jede Tabelle verfügt über eine .MYD-Datei.
MYI-Datei: Sie ist der MyISAM-Speicher-Engine gewidmet und speichert indexbezogene Informationen der MyISAM-Tabelle. Jede MyISAM-Tabelle entspricht einer .MYI-Datei.
IBD-Datei und IBDATA-Datei: Speichern Sie InnoDB-Datendateien (einschließlich Indizes). Die InnoDB-Speicher-Engine verfügt über zwei Tabellenbereichsmodi: exklusiven Tabellenbereich und gemeinsam genutzten Tabellenbereich. Exklusive Tabellenbereiche verwenden .ibd-Dateien zum Speichern von Daten, und jede InnoDB-Tabelle entspricht einer .ibd-Datei. Gemeinsam genutzte Tabellenbereiche verwenden .ibdata-Dateien und alle Tabellen verwenden eine (oder mehrere, selbst konfigurierte) .ibdata-Dateien.
ibdata1-Datei: Systemtabellenbereichsdatendatei, in der Tabellenmetadaten, Rückgängig-Protokolle usw. gespeichert werden.
ib_logfile0, ib_logfile1 Dateien: Redo-Log-Protokolldateien.
PID-Datei
Die PID-Datei ist eine Prozessdatei der mysqld-Anwendung in der Unix/Linux-Umgebung. Wie viele andere Unix/Linux-Serverprogramme speichert sie ihre eigene Prozess-ID.
Socket-Datei
Socket-Datei ist auch in einer Unix/Linux-Umgebung verfügbar. Benutzer können Unix Socket direkt verwenden, um eine Verbindung zu MySQL herzustellen, wenn eine Client-Verbindung in einer Unix/Linux-Umgebung hergestellt wird, ohne über ein TCP/IP-Netzwerk zu gehen.
Transaktionen und Fremdschlüssel
InnoDB unterstützt Transaktionen und Fremdschlüssel, verfügt über Sicherheit und Integrität und ist für eine große Anzahl von Einfüge- oder Aktualisierungsvorgängen geeignet.
MyISAM unterstützt keine Transaktionen und Fremdschlüssel Es bietet Hochgeschwindigkeitsspeicherung und -abruf und ist für eine große Anzahl ausgewählter Abfragevorgänge geeignet.
Sperrmechanismus
InnoDB unterstützt Sperren auf Zeilenebene, um bestimmte Datensätze zu sperren. Die Sperrung erfolgt indexbasiert.
MyISAM unterstützt das Sperren auf Tabellenebene, also das Sperren der gesamten Tabelle.
Indexstruktur
InnoDB verwendet einen Clustered-Index (Clustered-Index). Der Index und die Datensätze werden zusammen gespeichert, wobei sowohl der Index als auch die Datensätze zwischengespeichert werden.
MyISAM verwendet einen nicht gruppierten Index (nicht gruppierter Index), und Index und Datensatz sind getrennt.
Funktion zur Parallelitätsverarbeitung
MyISAM verwendet Tabellensperren, was zu einer geringen Parallelitätsrate von Schreibvorgängen, keiner Blockierung zwischen Lesevorgängen und einer Blockierung von Lese- und Schreibvorgängen führt.
InnoDB-Lese- und Schreibblockierung kann mit der Isolationsstufe in Zusammenhang stehen, und Multi-Version-Parallelitätskontrolle (MVCC) kann zur Unterstützung hoher Parallelität verwendet werden
Speicherdateien
Die InnoDB-Tabelle entspricht zwei Dateien, einer .frm Tabellenstrukturdatei und eine .ibd-Datendatei. Die InnoDB-Tabelle unterstützt bis zu 64 TB;
MyISAM-Tabelle entspricht drei Dateien, einer .frm-Tabellenstrukturdatei, einer MYD-Tabellendatendatei und einer .MYI-Indexdatei. Ab MySQL 5.0 beträgt das Standardlimit 256 TB.
Der Unterschied zwischen Redo Log und Binlog
Redo Log ist eine Funktion der InnoDB-Engine, während Binlog eine integrierte Funktion von MySQL Server ist und in Binärdateien aufgezeichnet wird.
Redo Log ist ein physisches Protokoll, das den Aktualisierungsstatusinhalt der Datenseite aufzeichnet. Binlog ist ein logisches Protokoll, das den Aktualisierungsprozess aufzeichnet.
Redo-Log wird zyklisch geschrieben, die Protokollspeicherplatzgröße ist festgelegt, Binlog wird angehängt geschrieben, nachdem eines geschrieben wurde, wird das nächste geschrieben und es wird nicht überschrieben.
Redo Log kann zur automatischen Wiederherstellung von Transaktionsdaten nach einem abnormalen Serverausfall verwendet werden. Binlog kann für die Master-Slave-Replikation und Datenwiederherstellung verwendet werden. Binlog verfügt nicht über automatische Absturzsicherungsfunktionen.
In der Anwendung können mehrere Indizes zur Slave-Datenbank hinzugefügt werden, um Abfragen zu optimieren. Diese Indizes können in der Hauptdatenbank weggelassen werden, um die Schreibeffizienz zu verbessern.
Trennschema für Lesen und Schreiben
1 Lesen Sie direkt nach dem Schreiben
Nach dem Schreiben in die Datenbank wird der Lesevorgang innerhalb eines bestimmten Zeitraums zur Hauptdatenbank weitergeleitet, und dann greift der Lesevorgang auf den Slave zu Datenbank.
2 Sekundäre Abfrage
Gehen Sie zunächst zur Slave-Datenbank, um die Daten zu lesen. Wenn sie nicht gefunden werden kann, gehen Sie zur Hauptdatenbank, um die Daten zu lesen. Durch diesen Vorgang wird der Lesedruck problemlos an die Hauptbibliothek zurückgegeben. Um böswillige Angriffe zu vermeiden, wird empfohlen, die API-Vorgänge für den Datenbankzugriff zu kapseln, was sich positiv auf die Sicherheit und die geringe Kopplung auswirkt.
3 Spezielle Verarbeitung basierend auf dem Geschäft
Anpassung an Geschäftsmerkmale und Wichtigkeit. Beispielsweise können wichtige Lese- und Schreibvorgänge für Geschäftsdaten mit hohen Echtzeitanforderungen in der Hauptdatenbank abgelegt werden. Für sekundäre Unternehmen, die keine hohe Echtzeitleistung erfordern, können Lesen und Schreiben getrennt werden und die Abfrage erfolgt aus der Datenbank.
Verwandte Empfehlungen: „MySQL-Tutorial“
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die MySQL-Theorie und Grundkenntnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!