Technologieaustausch

[Interviewfragen] MySQL (Teil 4)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Lassen Sie uns ausführlich über die Schritte zum Ausführen einer MySQL-Anweisung sprechen.

Die Schritte für die Serverschicht zum Ausführen von SQL nacheinander sind:

Clientanforderung -> Connector (Benutzeridentität überprüfen und Berechtigungen erteilen) Abfragecache (direkt zurückgeben, wenn Cache vorhanden ist, nachfolgende Vorgänge ausführen, wenn nicht) Analysator (lexikalische Analyse und Syntaxanalyse von SQL durchführen) Optimierer (hauptsächlich Ausführung der SQL-Optimierungsmethode zur Auswahl ausführen). optimaler Ausführungsplan) Executor (bei der Ausführung prüft er zunächst, ob der Benutzer über Ausführungsberechtigungen verfügt, und verwendet dann die von dieser Engine bereitgestellte Schnittstelle) -> Gehen Sie zur Engine-Ebene, um die Datenrückgabe zu erhalten (wenn der Abfrage-Cache aktiviert ist, es werden Abfrageergebnisse zwischengespeichert)

2.Pufferpool

Der Pufferpool ist ein wichtiger Bestandteil der InnoDB-Speicher-Engine in der MySQL-Datenbank. Er wird hauptsächlich zum Zwischenspeichern von Tabellendaten und Indexdaten verwendet, um Festplatten-E/A-Vorgänge zu reduzieren und die Effizienz der Datenbankverarbeitung zu verbessern. Das Folgende ist eine detaillierte Analyse des Pufferpools:

1. Grundkonzepte

  • Definition: Pufferpool ist ein Speicherbereich in der InnoDB-Speicher-Engine, der zum Zwischenspeichern von Datenseiten und Indexseiten auf der Festplatte verwendet wird, um den direkten Zugriff auf die Festplatte zu reduzieren.

  • Wirkung: Verbessern Sie die Datenzugriffsgeschwindigkeit und reduzieren Sie die Festplatten-E/A-Kosten durch Caching-Mechanismus.

  • Komposition : Der Pufferpool besteht aus zwischengespeicherten Datenseiten (Seite) und entsprechenden Steuerblöcken. Der Steuerblock speichert die Metadateninformationen der Cache-Seite, z. B. den Tabellenbereich, zu dem sie gehört, die Datenseitennummer, die Adresse der Cache-Seite im Pufferpool usw.

2. Größe und Konfiguration

  • Standard Größe: Die Standardgröße des Pufferpools in MySQL beträgt normalerweise 128 MB (beachten Sie jedoch, dass unterschiedliche Versionen von MySQL oder unterschiedliche Konfigurationen dazu führen können, dass die Standardgröße unterschiedlich ist).

  • Konfigurationsparameter:passiereninnodb_buffer_pool_sizeParameter können die Größe des Pufferpools konfigurieren. Es wird normalerweise empfohlen, ihn auf 60 % bis 80 % des Systemspeichers festzulegen.

  • Speicherzuweisung: Pufferpool ist ein kontinuierlicher Speicherplatz. Wenn MySQL über einen bestimmten Zeitraum ausgeführt wird, gibt es in diesem Speicherplatz sowohl freie als auch verwendete Cache-Seiten.

3. Datenseitentypen und -verwaltung

  • Typ

    : Datenseiten im Pufferpool können je nach Status in drei Typen unterteilt werden: Freie Seite, Saubere Seite und Schmutzige Seite.

    • Freie Seiten: Cache-Seiten, die nicht verwendet werden.

    • Bereinigte Seite: Eine Cache-Seite, die verwendet wurde, deren Daten jedoch nicht geändert wurden.

    • Schmutzige Seite: Eine Cache-Seite, die verwendet wurde und deren Daten geändert wurden und deren Daten nicht mit den Daten auf der Festplatte übereinstimmen.

  • verwalten

    : InnoDB verwaltet diese Cache-Seiten über drei verknüpfte Listenstrukturen:

    • Kostenlose verknüpfte Liste: Verwaltet freie Seiten und zeichnet die Steuerblockinformationen freier Cache-Seiten auf.

    • LRU-verknüpfte Liste: Verwaltet saubere und schmutzige Seiten, verwendet einen verbesserten LRU-Algorithmus und ist in junge Bereiche und alte Bereiche unterteilt, um die Cache-Trefferquote zu optimieren.

    • Verknüpfte Liste leeren: Verwaltet fehlerhafte Seiten, die auf die Festplatte geleert werden müssen, sortiert nach Änderungszeit.

4. Arbeitsmechanismus

  • Datenzugriff : Wenn auf eine Datenseite zugegriffen werden muss, prüft InnoDB zunächst, ob sich die Seite bereits im Pufferpool befindet. Wenn sie bereits vorhanden ist, wird die Seite direkt verwendet. Wenn sie nicht vorhanden ist, wird die Seite von der Festplatte in den Pufferpool gelesen und die entsprechende verknüpfte Liste aktualisiert.

  • Datenaktualisierung: Wenn eine Datenseite geändert wird, wird die Seite als schmutzige Seite markiert und möglicherweise zur verknüpften Flush-Liste hinzugefügt, um darauf zu warten, dass der Hintergrundthread sie auf die Festplatte leert.

  • Cache-Räumung: Wenn der Pufferpool nicht ausreicht, wird die zuletzt verwendete Cache-Seite gemäß dem LRU-Algorithmus entfernt.

5. Optimierung und Vorsichtsmaßnahmen

  • Stellen Sie die Größe entsprechend ein: Angemessene Einstellungen basierend auf den Systemspeicher- und Datenbankauslastungsbedingungeninnodb_buffer_pool_sizeParameter.

  • Überwachen und anpassen: Überwachen Sie regelmäßig die Nutzungs- und Leistungsindikatoren des Pufferpools und nehmen Sie bei Bedarf Anpassungen vor.

  • Vermeiden Sie einen vollständigen Tabellenscan: Durch einen vollständigen Tabellenscan wird eine große Anzahl von Datenseiten in den Pufferpool geladen, wodurch die Cache-Trefferquote verringert wird.

Zusammenfassend lässt sich sagen, dass der Pufferpool eine der Schlüsselkomponenten der InnoDB-Speicher-Engine in der MySQL-Datenbank ist. Durch angemessene Konfiguration und Verwaltung können die Leistung und Effizienz der Datenbank erheblich verbessert werden.

3.MySQL-Prozess

Der MySQL-Prozess umfasst mehrere Verknüpfungen, angefangen bei der Verbindung zwischen dem Client und dem MySQL-Server bis hin zur Ausführung, Optimierung, dem Lesen von Daten und der Rückgabe von Ergebnissen von SQL-Anweisungen. Im Folgenden finden Sie eine detaillierte Übersicht über den MySQL-Prozess:

1. Verbindung und Authentifizierung

  1. Connector (Verbindungsmanager):

    • Wenn ein Client (z. B. eine Anwendung oder ein Befehlszeilentool) eine Verbindung zu einem MySQL-Server anfordert, ist der MySQL-Connector für die Verarbeitung dieser Verbindungsanforderungen verantwortlich.

    • Der Connector überprüft die Identität und Berechtigungen des Clients. Dazu gehört in der Regel auch die Überprüfung, ob Benutzername und Passwort übereinstimmen.

    • Wenn die Überprüfung erfolgreich ist, weist der Connector dem Client einen Thread (oder eine Sitzung) für nachfolgende SQL-Vorgänge zu.

2. Abfrageverarbeitung

  1. Abfrage-Cache (Abfrage-Cache, Hinweis: Dieses Modul wurde in MySQL 8.0 entfernt):

    • Bei SELECT-Abfragen prüft MySQL zunächst, ob dieselbe Abfrage und ihre Ergebnisse im Abfragecache vorhanden sind.

    • Sofern vorhanden, gibt MySQL die Ergebnisse direkt im Cache zurück und vermeidet so die Durchführung der eigentlichen Abfrageoperation.

    • Da das Abfrage-Caching jedoch zu Dateninkonsistenzen führen kann (z. B. wurden zwischengespeicherte Daten möglicherweise durch andere Transaktionen geändert), wurde die Abfrage-Caching-Funktion in MySQL 8.0 entfernt.

  2. Parser:

    • Die vom Client gesendete SQL-Anweisung wird zunächst an den Parser gesendet.

    • Die Aufgabe des Parsers besteht darin, die SQL-Anweisung zu parsen, zu prüfen, ob ihre Syntax korrekt ist, und sie in eine interne Datenstruktur (z. B. einen Parse-Baum oder einen Syntaxbaum) umzuwandeln.

    • Wenn in der SQL-Anweisung ein Syntaxfehler vorliegt, gibt der Parser Fehlerinformationen an den Client zurück.

  3. Präprozessor:

    • In einigen MySQL-Versionen oder in bestimmten Szenarios kann es eine Präprozessorstufe geben.

    • Der Präprozessor ist hauptsächlich für die weitere Verarbeitung von SQL-Anweisungen verantwortlich, z. B. für die Prüfung, ob die Tabelle oder das Feld vorhanden ist, für die Erweiterung von * in der SELECT-Anweisung auf alle Spalten in der Tabelle usw.

  4. Optimierer:

    • Der Optimierer ist dafür verantwortlich, verschiedene Ausführungspläne für SQL-Anweisungen zu bewerten und den optimalen Ausführungsplan auszuwählen.

    • Der Optimierer berücksichtigt eine Vielzahl von Faktoren, wie zum Beispiel verfügbare Indizes, die Effizienz der Join-Methode, die Kosten der Abfrage usw.

    • Der Optimierer kann die Abfrageleistung durch Vorgänge wie die Verwendung von Indizes, die Neuordnung von Abfragen oder das Zusammenführen von Abfragen erheblich verbessern.

  5. Testamentsvollstrecker:

    • Der Executor führt die eigentlichen Abfrageoperationen basierend auf dem vom Optimierer generierten Ausführungsplan aus.

    • Der Executor ruft die Schnittstelle der Speicher-Engine (z. B. InnoDB) auf, um die Daten in der Datentabelle zu lesen und Vorgänge wie Sortieren, Aggregation und Filtern auszuführen.

    • Schließlich gibt der Ausführende die Abfrageergebnisse an den Client zurück.

3. Datenspeicherung und -abruf

  • Speicher-Engine:

    • MySQL unterstützt mehrere Speicher-Engines, und jede Speicher-Engine verfügt über ihre eigenen spezifischen Methoden zum Speichern und Abrufen von Daten.

    • InnoDB ist eine der Standardspeicher-Engines von MySQL und unterstützt erweiterte Datenbankfunktionen wie Transaktionsverarbeitung, Sperren auf Zeilenebene und Fremdschlüssel.

    • Wenn der Executor die Schnittstelle der Speicher-Engine aufruft, ist die Speicher-Engine dafür verantwortlich, Daten von der Festplatte zu lesen oder Daten auf die Festplatte zu schreiben.

  • Pufferpool:

    • Die InnoDB-Speicher-Engine verwendet den Pufferpool zum Zwischenspeichern von Tabellen- und Indexdaten, um den direkten Zugriff auf die Festplatte zu reduzieren.

    • Datenseiten im Pufferpool werden basierend auf der Zugriffshäufigkeit und dem Änderungsstatus verwaltet, um die Cache-Trefferquote und die Abfrageleistung zu verbessern.

4. Transaktionsabwicklung

  • Transaktion:

    • MySQL unterstützt die Transaktionsverarbeitung, sodass mehrere Vorgänge als Ganzes festgeschrieben oder zurückgesetzt werden können.

    • Während der Transaktionsausführung zeichnet MySQL die erforderlichen Protokollinformationen (z. B. Redo-Log und Undo-Log) auf, um die Datenintegrität und -konsistenz sicherzustellen.

    • Wenn die Transaktionsausführung erfolgreich ist, werden alle Änderungen dauerhaft in der Datenbank gespeichert. Wenn die Transaktionsausführung fehlschlägt, können Sie mithilfe des Undo-Protokolls einen Rollback-Vorgang durchführen und die Daten auf den Zustand vor Beginn der Transaktion wiederherstellen.

5. Zusammenfassung

Der Prozess von MySQL umfasst Verbindung und Authentifizierung, Abfrageverarbeitung, Datenspeicherung und -abruf sowie Transaktionsverarbeitung. Durch die Optimierung jedes Schritts in diesen Links können die Leistung und Zuverlässigkeit der MySQL-Datenbank erheblich verbessert werden. Gleichzeitig wird das Verständnis des Ausführungsprozesses von MySQL auch dazu beitragen, den internen Arbeitsmechanismus besser zu verstehen und dadurch die Datenbank besser zu entwerfen und zu optimieren.

4.MySQL-Verbindungspool

Der Verbindungspool von MySQL ist eine Technologie zur Verwaltung und Wiederverwendung von Datenbankverbindungen. Er soll die Leistung und Effizienz von Datenbankvorgängen verbessern, insbesondere in Umgebungen mit hoher Parallelität. Im Folgenden finden Sie eine detaillierte Erläuterung des MySQL-Verbindungspools:

1. Konzept

Der MySQL-Verbindungspool stellt beim Programmstart eine ausreichende Anzahl von Datenbankverbindungen her und verwaltet diese Verbindungen einheitlich, um einen Verbindungspool zu bilden. Wenn das Programm auf die Datenbank zugreifen muss, beantragt es dynamisch eine Verbindung aus dem Verbindungspool und gibt die Verbindung nach der Verwendung an den Verbindungspool zurück, anstatt die Verbindung für jeden Vorgang neu zu erstellen und zu schließen.

2. Warum Verbindungspooling verwenden?

  1. Reduzieren Sie den Ressourcenverbrauch : Das Erstellen und Schließen einer Datenbankverbindung ist ein relativ zeitaufwändiger Prozess, der den Drei-Wege-Handshake und die Vier-Wege-Welle der TCP-Verbindung sowie den Datenbankauthentifizierungsprozess umfasst. Durch Verbindungspooling können vorhandene Verbindungen wiederverwendet werden, um diesen Overhead zu reduzieren.

  2. Leistung verbessern : Wenn in einem Szenario mit hoher Parallelität für jede Anforderung eine neue Datenbankverbindung erstellt wird, sinkt die Leistung des Servers erheblich. Die Verwendung eines Verbindungspools kann die Antwortgeschwindigkeit und den Durchsatz der Datenbank erheblich verbessern.

  3. Vermeiden Sie Verbindungslecks : Wenn ohne Verwendung eines Verbindungspools beim Schließen der Verbindung durch das Programm eine Ausnahme auftritt, kann dies zu einem Verbindungsverlust führen, dh die Verbindung wird nicht ordnungsgemäß geschlossen und belegt Systemressourcen. Der Verbindungspool kann diese Situation durch den Timeout-Recycling-Mechanismus vermeiden.

3. Funktionsprinzip des Verbindungspools

  1. Initialisierung: Wenn das Programm gestartet wird, erstellt der Verbindungspool entsprechend der Konfiguration eine bestimmte Anzahl von Datenbankverbindungen und stellt diese Verbindungen zur Sicherung in den Verbindungspool.

  2. Anschluss beantragen : Wenn das Programm auf die Datenbank zugreifen muss, beantragt es eine Verbindung aus dem Verbindungspool. Wenn im Verbindungspool eine inaktive Verbindung vorhanden ist, wird diese direkt zur Verwendung an das Programm zurückgegeben. Wenn keine inaktive Verbindung vorhanden ist, wird entsprechend der Konfiguration eine bestimmte Zeit gewartet oder ein Fehler zurückgegeben.

  3. Verbindung nutzen: Das Programm verwendet die angeforderte Verbindung, um Datenbankoperationen durchzuführen.

  4. Rückverbindung : Nach Abschluss des Vorgangs gibt das Programm die Verbindung an den Verbindungspool zurück. Der Verbindungspool führt bestimmte Überprüfungen der Verbindung durch. Wenn die Verbindung noch gültig ist, wird sie wieder in den Verbindungspool aufgenommen. Wenn die Verbindung abgelaufen ist, wird sie geschlossen und aus dem Verbindungspool entfernt.

  5. Verbindungspool schließen: Bei Programmende werden alle Verbindungen im Verbindungspool geschlossen und die belegten Systemressourcen freigegeben.

4. Verbindungspoolanbieter

Es gibt viele Anbieter von MySQL-Verbindungspools auf dem Markt, darunter die beliebtesten:

  • DBCP : Es handelt sich um eine Open-Source-Verbindungspool-Implementierung im Rahmen des Apache-Projekts und um den Verbindungspool, der mit Tomcat geliefert wird. Es ist schneller als andere Verbindungspools, aber möglicherweise nicht stabil genug.

  • C3P0 : Es handelt sich um einen Open-Source-JDBC-Verbindungspool, der Datenquellen und JNDI-Bindungen implementiert und den JDBC3-Standard und die JDBC2-Standarderweiterung unterstützt. Die Rate von C3P0 ist relativ langsam, aber sehr stabil.

  • Druide (Druide): Es handelt sich um einen von Alibaba bereitgestellten Open-Source-Verbindungspool. Er kombiniert die Vorteile von DBCP und C3P0 und bietet leistungsstarke Überwachungs- und Erweiterungsfunktionen. Druid ist derzeit einer der am häufigsten verwendeten MySQL-Verbindungspools.

5. Konfiguration des Verbindungspools

Die Konfiguration des Verbindungspools umfasst normalerweise die folgenden Aspekte:

  • Maximale Anzahl an Verbindungen: Die maximale Anzahl von Verbindungen, die der Verbindungspool verwalten kann.

  • Mindestanzahl an Verbindungen: Die anfängliche Anzahl der Verbindungen, die beim Start des Verbindungspools erstellt wurden.

  • Verbindungs-Timeout abrufen: Die maximale Wartezeit beim Empfang einer Verbindung aus dem Verbindungspool.

  • Verbindungsüberprüfung: Überprüfen Sie die Gültigkeit der Verbindung, bevor Sie die Verbindung herstellen oder wenn Sie die Verbindung zurückgeben.

  • Verbindungsrecyclingstrategie: Verbindungen basierend auf ihrer Leerlaufzeit und Nutzungszeit wiederverwenden.

6. Die Beziehung zwischen Verbindungspool und Thread-Pool

Verbindungspooling und Thread-Pooling sind zwei verschiedene Ressourcenpooling-Technologien, es besteht jedoch eine gewisse Beziehung zwischen ihnen. Der Thread-Pool wird hauptsächlich zum Verwalten von Thread-Ressourcen verwendet, während der Verbindungspool zum Verwalten von Datenbankverbindungsressourcen verwendet wird. Wenn ein Thread im Thread-Pool eine Datenbankoperation ausführen muss, beantragt er eine Verbindung aus dem Verbindungspool. Nach Abschluss der Operation wird die Verbindung an den Verbindungspool zurückgegeben. Diese Beziehung trägt zu einer effizienten Ressourcennutzung und einer vereinfachten Verwaltung bei.

Zusammenfassend lässt sich sagen, dass der MySQL-Verbindungspool eine wichtige Technologie zur Datenbankverbindungsverwaltung ist. Er bietet starke Unterstützung für Datenbankvorgänge, indem er Verbindungen wiederverwendet, den Ressourcenverbrauch reduziert und die Leistung verbessert. In tatsächlichen Anwendungen können der entsprechende Verbindungspoolanbieter und die entsprechenden Konfigurationsparameter entsprechend den spezifischen Anforderungen und Szenarien des Projekts ausgewählt werden.

Interviewfragen im Zusammenhang mit MySQL-Protokollen können viele Aspekte abdecken, darunter Typ, Rolle, Konfiguration, Optimierung von Protokollen und die Anwendung von Protokollen bei der Datenwiederherstellung, Datenreplikation usw. Im Folgenden finden Sie einige häufig gestellte Interviewfragen im Zusammenhang mit MySQL-Protokollen und deren detaillierte Antworten:

5. Was sind die allgemeinen Protokolle in MySQL? Was ist ihre jeweilige Funktion?

Zu den gängigen Protokollen in MySQL gehören die folgenden:

  • Fehlerprotokoll : Zeichnen Sie Fehlerinformationen auf, wenn der MySQL-Server startet, läuft oder stoppt, sowie alle kritischen Fehlerinformationen. Dies hilft bei der Diagnose des Problems.

  • Abfrageprotokoll (Allgemeines Protokoll) : Zeichnen Sie alle vom MySQL-Server empfangenen Client-Anfragen und -Antworten auf, einschließlich Benutzeranmeldeaktivitäten, ausgeführten SQL-Anweisungen usw. Wird normalerweise zur Überwachung oder zum Debuggen verwendet.

  • Langsames Abfrageprotokoll : Zeichnen Sie die SQL-Anweisungen auf, deren Ausführungszeit den Schwellenwert überschreitet, sowie die Ausführungszeit, die aufgerufenen Tabellen, die verwendeten Indizes und andere Informationen dieser Anweisungen. Wird zur Leistungsoptimierung und Abfrageoptimierung verwendet.

  • Binärprotokoll (kurz Binlog): Zeichnet alle Anweisungen auf, die Datenbankdaten ändern (mit Ausnahme von Anweisungen wie SELECT und SHOW), die hauptsächlich für die Replikation und Datenwiederherstellung verwendet werden.

  • Redo-Log: In der InnoDB-Speicher-Engine wird es verwendet, um die Haltbarkeit von Transaktionen sicherzustellen. Selbst wenn ein Systemabsturz auftritt, können Daten durch Redo-Protokolle wiederhergestellt werden.

  • Protokoll rückgängig machen: In der InnoDB-Speicher-Engine wird es verwendet, um den Datenstatus vor Beginn der Transaktion aufzuzeichnen, sodass die Daten bei einem Fehler oder Rollback der Transaktion in den Zustand vor Beginn der Transaktion wiederhergestellt werden können.

  • Relaisprotokoll: In der MySQL-Replikationsarchitektur wird das Relay-Protokoll auf dem Slave-Server zum Speichern des vom Master-Server empfangenen binären Protokollinhalts verwendet.

6. Wie aktiviere und konfiguriere ich das Protokoll für langsame Abfragen?

Das langsame Abfrageprotokoll kann über die MySQL-Konfigurationsdatei (z. B. my.cnf oder my.ini) geöffnet und konfiguriert werden, oder es kann dynamisch über SQL-Befehle festgelegt werden.

  • Konfigurationsdateimethode:

    • Fügen Sie die folgenden Parameter in der MySQL-Konfigurationsdatei hinzu oder ändern Sie sie:

      [mysqld]  
      slow_query_log = 1  
      slow_query_log_file = /path/to/your/slow-query.log  
      long_query_time = 2

      In,

      slow_query_log

      Wird verwendet, um langsame Abfrageprotokolle zu aktivieren.

      slow_query_log_file

      Geben Sie den Pfad zur Protokolldatei für langsame Abfragen an.

      long_query_time

      Stellen Sie die Ausführungszeit von SQL-Anweisungen so ein, dass sie die Anzahl der Sekunden überschreitet, die im langsamen Abfrageprotokoll aufgezeichnet werden sollen.

    • Nachdem Sie die Konfigurationsdatei geändert haben, müssen Sie den MySQL-Dienst neu starten.

  • SQL-Befehlsmodus:

    • Das langsame Abfrageprotokoll kann jedoch dynamisch über SQL-Befehle aktiviert werdenslow_query_log_fileUndlong_query_timeMöglicherweise müssen Parameter über eine Konfigurationsdatei festgelegt werden, da dynamische Einstellungen möglicherweise nicht unterstützt werden oder nicht funktionieren.

    • Langsames Abfrageprotokoll aktivieren:

      sql复制代码
      ​
      SET GLOBAL slow_query_log = 'ON';
    • Beachten Sie, dass das mithilfe von SQL-Befehlen dynamisch geöffnete langsame Abfrageprotokoll nach dem Neustart des Systems möglicherweise ungültig wird. Daher wird empfohlen, es über die Konfigurationsdatei festzulegen.

7. Wie viele Formate gibt es für Binärprotokolle (Binlog)? Was ist der Unterschied zwischen ihnen?

Binärprotokolle (Binlog) haben drei Formate:

  • STELLUNGNAHME : SQL-Anweisungsbasierte Replikation (Anweisungsbasierte Replikation, SBR). In diesem Format zeichnet MySQL die ausgeführten SQL-Anweisungen im Binlog auf. Der Vorteil besteht darin, dass das Protokollvolumen gering ist, es jedoch zu Replikationsproblemen wie Funktionen, Triggern, gespeicherten Prozeduren usw. kommen kann, die zu Inkonsistenzen in den Master-Slave-Daten führen können.

  • REIHE : Zeilenbasierte Replikation (RBR). In diesem Format zeichnet MySQL die Datenänderungen der geänderten Zeilen auf. Dies hat den Vorteil, dass einige Replikationsprobleme vermieden werden, das Protokollvolumen kann jedoch groß sein.

  • GEMISCHT : Gemischte Replikation (MBR). MySQL wählt je nach Situation automatisch die Verwendung des STATEMENT- oder ROW-Formats. Der gemischte Modus ist der Standardmodus und soll das Beste aus beiden Welten kombinieren.

8. Wie stellt Redo Log die Haltbarkeit von Transaktionen sicher?

Redo Log stellt die Haltbarkeit von Transaktionen in der InnoDB-Speicher-Engine auf folgende Weise sicher:

  • Wenn eine Transaktion übermittelt wird, speichert die InnoDB-Engine zunächst das Redo-Protokoll der Transaktion im Redo-Log-Puffer im Speicher zwischen und aktualisiert gleichzeitig die entsprechende Datenseite im Speicher.

  • Schreiben Sie dann zu gegebener Zeit das Redo-Log im Redo-Log-Puffer in die Redo-Log-Datei auf der Festplatte. Dieser Prozess ist asynchron, aber der Zeitpunkt und die Häufigkeit des Disk-Bürstens können durch die Konfiguration von Parametern gesteuert werden.

  • Wenn es zu einem Systemabsturz kommt, überprüft die InnoDB-Engine beim Start die Redo-Log-Datei und stellt die von der zuletzt übermittelten Transaktion vorgenommenen Änderungen basierend auf den darin enthaltenen Datensätzen wieder her, um so die Datenbeständigkeit sicherzustellen.

9. Beschreiben Sie kurz, wie Sie Protokolldateien in MySQL anzeigen und löschen.

Protokolldateien anzeigen

  • Fehlerprotokoll: Dies kann normalerweise durch einen Blick auf die MySQL-Konfigurationsdatei erfolgenlog_errorParameter, um den Dateipfad anzugeben, um die Fehlerprotokolldatei zu finden und einen Texteditor oder ein Befehlszeilentool wie z. B. zu verwendentailcatusw.), um den Inhalt anzuzeigen.