Häufig gestellte Fragen zu Vorstellungsgesprächen in der MySQL-Datenbank

1. Was ist der Unterschied zwischen NOW() und CURRENT_DATE()?
Der Befehl NOW() wird verwendet, um das aktuelle Jahr, den Monat, das Datum, die Stunde, die Minute und die Sekunde anzuzeigen.
CURRENT_DATE() zeigt nur das aktuelle Jahr, den aktuellen Monat und den aktuellen Tag an.

2. Was ist der Unterschied zwischen CHAR und VARCHAR?
(1) Die Typen CHAR und VARCHAR unterscheiden sich beim Speichern und Abrufen.
(2) Die Länge der CHAR-Spalte ist auf die beim Erstellen der Tabelle angegebene Länge festgelegt, und der Längenwertbereich liegt zwischen 1 und 255.
(3) Bei CHAR-Werten ​werden gespeichert, sie werden verwendet. Leerzeichen werden auf eine bestimmte Länge aufgefüllt und nachgestellte Leerzeichen müssen beim Abrufen von CHAR-Werten entfernt werden.

3. Der Unterschied zwischen dem Primärschlüsselindex und dem eindeutigen Index
(1) Der Primärschlüssel ist eine Einschränkung und der eindeutige Index ist ein Index, und die beiden sind im Wesentlichen unterschiedlich.
(2) Nachdem der Primärschlüssel erstellt wurde, muss er einen eindeutigen Index enthalten, und der eindeutige Index ist nicht unbedingt der Primärschlüssel.
(3) Eindeutige Indexspalten erlauben Nullwerte, während Primärschlüsselspalten keine Nullwerte zulassen.
(4) Beim Erstellen der Primärschlüsselspalte wird standardmäßig ein nicht leerer eindeutiger Index verwendet.
(5) Eine Tabelle kann höchstens einen Primärschlüssel erstellen, es können jedoch mehrere eindeutige Indizes erstellt werden.
(6) Der Primärschlüssel eignet sich besser für eindeutige Bezeichner, die nicht einfach zu ändern sind, z. B. automatisch inkrementierte Spalten, ID-Nummern usw.
(7) Der Primärschlüssel kann von anderen Tabellen als Fremdschlüssel referenziert werden, der eindeutige Index jedoch nicht.

4. Welche verschiedenen Speicher-Engines gibt es in MySQL?
Es gibt 5 Arten von Speicher-Engines:
MyISAM, Heap, Merge, NNODB, ISAM

5. Was ist der Lebenszyklus von SQL?
(1) Der Anwendungsserver stellt eine Verbindung mit dem Datenbankserver her.
(2) Der Datenbankprozess erhält die Anforderungs-SQL.
(3) Analysiert und generiert einen Ausführungsplan, führt ihn aus.
(4) Liest Daten in den Speicher und führt eine logische Verarbeitung durch.
(5) Stellt eine Verbindung her Schritt 1: Senden Sie das Ergebnis an den Client
(6), schließen Sie die Verbindung und geben Sie Ressourcen frei

6. Wie sehen Sie alle für die Tabelle definierten Indizes? Der Index wird mit show index from
abgefragt ;

7. Warum verwendet die Datenbank den B+-Baum anstelle des B-Baums?
(1) Der B-Baum eignet sich nur für den zufälligen Abruf, während der B+-Baum sowohl den zufälligen Abruf als auch den sequentiellen Abruf unterstützt.
(2) Der B+-Baum hat eine höhere Speicherplatzauslastung und kann reduziert werden die Anzahl der E/A. Lese- und Schreibvorgänge auf der Festplatte sind günstiger. Im Allgemeinen ist auch der Index selbst sehr groß und es ist unmöglich, ihn vollständig im Speicher zu speichern. Daher wird der Index häufig in Form einer Indexdatei auf der Festplatte gespeichert. In diesem Fall wird während des Indexsuchvorgangs ein Festplatten-E/A-Verbrauch generiert. Der interne Knoten des B + -Baums zeigt nicht auf die spezifischen Informationen des Schlüsselworts, sondern wird als Index verwendet. Der interne Knoten ist kleiner als der B-Baum und die Anzahl der Schlüsselwörter im Knoten, die der Plattenblock aufnehmen kann ist mehr und wird gleichzeitig in den Speicher eingelesen. Es gibt mehr Schlüsselwörter, die durchsucht werden können, und dementsprechend wird die Anzahl der E/A-Lese- und Schreibvorgänge reduziert. Die Anzahl der E/A-Lese- und Schreibvorgänge ist der größte Faktor, der die Effizienz des Indexabrufs beeinflusst.
(3) Die Abfrageeffizienz des B+-Baums ist stabiler. Die B-Tree-Suche kann an einem Nicht-Blattknoten enden. Je näher der Datensatz am Wurzelknoten liegt, desto kürzer ist die Suchzeit. Solange das Schlüsselwort gefunden wird, kann die Existenz des Datensatzes bestimmt werden. Seine Leistung ist entspricht einer binären Suche im gesamten Schlüsselwortsatz. Im B+-Baum ist der sequentielle Abruf offensichtlicher. Beim zufälligen Abruf muss jede Schlüsselwortsuche einen Pfad vom Wurzelknoten zum Blattknoten nehmen. Die Suchpfadlänge aller Schlüsselwörter ist gleich, was zur Abfrageeffizienz jedes Schlüsselworts führt . ziemlich.
(4) B-Tree verbessert die Festplatten-E/A-Leistung und löst nicht das Problem der geringen Effizienz der Elementdurchquerung. Die Blattknoten des B+-Baums werden nacheinander mithilfe von Zeigern verbunden, und der gesamte Baum kann durchlaufen werden, solange die Blattknoten durchlaufen werden. Darüber hinaus kommen bereichsbasierte Abfragen in der Datenbank sehr häufig vor und B-Bäume unterstützen solche Operationen nicht.
(5) Beim Hinzufügen und Löschen von Dateien (Knoten) ist die Effizienz höher. Da die Blattknoten des B+-Baums alle Schlüsselwörter enthalten und in einer geordneten verknüpften Listenstruktur gespeichert sind, kann dies die Effizienz des Hinzufügens und Löschens verbessern.

8. Was sind die drei Hauptparadigmen der Datenbank?
Das erste Paradigma:
Jede Spalte kann nicht geteilt werden.
Zweite Normalform:
Auf Basis der ersten Normalform sind Nicht-Primärschlüsselspalten vollständig vom Primärschlüssel abhängig, können aber nicht Teil des Primärschlüssels sein.
Die dritte Normalform:
Basierend auf der zweiten Normalform hängen Nicht-Primärschlüsselspalten nur vom Primärschlüssel und nicht von anderen Nicht-Primärschlüsseln ab.
Versuchen Sie beim Entwerfen der Datenbankstruktur, die drei Paradigmen einzuhalten. Wenn Sie sich nicht daran halten, müssen ausreichende Gründe vorliegen. Zum Beispiel Leistung. Tatsächlich gehen wir beim Datenbankdesign häufig Kompromisse hinsichtlich der Leistung ein.

9. Wie optimiere ich die SQL-Abfrageanweisung?
(1) Um die Abfrage zu optimieren, sollten Sie versuchen, das vollständige Scannen der Tabelle zu vermeiden. Zunächst sollten Sie erwägen, Indizes für die beteiligten Spalten in „Where“ und „Ordnung nach“ zu erstellen.
(2) Vermeiden Sie die Verwendung von * in der SELECT-Klausel und versuchen Sie, SQL so groß wie möglich zu schreiben.
(3) Versuchen Sie zu vermeiden, in der Where-Klausel zu beurteilen, dass das Feld einen Nullwert hat, da sonst die Engine die Verwendung des Index und des Scans aufgibt Verwenden Sie für die gesamte Tabelle IS NOT NULL
(4). Die Verwendung von oder in der Where-Klausel zum Verbinden der Bedingungen führt auch dazu, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt
(5). In und Not In sollten ebenfalls verwendet werden Vorsicht, sonst wird ein vollständiger Tabellenscan durchgeführt

10. Haben Sie den Index, die Rückgabetabelle usw. abgedeckt?
Abdeckender Index:
Die Abfragespalte muss vom erstellten Index abgedeckt werden, ohne aus der Datentabelle zu lesen. Mit anderen Worten, die Abfragespalte muss vom verwendeten Index abgedeckt werden.
Zurück zur Tabelle:
Der Sekundärindex kann die Daten aller Spalten nicht direkt abfragen. Nach der Abfrage des Clustered-Index über den Sekundärindex und der anschließenden Abfrage der gewünschten Daten wird dieser Abfragevorgang über den Sekundärindex zur Tabelle zurückgerufen.

11. Was soll ich tun, wenn die CPU der MySQL-Datenbank in die Höhe schnellt?
Fehlerbehebungsprozess:
(1) Verwenden Sie den Befehl top, um festzustellen, ob die Ursache auf MySQLd oder aus anderen Gründen zurückzuführen ist.
(2) Wenn es durch MySQLd verursacht wird, zeigen Sie die Prozessliste an, überprüfen Sie den Sitzungsstatus und stellen Sie fest, ob ressourcenintensives SQL ausgeführt wird.
(3) Ermitteln Sie die SQL mit hohem Verbrauch und prüfen Sie, ob der Ausführungsplan korrekt ist, ob der Index fehlt und ob das Datenvolumen zu groß ist.
Behandlung:
(1) Beenden Sie diese Threads (und beobachten Sie, ob die CPU-Nutzungsrate sinkt),
(2) Nehmen Sie entsprechende Anpassungen vor (z. B. Hinzufügen von Indizes, Ändern von SQL und Ändern von Speicherparametern)
(3) Führen Sie diese SQLs erneut aus.
Andere Situationen:
Es ist auch möglich, dass jedes SQL nicht viele Ressourcen verbraucht, aber plötzlich eine große Anzahl von Sitzungen eintrifft und die CPU in die Höhe schnellen lässt. In diesem Fall muss analysiert werden, warum die Anzahl der Verbindungen zunimmt Steigen Sie mit der Anwendung und nehmen Sie dann entsprechende Anpassungen vor, z. B. die Begrenzung der Anzahl der Verbindungen usw.

12. Welche Methoden gibt es zur Optimierung von SQL-Anweisungen? (Wählen Sie einige aus)
(1) In der Where-Klausel: Die Verbindung zwischen Where-Tabellen, die vor anderen Where-Bedingungen geschrieben werden müssen, und den Bedingungen, die die maximale Anzahl von Datensätzen herausfiltern können, muss am Ende der Where-Klausel geschrieben werden. HAVING ist der letzte.
(2) Ersetzen Sie IN durch EXISTS und NOT IN durch NOT EXISTS.
(3) Vermeiden Sie die Verwendung von Berechnungen für Indexspalten
(4) Vermeiden Sie die Verwendung von IS NULL und IS NOT NULL für Indexspalten
(5) Um Abfragen zu optimieren, versuchen Sie, vollständige Tabellenscans zu vermeiden. Überlegen Sie zunächst, wo und sortieren Sie nach. Erstellen Sie einen Index für Spalte.
(6) Versuchen Sie zu vermeiden, den Nullwert des Felds in der Where-Klausel zu beurteilen, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt. (7) Versuchen Sie zu vermeiden,
Ausdrucksoperationen für das Feld in der Where-Klausel auszuführen. Dies führt dazu, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt

13. Innodbs Transaktions- und Protokollimplementierungsmethoden
Innodb verfügt über zwei Arten von Protokollen: Wiederherstellen und Rückgängigmachen.
Protokollspeicherform:
Redo: Wenn eine Seite geändert wird, wird sie zuerst in den Redo-Log-Puffer geschrieben, dann in den Dateisystem-Cache des Redo-Logs (fwrite) geschrieben und dann mit der Festplattendatei synchronisiert (fsync).
Rückgängig machen: Vor MySQL5.5 kann Rückgängig nur in der ibdata-Datei gespeichert werden. Nach 5.6 kann das Rückgängig-Protokoll außerhalb der ibdata gespeichert werden, indem der Parameter innodb_undo_tablespaces festgelegt wird.
So werden Transaktionen über Protokolle implementiert:
(1) Wenn eine Transaktion eine Seite ändert, muss zuerst das Rückgängigmachen aufgezeichnet werden, und das Wiederherstellen des Rückgängigmachens muss aufgezeichnet werden, bevor das Rückgängigmachen aufgezeichnet wird Die Änderung der Datenseite wird aufgezeichnet. Das Wiederherstellen (einschließlich Rückgängigmachen von Änderungen) muss vor den Datenseiten auf der Festplatte gespeichert werden.
(2) Wenn die Transaktion aufgrund des Rückgängigmachens zurückgesetzt werden muss, kann die Datenseite auf den Status des vorherigen Spiegels zurückgesetzt werden. Wenn der Absturz behoben ist und die Transaktion im Redo-Protokoll kein entsprechendes Commit hat Aufzeichnen, dann ist es notwendig, Rückgängig zu verwenden, um die Transaktion zu ändern. Zurücksetzen auf den Zeitpunkt vor dem Start der Transaktion.
(3) Wenn ein Festschreibungsdatensatz vorhanden ist, verwenden Sie Redo, um bis zum Abschluss der Transaktion fortzufahren und sie festzuschreiben.

14. Wird der nicht gruppierte Index zur Abfrage an die Tabelle zurückgegeben?
Nicht unbedingt: Wenn alle Felder der Abfrageanweisung den Index treffen, ist keine Rückabfrage an die Tabelle erforderlich.
Um ein einfaches Beispiel zu geben: Angenommen, wir haben einen Index für die Schülertabelle eingerichtet. Wenn dann die Abfrage „Alter von Schüler auswählen“ mit einem Alter < 20 durchgeführt wird, enthält der Blattknoten des Index bereits die Altersinformationen und wird nicht erneut zurückgegeben Tabellenabfrage.

15. Was ist der Unterschied oder die Vor- und Nachteile zwischen dem Hash-Index und dem B+-Baum?
Zunächst müssen wir die zugrunde liegenden Implementierungsprinzipien des Hash-Index und des B+-Baum-Index kennen: Die unterste
Ebene des Hash-Index ist der Hash Tabelle. Bei der Suche können Sie ihn erhalten, indem Sie die Hash-Funktion einmal aufrufen. Der entsprechende Schlüsselwert und dann die Tabelle zurückfragen, um die tatsächlichen Daten zu erhalten. Die zugrunde liegende Implementierung des B+-Baums ist ein mehrweg-balancierter Suchbaum. Beginnen Sie für jede Abfrage am Wurzelknoten. Erst wenn der Blattknoten gefunden wird, können Sie den Abfrageschlüsselwert abrufen und dann beurteilen, ob eine Rückkehr zur Tabelle erforderlich ist, um Daten gemäß der Abfrage abzufragen.
Dann ist ersichtlich, dass sie die folgenden Unterschiede aufweisen:
(1) Der Hash-Index ist für äquivalente Abfragen (im Allgemeinen) schneller, kann jedoch keine Bereichsabfragen durchführen.
(2) Da nach der Verwendung der Hash-Funktion zum Erstellen des Index im Hash-Index die Reihenfolge des Index nicht mit der ursprünglichen Reihenfolge übereinstimmen kann und Bereichsabfragen nicht unterstützt werden können. Und alle Knoten des B + -Baums folgen (der linke Knoten ist kleiner als der übergeordnete Knoten, der rechte Knoten ist größer als der übergeordnete Knoten und der Multi-Fork-Baum ist ähnlich), was den Bereich natürlich unterstützt.
(3) Der Hash-Index unterstützt die Verwendung des Index zum Sortieren nicht. Das Prinzip ist das gleiche wie oben.
(4) Hash-Indizes unterstützen keine Fuzzy-Abfragen und den Präfixabgleich ganz links bei mehrspaltigen Indizes. Das Prinzip liegt auch an der Unvorhersehbarkeit der Hash-Funktion. Die Indizes AAAA und AAAAB korrelieren nicht.
(5) Der Hash-Index kann es nicht vermeiden, jederzeit zur Tabelle zurückzukehren, um Daten abzufragen, und der B+-Baum kann die Abfrage über den Index nur dann abschließen, wenn bestimmte Bedingungen (Clustered-Index, Covering-Index usw.) erfüllt sind.
(6) Obwohl der Hash-Index in der entsprechenden Abfrage schneller ist, ist er instabil. Die Leistung ist unvorhersehbar. Wenn ein bestimmter Schlüsselwert viele Wiederholungen aufweist, kommt es zu einer Hash-Kollision, und die Effizienz kann zu diesem Zeitpunkt extrem schlecht sein. Die Abfrageeffizienz des B+-Baums ist relativ stabil, alle Abfragen erfolgen vom Wurzelknoten zum Blattknoten und die Höhe des Baums ist gering.
(7) Daher kann in den meisten Fällen durch direkte Auswahl des B+-Baumindex eine stabile und bessere Abfragegeschwindigkeit erzielt werden. Anstatt einen Hash-Index zu verwenden.

16. Was bedeutet „Für Aktualisierung auswählen“? Wird dadurch die Tabelle oder die Zeile oder etwas anderes gesperrt?
Die Bedeutung von „Select for Update“:
Die Select-Abfrageanweisung wird nicht gesperrt, aber „Select for Update“ hat nicht nur die Funktion einer Abfrage, sondern auch eine Sperre, und es handelt sich um eine pessimistische Sperre. Das Hinzufügen einer Zeilensperre oder einer Tabellensperre hängt davon ab, ob der Index/Primärschlüssel verwendet wird.
Wenn kein Index/Primärschlüssel verwendet wird, handelt es sich um eine Tabellensperre, andernfalls um eine Zeilensperre.

17. Unterstützt Ihre Datenbank die Speicherung von Emoji-Ausdrücken? Wenn nicht, wie funktioniert das?
Ersetzen Sie den Zeichensatz utf8–>utf8mb4

18. Die Datenstruktur des Index (B-Baum, Hash) führt jeweils in
die Datenstruktur des Index und die Implementierung der spezifischen Speicher-Engine ein. Zu den in MySQL häufiger verwendeten Indizes gehören der Hash-Index, der B + -Baum-Index usw. usw InnoDB-Speicher, den wir häufig verwenden. Die Standardindeximplementierung der Engine ist: B+-Baumindex. Für einen Hash-Index ist die zugrunde liegende Datenstruktur eine Hash-Tabelle. Wenn sich die meisten Anforderungen auf eine einzelne Datensatzabfrage beziehen, können Sie daher einen Hash-Index auswählen, der die schnellste Abfrageleistung bietet. Für die meisten anderen Szenarien wird dies empfohlen um einen BTree-Index auszuwählen.
B-Tree-Index:
MySQL ruft Daten über die Speicher-Engine ab. Grundsätzlich verwenden 90 % der Menschen InnoDB. Gemäß der Implementierungsmethode gibt es derzeit nur zwei Arten von InnoDB-Indizes: BTREE-Index (B-Tree) und HASH-Index. Der B-Tree-Index ist der am häufigsten verwendete Indextyp in MySQL-Datenbanken, und grundsätzlich unterstützen alle Speicher-Engines den BTree-Index. Normalerweise bezieht sich der Index, den wir sagen, auf den (B-Tree-)Index (tatsächlich mit B + Tree implementiert, da MySQL beim Anzeigen von Tabellenindizes immer BTREE druckt, daher wird er kurz B-Tree-Index genannt) Hash-Index: kurz Als Nächstes
ähnlich
wie Die HASH-Tabelle (Hash-Tabelle) wird einfach in die Datenstruktur implementiert. Wenn wir den Hash-Index in MySQL verwenden, erfolgt dies hauptsächlich über den Hash-Algorithmus (übliche Hash-Algorithmen umfassen direkte Adressierungsmethode, Quadratmethode, Faltmethode, Divisormethode). Zufallszahlenmethode), konvertieren Sie die Datenbankfelddaten in einen Hash-Wert fester Länge und speichern Sie ihn zusammen mit dem Zeilenzeiger dieser Daten an der entsprechenden Position der Hash-Tabelle. Wenn eine Hash-Kollision auftritt (zwei verschiedene Schlüssel), wird der Hash-Wert angezeigt des Wortes gleich ist), dann wird es in Form einer verknüpften Liste unter dem entsprechenden Hash-Schlüssel gespeichert. Natürlich handelt es sich dabei nur um eine grobe Simulation.

19. Was ist das am weitesten links liegende Matching-Prinzip des Index?
Beim Erstellen eines gemeinsamen Index ist es im Allgemeinen erforderlich, das Prinzip der Übereinstimmung ganz links zu befolgen. Das heißt, das Attribut mit dem höchsten Erkennungsgrad im gemeinsamen Index wird an den Anfang der Abfrageanweisung gestellt.

20. Was ist der Zweck der Indexierung?
(1) Greifen Sie schnell auf bestimmte Informationen in der Datentabelle zu, um die Abrufgeschwindigkeit zu verbessern.
(2) Erstellen Sie einen eindeutigen Index, um die Eindeutigkeit jeder Datenzeile in der Datenbanktabelle sicherzustellen.
(3) Beschleunigen Sie die Verbindung zwischen Tabellen und Tabellen.
(4) Durch die Verwendung von Gruppierungs- und Sortierklauseln zum Datenabruf kann die Zeit zum Gruppieren und Sortieren in Abfragen erheblich verkürzt werden.

21. Welche negativen Auswirkungen hat die Indizierung auf das Datenbanksystem?
Das Erstellen und Verwalten von Indizes nimmt Zeit in Anspruch, und diese Zeit nimmt mit zunehmender Datenmenge zu. Indizes müssen physischen Speicherplatz belegen, nicht nur Tabellen müssen Datenspeicherplatz belegen, jeder Index muss auch physischen Speicherplatz belegen; beim Hinzufügen oder Löschen von Tabellen , Change und Index müssen zudem dynamisch gepflegt werden, was die Geschwindigkeit der Datenpflege verringert.

22. Was sind die Grundsätze für die Indizierung von Datentabellen?
(1) Erstellen Sie einen Index für das am häufigsten verwendete Feld, um den Umfang der Abfrage einzugrenzen.
(2) Erstellen Sie Indizes für häufig verwendete Felder, die sortiert werden müssen

23. Unter welchen Umständen ist es nicht angebracht, einen Index zu erstellen?
(1) Für Spalten, die selten an Abfragen beteiligt sind, oder für Spalten mit vielen wiederholten Werten ist die Erstellung von Indizes nicht sinnvoll.
(2) Für einige spezielle Datentypen ist es nicht geeignet, Indizes zu erstellen, z. B. Textfelder (Text) usw. (
3) Es ist nicht geeignet, Indizes für Tabellen zu erstellen, die häufig hinzugefügt, gelöscht und geändert werden.

24. Was ist das Prinzip des Präfixes ganz links? Was ist das Leftmost-Matching-Prinzip?
Das Prinzip des Präfixes ganz links ist die Priorität ganz links. Bei der Erstellung eines mehrspaltigen Index sollte entsprechend den Geschäftsanforderungen die am häufigsten verwendete Spalte in der where-Klausel ganz links platziert werden.
Wenn wir einen kombinierten Index wie (k1, k2, k3) erstellen, entspricht dies der Erstellung von drei Indizes (k1), (k1, k2) und (k1, k2, k3), was dem Übereinstimmungsprinzip ganz links entspricht. .
25. Wofür wird myisamchk verwendet?
Es wird zum Komprimieren von MyISAM-Tabellen verwendet, wodurch die Festplatten- oder Speichernutzung reduziert wird.

26. Erzählen Sie mir etwas über das Design der Unterdatenbank und Untertabelle?
Unterdatenbank- und Tabellenaufteilungsschema:
(1) Horizontales Datenbank-Sharding: Teilen Sie die Daten in einer Datenbank basierend auf dem Feld gemäß einer bestimmten Strategie (Hash, Bereich usw.) in mehrere Datenbanken auf.
(2) Horizontale Tabellenaufteilung: Teilen Sie die Daten in einer Tabelle basierend auf Feldern und gemäß bestimmten Strategien (Hash, Bereich usw.) in mehrere Tabellen auf.
(3) Vertikale Unterdatenbank: Basierend auf Tabellen werden verschiedene Tabellen entsprechend unterschiedlichen Geschäftsattributen in verschiedene Bibliotheken aufgeteilt.
(4) Vertikale Tabellenaufteilung: Basierend auf dem Feld und entsprechend der Aktivität des Feldes werden die Felder in der Tabelle in verschiedene Tabellen (Haupttabelle und erweiterte Tabelle) aufgeteilt.
Häufig verwendete Unterdatenbank- und Tabellen-Middleware:
Sharding-JDBC, Mycat, TDDL, Oceanus, Vitess, Atlas
-Unterdatenbank und Untertabelle können auf Probleme stoßen:
(1) Transaktionsproblem: Es müssen verteilte Transaktionen verwendet werden
(2) knotenübergreifend Join-Problem: Um dieses Problem zu lösen, kann es in
zwei Abfragen unterteilt werden, um (3) knotenübergreifende Zählung, Reihenfolge nach, Gruppierung nach und Aggregationsfunktion zu erreichen . Problem: Nachdem Sie die Ergebnisse auf jedem Knoten erhalten haben, führen Sie sie auf der Anwendungsseite zusammen.
(4) Frage D: Nach der Aufteilung der Datenbank können Sie sich nicht mehr auf den Primärschlüsselgenerierungsmechanismus der Datenbank selbst verlassen. Der einfachste Weg ist die Berücksichtigung der UUID. (5) Sortieren und Paging über Shards hinweg (Erhöhung der Seitengrößenverarbeitung
in der Hintergrund?)

27. Unter welchen Umständen ist der Index festgelegt, kann aber nicht verwendet werden
(1) Die LIKE-Anweisung beginnt mit „%“, Fuzzy-Matching
(2) Der Index wird nicht gleichzeitig vor und nach der OR-Anweisung verwendet
(3) Es gibt Eine implizite Konvertierung des Datentyps (z. B. fügt varchar kein einzelnes Anführungszeichen hinzu und kann automatisch in den Typ int konvertiert werden.)
(4) Berechnen Sie das Feld oder verwenden Sie die Funktion
(5), um den Vorgang umzukehren. Beispielsweise ist nicht null
28. Wie lösche ich den Index?
Löschen Sie den Primärschlüsselindex:
Ändern Sie den Tabellennamen und löschen Sie den Primärschlüssel (da es nur einen Primärschlüssel gibt). Hier ist zu beachten, dass dieser Vorgang nicht direkt ausgeführt werden kann, wenn der Primärschlüssel ein Selbstwachstum ist (das Selbstwachstum hängt vom Primärschlüsselindex ab),
um andere Indizes zu löschen:
Tabelle ändern, Tabellennamen löschen, Indexindexnamen löschen

29. Was ist ein Datenbankverbindungspool? Warum benötigen Sie einen Datenbankverbindungspool?
Das Prinzip des Datenbankverbindungspools:
Verwalten Sie im internen Objektpool eine bestimmte Anzahl von Datenbankverbindungen und legen Sie die Erfassungs- und Rückgabemethoden der Datenbank offen Verbindung.
Der Prozess des Herstellens einer Verbindung zwischen dem Anwendungsprogramm und der Datenbank:
(1) Herstellen einer Verbindung mit dem Datenbankserver über den Drei-Wege-Handshake des TCP-Protokolls
(2) Senden des Kennworts für das Datenbankbenutzerkonto und Warten auf die Datenbank Überprüfen Sie die Identität des Benutzers
(3). Nach Abschluss der Identitätsüberprüfung kann das System die SQL-Anweisung „Gehen Sie zur Datenbank“ senden, um sie auszuführen
(4), die Verbindung schließen und TCP viermal zum Abschied winken.
Vorteile des Datenbankverbindungspools:
(1) Wiederverwendung von Ressourcen (Verbindungswiederverwendung)
(2) Schnellere Systemreaktionsgeschwindigkeit
(3) Neue Methode zur Ressourcenzuweisung
(4) Einheitliche Verbindungsverwaltung zur Vermeidung von Datenbankverbindungslecks

30. Was ist der Spaltenvergleichsoperator?
Verwenden Sie die Operatoren =, <>, <=, <, >=, >, <<, >>, <=>, AND, OR oder LIKE in Spaltenvergleichen in einer SELECT-Anweisung.

31. Was sind Datenbanksperren entsprechend der Granularität der Sperren?
Entsprechend der Sperrgranularität:
Tabellensperre, Seitensperre, Zeilensperre.
Gemäß Sperrmechanismus:
optimistische Sperre, pessimistische Sperre

32. Was bedeuten % und _ in der LIKE-Anweisung?
% entspricht 0 oder mehr Zeichen und _ ist nur ein Zeichen in der LIKE-Anweisung.

33. Wie konvertiert man zwischen Unix- und MySQL-Zeitstempeln?
UNIX_TIMESTAMP ist der Befehl zum Konvertieren vom MySQL-Zeitstempel in den Unix-Zeitstempel.
FROM_UNIXTIME ist der Befehl zum Konvertieren vom Unix-Zeitstempel in den MySQL-Zeitstempel

34. Wie kann man die Leistungsprobleme von SQL-Anweisungen lokalisieren und optimieren? Wurde der erstellte Index verwendet? Oder wie kann ich herausfinden, warum diese Anweisung so langsam ausgeführt wird?
Der wichtigste und effektivste Weg, SQL-Anweisungen mit geringer Leistung zu finden, ist die Verwendung des Ausführungsplans. MySQL stellt den Befehl EXPLAIN bereit, um den Ausführungsplan der Anweisung anzuzeigen. Wir wissen, dass unabhängig von der Art der Datenbank oder Datenbank-Engine viele damit verbundene Optimierungen während der Ausführung einer SQL-Anweisung durchgeführt werden. Bei Abfrageanweisungen ist die Verwendung von Indizes die wichtigste Optimierungsmethode. Der Ausführungsplan besteht darin, die Details der Ausführung der SQL-Anweisung durch die Datenbank-Engine anzuzeigen, einschließlich der Frage, ob ein Index verwendet werden soll, welcher Index verwendet werden soll und zugehörige Informationen zum verwendeten Index.

Download-Adresse für Word-Dokumente: Häufig gestellte Fragen zu Vorstellungsgesprächen in der MySQL-Datenbank

Supongo que te gusta

Origin blog.csdn.net/ma286388309/article/details/129620831
Recomendado
Clasificación