Obwohl wir keine professionellen DBAs sind, können wir als Webentwickler nicht auf Datenbanken verzichten. Die meisten Entwickler kennen nur die vier klassischen SQL-Anweisungen: Auswählen, Einfügen, Löschen und Aktualisieren. So sehr, dass wir nie untersucht haben, wie sie funktionieren. Hier sprechen wir darüber, wie die Auswahl in der Datenbank funktioniert. Das klassischste Thema der B/S-Architektur ist die dreischichtige Architektur, die grob in Datenschicht, Geschäftslogikschicht und Präsentationsschicht unterteilt werden kann. Die Funktion der Datenschicht besteht im Allgemeinen darin, mit der Datenbank zu interagieren, beispielsweise Datensätze abzufragen. Wir schreiben häufig SQL-Abfragen und rufen dann das Programm auf, um das SQL auszuführen. Doch wie sieht der interne Arbeitsablauf aus? Ich glaube, die meisten meiner Freunde sind sich wie ich nicht sicher, welchen Schritt sie zuerst und welchen sie als nächstes machen sollen. Schritt 1: Die Anwendung sendet die SQL-Abfrageanweisung zur Ausführung an den Server Wenn wir SQL-Anweisungen in der Datenschicht ausführen, stellt die Anwendung eine Verbindung zum entsprechenden Datenbankserver her und sendet die SQL-Anweisungen zur Verarbeitung an den Server. Schritt 2: Der Server analysiert die angeforderte SQL-Anweisung 1. SQL-Plan-Cache. Freunde, die häufig den Abfrageanalysator verwenden, kennen das wahrscheinlich. Oft dauert die Ausführung einer Abfrageanweisung sehr lange, wenn sie zum ersten Mal ausgeführt wird. Wenn Sie dieselbe Anweisung jedoch sofort oder innerhalb eines bestimmten Zeitraums ausführen, werden die Abfrageergebnisse in sehr kurzer Zeit zurückgegeben. Grund:
2. Wenn im SQL-Plan-Cache kein entsprechender Ausführungsplan vorhanden ist, führt der Server zunächst eine Syntaxüberprüfung der vom Benutzer angeforderten SQL-Anweisung durch. Wenn ein Syntaxfehler vorliegt, beendet der Server den Abfragevorgang und gibt die entsprechende Fehlermeldung an die Anwendung zurück, die ihn aufgerufen hat. Hinweis: Die zu diesem Zeitpunkt zurückgegebene Fehlermeldung enthält nur grundlegende Syntaxfehlerinformationen, z. B. „select“ als „selec“ geschrieben. Wenn die Fehlermeldung eine Spalte enthält, die in der Tabelle nicht vorhanden ist, überprüft der Server sie zu diesem Zeitpunkt nicht, da es sich nur um eine Syntaxüberprüfung handelt. Ob die Semantik korrekt ist, wird im nächsten Schritt behandelt. 3. Nachdem die Syntax übereinstimmt, wird überprüft, ob die Semantik korrekt ist, z. B. ob Tabellennamen, Spaltennamen, gespeicherte Prozeduren und andere Datenbankobjekte tatsächlich vorhanden sind. Wenn festgestellt wird, dass einige davon nicht vorhanden sind, wird der Anwendung ein Fehler gemeldet und die Abfrage wird beendet. 4. Der nächste Schritt besteht darin, die Parsing-Sperre des Objekts zu erhalten. Wenn wir eine Tabelle abfragen, sperrt der Server zuerst das Objekt, um die Konsistenz der Daten sicherzustellen. Wenn es nicht gesperrt ist, werden zu diesem Zeitpunkt Daten eingefügt, aber da keine Sperre vorhanden ist, hat die Abfrage den Datensatz gelesen und einige Einfügungen werden aufgrund von Transaktionsfehlern zurückgesetzt, was zu fehlerhaften Lesevorgängen führt. 5. Der nächste Schritt besteht darin, die Berechtigungen des Datenbankbenutzers zu überprüfen. Selbst wenn die Syntax und Semantik der SQL-Anweisung korrekt sind, werden die Abfrageergebnisse zu diesem Zeitpunkt möglicherweise nicht abgerufen. Wenn der Datenbankbenutzer nicht über die entsprechenden Zugriffsrechte verfügt, meldet der Server der Anwendung einen Fehler wegen unzureichender Berechtigungen. In größeren Projekten gibt es in einem Projekt häufig mehrere Datenbankverbindungszeichenfolgen. Diese Datenbankbenutzer haben unterschiedliche Berechtigungen, einige sind schreibgeschützt, einige nur lesbar und einige lesbar und beschreibbar. Verschiedene Benutzer werden für die Ausführung entsprechend unterschiedlicher Vorgänge ausgewählt. Wenn Sie nicht vorsichtig sind, ist Ihre SQL-Anweisung nutzlos, egal wie perfekt sie ist. 6. Der letzte Schritt der Analyse besteht darin, den endgültigen Ausführungsplan festzulegen. Nachdem Syntax, Semantik und Berechtigungen überprüft wurden, gibt der Server die Ergebnisse nicht sofort an Sie zurück. Stattdessen optimiert er Ihr SQL und wählt verschiedene Abfragealgorithmen aus, um sie in der effizientesten Form an die Anwendung zurückzugeben. Wenn Sie beispielsweise eine Tabellenverknüpfungsabfrage durchführen, entscheidet der Server letztendlich, ob Hashjoin, Mergejoin oder Loopjoin verwendet werden soll. Dies hängt von den Kosten, dem effizienteren Index usw. ab. Die automatische Optimierung ist jedoch begrenzt. Wenn Sie effizientes Abfrage-SQL schreiben möchten, müssen Sie Ihre SQL-Abfrageanweisungen dennoch optimieren. Sobald der Ausführungsplan festgelegt ist, wird er im SQL-Plan-Cache gespeichert. Bei der nächsten Ausführungsanforderung wird er direkt aus dem Plan-Cache entnommen, um eine Neukompilierung des Ausführungsplans zu vermeiden. Schritt 3: Anweisungsausführung Nachdem der Server die SQL-Anweisung analysiert hat, weiß er, was die Anweisung tatsächlich bedeutet und kann sie dann tatsächlich ausführen. Derzeit gibt es zwei Situationen:
Hinweis: Es gibt verschiedene Arten von SQL-Caches. Interessierte Freunde können hier danach suchen. Manchmal ist es aufgrund der Existenz von Caches schwierig für uns, die Optimierungsergebnisse sofort zu sehen. Da die zweite Ausführung aufgrund der Existenz von Caches sehr schnell ist, löschen wir normalerweise zuerst den Cache und vergleichen dann die Leistung vor und nach der Optimierung. Hier sind einige gängige Methoden: Entfernt alle leeren Puffer aus dem Pufferpool. Entfernt alle Elemente aus dem Prozedurcache. Gibt alle ungenutzten Cache-Einträge aus allen Caches frei. Die SQL Server 2005-Datenbank-Engine bereinigt im Hintergrund vorab nicht verwendete Cache-Einträge, um Speicher für aktuelle Einträge freizugeben. Sie können jedoch mit diesem Befehl nicht verwendete Einträge manuell aus allen Caches entfernen. Dies kann nur grundsätzlich die Auswirkungen des SQL-Caches beseitigen. Es scheint keine Lösung zu geben, um den Cache vollständig zu beseitigen. Wenn Sie eine haben, lassen Sie es mich bitte wissen. Fazit: Nur wenn wir den Betriebsablauf des Dienstes kennen, der das von der Anwendung übermittelte SQL ausführt, können wir unsere Anwendung gut debuggen.
Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
>>: Implementierungsprozessdatensatz für benutzerdefinierte Vue-Tabellenspalten
Inhaltsverzeichnis 1. Installation 2.API 3. reagi...
Inhaltsverzeichnis 1. Was ist ein Abschluss? 2. D...
1. MySQL-Anmeldeeinstellungen ändern: # vim /etc/...
In diesem Artikel wird der spezifische Code von R...
Dieser Artikel verwendet die Lizenzvereinbarung „...
Frage Das nahtlose Scrollen von Bildern und Texte...
Methode 1: Verwenden Sie den cmd-Befehl Öffnen Si...
Inhaltsverzeichnis 1. Ursprüngliche Nachfrage 2. ...
Typische Layoutbeispiele Wie im obigen Bild gezei...
Dieser Artikel beschreibt anhand eines Beispiels,...
Inhaltsverzeichnis 01 Einführung in InnoDB Replic...
In diesem Artikel finden Sie das grafische Tutori...
Der Installationsprozess von MySQL 8.0 Windows Zi...
Supervisor ist ein sehr gutes Daemon-Verwaltungst...
Vorwort Wir alle wissen, dass man QR-Codes in off...