Vorwort: Viele Kollegen arbeiten schon lange, aber ihre Kenntnisse von MySQL beschränken sich nur auf die oberflächlichen CRUD-Kenntnisse. Sie wissen sehr wenig über die tieferen Prinzipien und technischen Kenntnisse von MySQL. Mit zunehmenden Berufsjahren nimmt ihre Wettbewerbsfähigkeit am Arbeitsplatz weiter ab. Es kommt häufig vor, dass man bei Vorstellungsgesprächen vom Interviewer geschlagen wird. Die am häufigsten gestellten Interviewfragen zu MySQL sind beispielsweise:
Wenn Sie sie einzeln auflisten, können Sie wahrscheinlich Hunderte von häufig gestellten Interviewfragen zu MySQL auflisten. Kennen Sie sie alle? Es ist nicht nur ein Vorstellungsgespräch. Wenn Sie vom Low-Level-Programmierer zum erfahrenen Ingenieur, Architekten usw. aufsteigen möchten, müssen Sie die grundlegenden Prinzipien und Technologien von MySQL beherrschen. Hinweis: Binghe wird in Zukunft von Zeit zu Zeit Artikel über die zugrunde liegenden Prinzipien und Technologien von MySQL veröffentlichen. Er wird hart mit seinen Freunden zusammenarbeiten, um die zugrunde liegenden MySQL-Technologien, die Binghe beherrscht, mit allen zu teilen, um die Interviewer in Vorstellungsgesprächen und andere Freunde bei der Arbeit zu schlagen. 1. MySQL-ArchitekturWerfen wir zunächst einen Blick auf das unten dargestellte MySQL-Architekturdiagramm. Aus dem MySQL-Architekturdiagramm können wir erkennen, dass die MySQL-Architektur von oben nach unten grob in vier Teile unterteilt werden kann: Netzwerkverbindungsschicht, Datenbankdienstschicht, Speichermodulschicht und Systemdateischicht. Lassen Sie uns als Nächstes kurz über die Zusammensetzungsinformationen der einzelnen Teile sprechen. 2. Netzwerkverbindungsschicht Die Netzwerkverbindungsschicht befindet sich an der Spitze der gesamten MySQL-Architektur und dient hauptsächlich als Client-Anschluss. Es bietet die Möglichkeit, eine Verbindung mit dem MySQL-Server herzustellen und unterstützt fast alle gängigen serverseitigen Sprachen wie 3. Datenbank-ServiceschichtDie Datenbankdienstschicht ist der Kern des gesamten Datenbankservers und umfasst hauptsächlich Systemverwaltungs- und Steuerungstools, Verbindungspool, SQL-Schnittstelle, Parser, Abfrageoptimierer und Cache. 4. VerbindungspoolEs ist hauptsächlich für das Speichern und Verwalten der Verbindungsinformationen zwischen dem Client und der Datenbank verantwortlich. Ein Thread im Verbindungspool ist für das Verwalten der Verbindungsinformationen von einem Client zur Datenbank verantwortlich. 5. Systemverwaltungs- und SteuerungstoolsBietet Verwaltungs- und Steuerungsfunktionen für das Datenbanksystem, z. B. Sichern und Wiederherstellen von Daten in der Datenbank, Gewährleistung der Sicherheit der gesamten Datenbank, Bereitstellung des Sicherheitsmanagements, Koordinieren und Verwalten des gesamten Datenbankclusters usw. 6. SQL-SchnittstelleEs ist hauptsächlich dafür verantwortlich, verschiedene vom Client gesendete SQL-Befehle zu empfangen, die SQL-Befehle an andere Teile zu senden, die von anderen Teilen zurückgegebenen Ergebnisdaten zu empfangen und die Ergebnisdaten an den Client zurückzugeben. 7. AnalysebaumEs ist hauptsächlich dafür verantwortlich, das angeforderte SQL in einen „Analysebaum“ zu analysieren und den „Analysebaum“ dann gemäß einigen MySQL-Regeln grammatikalisch zu überprüfen, um zu bestätigen, ob er zulässig ist. Abfrage-OptimiererWenn in MySQL der „Analysebaum“ die Syntaxprüfung des Parsers besteht, wird er vom Optimierer in einen Ausführungsplan konvertiert und interagiert dann mit der Speicher-Engine und über die Speicher-Engine mit den zugrunde liegenden Datendateien. 9. CacheDer Cache von MySQL besteht aus einer Reihe kleiner Caches. Zum Beispiel: MySQL-Tabellen-Cache, Datensatz-Cache, Berechtigungscache in MySQL, Engine-Cache usw. Der Cache in MySQL kann die Leistung von Datenabfragen verbessern. Wenn das Abfrageergebnis den Cache erreichen kann, gibt MySQL die Ergebnisinformationen direkt im Cache zurück. 10. Speicher-Engine-SchichtDie Speicher-Engine-Schicht in MySQL ist hauptsächlich für das Schreiben und Lesen von Daten und die Interaktion mit den zugrunde liegenden Dateien verantwortlich. Es ist erwähnenswert, dass die Speicher-Engine in MySQL Plug-in-basiert ist. Die Abfrageausführungs-Engine im Server kommuniziert über entsprechende Schnittstellen mit der Speicher-Engine. Gleichzeitig schirmt die Schnittstelle die Unterschiede zwischen verschiedenen Speicher-Engines ab. In MySQL sind InnoDB und MyISAM die am häufigsten verwendeten Speicher-Engines. Für Studenten ist es wichtig, die Speicher-Engines InnoDB und MyISAM zu beherrschen. Sie werden häufig in Vorstellungsgesprächen getestet und sind auch das, was Sie wissen müssen, um Architekt zu werden . 11. SystemdateiebeneDie Systemdateiebene umfasst hauptsächlich die zugrunde liegenden Dateien, die Daten in MySQL speichern, interagiert mit der Speicher-Engine der oberen Ebene und ist die physische Speicherebene der Dateien. Zu den gespeicherten Dateien gehören hauptsächlich: Protokolldateien, Datendateien, Konfigurationsdateien, MySQL-PID-Dateien und Socket-Dateien usw. 12. LogdateienDie Protokolle in MySQL umfassen hauptsächlich: Fehlerprotokoll, allgemeines Abfrageprotokoll, Binärprotokoll, Protokoll für langsame Abfragen usw. 1. FehlerprotokollEs speichert hauptsächlich Fehlerinformationen, die während des Betriebs von MySQL generiert werden. Mit der folgenden SQL-Anweisung können Sie das Fehlerprotokoll in MySQL anzeigen. Variablen wie „%log_error%“ anzeigen; 2. Allgemeines AbfrageprotokollEs zeichnet hauptsächlich allgemeine Abfrageinformationen während des MySQL-Vorgangs auf. Mit der folgenden SQL-Anweisung können Sie die allgemeine Abfrageprotokolldatei in MySQL anzeigen. Variablen wie „%general%“ anzeigen; 3. BinärprotokollEs zeichnet hauptsächlich die in der MySQL-Datenbank ausgeführten Einfüge-, Änderungs- und Löschvorgänge auf und zeichnet auch die Ausführungszeit und Ausführungsdauer der SQL-Anweisung auf. Das Binärprotokoll zeichnet jedoch keine SQL-Anweisungen wie „Select“ und „Show“ auf, die die Datenbank nicht ändern. Wird hauptsächlich zum Wiederherstellen von Datenbankdaten und zum Implementieren der MySQL-Master-Slave-Replikation verwendet. Überprüfen Sie, ob die binäre Protokollierung aktiviert ist. Variablen wie „%log_bin%“ anzeigen; Binäre Protokollparameter anzeigen Variablen wie „%binlog%“ anzeigen Anzeigen von Protokolldateien Binärprotokolle anzeigen; 4. Langsames AbfrageprotokollLangsame Abfragen erfassen hauptsächlich SQL-Anweisungen, deren Ausführungszeit die angegebene Zeit überschreitet. Die Standardzeit beträgt 10 Sekunden. Überprüfen Sie, ob das Slow Query Log aktiviert ist Variablen wie „%slow_query%“ anzeigen; Anzeigen der Dauer langsamer Abfrageeinstellungen Variablen wie „%long_query_time%“ anzeigen 13. DatendateienDie Datendateien umfassen hauptsächlich: db.opt-Datei, frm-Datei, MYD-Datei, MYI-Datei, ibd-Datei, ibdata-Datei, ibdata1-Datei, ib_logfile0- und ib_logfile1-Dateien usw. 1.db.opt-DateiProtokolliert hauptsächlich Informationen wie den Zeichensatz und die Prüfregeln, die von der aktuellen Datenbank verwendet werden. 2. frm-DateiSpeichert die Strukturinformationen der Datentabelle, hauptsächlich die Metadateninformationen zur Datentabelle, einschließlich der Tabellenstrukturdefinitionsinformationen der Datentabelle. Jede Tabelle verfügt über eine FRM-Datei. Es ist erwähnenswert, dass die Tabelle der InnoDB-Speicher-Engine in der MySQL 8-Version keine FRM-Datei hat. (Ich werde später einige Artikel über die neuen Funktionen von MySQL 8 schreiben, von der Verwendung bis zu den zugrunde liegenden Prinzipien und wie sie sich von MySQL 5 unterscheiden). 3. MYD-DateiEin Dateiformat, das der MyISAM-Speicher-Engine gewidmet ist. Es speichert hauptsächlich Daten in der Datentabelle der MyISAM-Speicher-Engine. Jede Tabelle der MyISAM-Speicher-Engine entspricht einer .MYD-Datei. 4. MYI-DateiEin Dateiformat speziell für die MyISAM-Speicher-Engine, das hauptsächlich Indexinformationen speichert, die sich auf die Datentabelle der MyISAM-Speicher-Engine beziehen. Jede Tabelle der MyISAM-Speicher-Engine entspricht einer .MYI-Datei. 5.ibd-DateiSpeichert die Datendateien und Indexdateien der Innodb-Speicher-Engine. Es speichert hauptsächlich die Daten und Indizes des exklusiven Tablespace. Jede Tabelle entspricht einer .ibd-Datei. 6. ibdata-DateiSpeichert Datendateien und Indexdateien der Innodb-Speicher-Engine. Es speichert hauptsächlich Daten und Indizes von gemeinsam genutzten Tablespaces. Alle Tabellen teilen sich eine (oder mehrere) .ibdata-Dateien. Die Anzahl der gemeinsam genutzten .ibdata-Dateien kann je nach Konfiguration angegeben werden. 7. ibdata1-DateiIn den Datendateien des MySQL-Systemtablespace werden hauptsächlich Metadaten der MySQL-Datentabelle, Undo-Protokolle und andere Informationen gespeichert. 8. ib_logfile0- und ib_logfile1-DateienRedo-Log-Dateien in der MySQL-Datenbank werden hauptsächlich verwendet, um die Transaktionspersistenz in MySQL zu implementieren. Wenn MySQL zu einem bestimmten Zeitpunkt ausfällt und fehlerhafte Seiten vorhanden sind, die nicht in die IBD-Datei der Datenbank geschrieben wurden, wiederholt MySQL beim Neustart von MySQL die Daten basierend auf den Redo-Log-Informationen und macht die Daten persistent, die in das Redo-Log geschrieben, aber noch nicht in die Datentabelle geschrieben wurden. 14. KonfigurationsdateiWird zum Speichern aller MySQL-Konfigurationsinformationen verwendet. In Unix/Linux-Umgebungen ist dies die Datei my.cnf und in Windows-Umgebungen die Datei my.ini. 1.pid-DateiDie PID-Datei ist eine Datei, die die Prozess-ID des MySQL-Prozesses während der Ausführung speichert. Sie existiert hauptsächlich in der Unix/Linux-Umgebung. Das spezifische Speicherverzeichnis kann in der Datei my.cnf oder my.ini konfiguriert werden. 2. Socket-Datei Die Socket-Datei ist wie die PID-Datei eine Datei, die nur existiert, wenn MySQL in einer Unix/Linux-Umgebung ausgeführt wird. In Unix/Linux-Umgebungen können Clients über Sockets direkt eine Verbindung zu MySQL herstellen. Dies ist das Ende dieses Artikels über die Details der MySQL-Architektur. Weitere relevante Inhalte zur MySQL-Architektur finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Spezifischer Einsatz von Routing Guards in Vue
>>: Eine kurze Diskussion über die Verwendung und Analyse von Nofollow-Tags
1. Hintergrund Vor kurzem stießen einige Freunde ...
Was ist ein Styleguide? Einfach ausgedrückt handel...
Wie lädt man das JAR-Paket in ein privates Lager ...
Derzeit unterstützen die meisten CPUs Gleitkommae...
Überblick Heute werde ich hauptsächlich erklären,...
Inhaltsverzeichnis Was ist ein Index Der Untersch...
Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...
Vor einigen Tagen habe ich einen Artikel über die...
Wir sehen oft einen coolen Effekt, wenn die Maus ...
Als technischer Neuling zeichne ich den Vorgang d...
Inhaltsverzeichnis Anforderungen aus der Projektp...
In diesem Artikel wird der spezifische Code zur I...
In diesem Artikelbeispiel wird der spezifische Co...
Die Wirkung ist wie folgt: analysieren 1. Hier se...
1. Einleitung Container nutzen einen Sandbox-Mech...