Heim Datenbank MySQL-Tutorial So funktioniert die Datenbank-SQL-Auswahlabfrage

So funktioniert die Datenbank-SQL-Auswahlabfrage

Nov 24, 2016 am 11:35 AM
mysql mysql数据库

Ich bin kein professioneller DBA, aber als Entwickler mit einer B/S-Architektur bin ich immer untrennbar mit der Datenbank verbunden. Im Allgemeinen verwenden Entwickler nur die vier klassischen Anweisungen von SQL: select, insert, delete und update. Aber ich habe nie studiert, wie sie funktionieren. In diesem Artikel möchte ich darüber sprechen, wie Select in der Datenbank funktioniert.

Das klassischste Thema in der B/S-Architektur ist nichts anderes als die dreistufige Architektur, die grob in Datenschicht, Geschäftslogikschicht und Präsentationsschicht unterteilt werden kann mit der Datenbank interagieren, z. B. Datensätze abfragen. Wir schreiben oft die SQL-Abfrage und rufen dann das Programm auf, um die SQL auszuführen. Aber wie sieht der interne Arbeitsablauf aus? Welchen Schritt ich zuerst machen soll, welchen Schritt ich als nächstes machen soll usw. Ich glaube, die meisten meiner Freunde sind sich nicht sicher, genau wie ich.

So funktioniert die Datenbank-SQL-Auswahlabfrage

Schritt 1: Die Anwendung sendet die Abfrage-SQL-Anweisung zur Ausführung an den Server

Wenn wir die SQL-Anweisung im ausführen Auf der Datenschicht stellt die Anwendung eine Verbindung zum entsprechenden Datenbankserver her und sendet die SQL-Anweisung zur Verarbeitung an den Server.

Schritt 2: Der Server analysiert die angeforderte SQL-Anweisung

1. Freunde, die häufig Abfrageanalysatoren verwenden, wissen wahrscheinlich, dass eine Abfrageanweisung zum ersten Mal ausgeführt wird. Die Ausführung dauert sehr lange. Wenn Sie jedoch dieselbe Anweisung sofort oder innerhalb eines bestimmten Zeitraums ausführen, werden die Abfrageergebnisse in kurzer Zeit zurückgegeben.

Grund:

Nach Erhalt der Abfrageanforderung geht der Server nicht sofort zur Abfrage in die Datenbank, sondern sucht im Plan-Cache in der Datenbank nach dem entsprechenden Ausführungsplan existiert, rufen Sie den kompilierten Ausführungsplan direkt auf und sparen Sie so die Kompilierungszeit des Ausführungsplans.

Wenn die abgefragte Zeile bereits im Datenpufferspeicherbereich vorhanden ist, muss die physische Datei nicht abgefragt werden. Stattdessen werden die Daten aus dem Speicher abgerufen schneller sein als das Lesen der Daten von der Festplatte. Es ist viel schneller und verbessert die Abfrageeffizienz. Der Datenpufferspeicherbereich wird später erwähnt.

2. Wenn im SQL-Plan-Cache kein entsprechender Ausführungsplan vorhanden ist, führt der Server zunächst eine Syntaxprüfung für die vom Benutzer angeforderte SQL-Anweisung durch. Wenn ein Syntaxfehler vorliegt, beendet der Server die Abfrage Vorgang ausführen und die entsprechende Fehlermeldung an die Anwendung zurückgeben, die ihn aufruft.

Hinweis: Die zu diesem Zeitpunkt zurückgegebene Fehlermeldung enthält nur grundlegende Syntaxfehlerinformationen, z. B. „select“ wird als „select“ geschrieben usw. Wenn die Fehlermeldung eine Spalte enthält, die nicht in der Liste enthalten ist, wird der Server dies nicht tun Geprüft wird nur die Syntaxüberprüfung, ob die Semantik korrekt ist, bleibt dem nächsten Schritt überlassen.

3. Nachdem die Syntax konsistent ist, beginnen Sie mit der Überprüfung, ob ihre Semantik korrekt ist, z. B. ob die Datenbankobjekte wie Tabellennamen, Spaltennamen, gespeicherte Prozeduren usw. tatsächlich vorhanden sind vorhanden ist, wird beim Beenden der Abfrage ein Fehler an die Anwendung gemeldet.

4. Der nächste Schritt besteht darin, die Analysesperre des Objekts zu erhalten. Wenn wir eine Tabelle abfragen, wird die Einheit der Daten sichergestellt , Es werden Daten eingefügt, aber da keine Sperre vorhanden ist, hat die Abfrage diesen Datensatz bereits gelesen und einige Einfügungen werden aufgrund eines Transaktionsfehlers zurückgesetzt, was zu einem Dirty-Read-Phänomen führt.

5. Der nächste Schritt besteht darin, die SQL-Anweisungssyntax und -semantik zu überprüfen. Wenn der Datenbankbenutzer nicht über die entsprechenden Zugriffsberechtigungen verfügt. Der Server meldet den Anwendungen nicht genügend Berechtigungen. In größeren Projekten enthält ein Projekt häufig unterschiedliche Berechtigungen, einige haben nur Leseberechtigungen, andere nur Schreibberechtigungen kann lesen und schreiben. Wenn Sie nicht aufpassen, ist Ihre SQL-Anweisung nutzlos, wenn sie perfekt ist.

6. Der letzte Schritt der Analyse besteht darin, den endgültigen Ausführungsplan festzulegen. Wenn Syntax, Semantik und Berechtigungen überprüft wurden, sendet der Server die Ergebnisse nicht sofort an Sie zurück. Stattdessen optimiert er Ihr SQL und wählt verschiedene Abfragealgorithmen aus, um es in der effizientesten Form an die Anwendung zurückzugeben. Wenn beispielsweise Tabellen-Join-Abfragen durchgeführt werden, entscheidet sich der Server letztendlich für die Verwendung von Hashjoin, Mergejoin oder Loopjoin, basierend auf den Kosten, welcher Index effizienter ist usw. Die automatische Optimierung ist jedoch begrenzt, um effiziente Abfragen zu schreiben SQL muss seine eigenen SQL-Abfrageanweisungen noch optimieren.

Nachdem der Ausführungsplan ermittelt wurde, wird der Ausführungsplan beim nächsten Mal, wenn dieselbe Ausführungsanforderung vorliegt, direkt aus dem Plancache abgerufen, um eine Neukompilierung des Ausführungsplans zu vermeiden.

Schritt 3: Anweisungsausführung

Nachdem der Server das Parsen der SQL-Anweisung abgeschlossen hat, weiß der Server, was die Anweisung bedeutet, und führt die SQL-Anweisung dann tatsächlich aus.

Zu diesem Zeitpunkt gibt es zwei Situationen:

Wenn die in der Abfrageanweisung enthaltenen Datenzeilen in den Datenpufferspeicherbereich gelesen wurden, liest der Server die Daten direkt aus dem Datenpuffer Speicherbereich und geben Sie es an Anwendungen zurück. Vermeiden Sie das Lesen aus physischen Dateien und verbessern Sie die Abfragegeschwindigkeit.

Wenn sich die Datenzeile nicht im Datenpuffer befindet, wird der Datensatz aus der physischen Datei gelesen und an die Anwendung zurückgegeben, und die Datenzeile wird zur nächsten Verwendung in den Datenpuffer geschrieben.

Hinweis: Es gibt mehrere Arten von SQL-Cache. Aufgrund der Existenz des Caches ist es für uns manchmal schwierig, die Ergebnisse der Optimierung sofort zu sehen Die Ausführung ist sehr schnell, daher ist es im Allgemeinen erforderlich, zuerst den Cache zu entfernen und dann die Leistung vor und nach der Optimierung zu vergleichen:

DBCCDROPCLEANBUFFERS

Alles aus dem Pufferpool löschen. Löschen Sie den Puffer.

DBCCFREEPROCCACHE

Entfernt alle Elemente aus dem Prozedurcache.

DBCCFREESYSTEMCACHE

Alle nicht verwendeten Cache-Einträge aus allen Caches freigeben. Die SQLServer2005-Datenbank-Engine bereinigt zuvor nicht verwendete Cache-Einträge im Hintergrund, um Speicher für aktuelle Einträge verfügbar zu machen. Sie können diesen Befehl jedoch verwenden, um nicht verwendete Einträge manuell aus allen Caches zu entfernen.

Dies kann die Auswirkungen des SQL-Cache nur grundsätzlich beseitigen. Es scheint keine Lösung zu geben, um den Cache vollständig zu entfernen. Bitte geben Sie mir einen Rat.

Schlussfolgerung: Nur wenn wir den Operationsprozess des von der Dienstausführungsanwendung übermittelten SQL kennen, können wir unsere Anwendung gut debuggen.

Stellen Sie sicher, dass die SQL-Syntax korrekt ist;

Stellen Sie sicher, dass die SQL-Semantik korrekt ist, d. h., ob das Objekt vorhanden ist;

Ob der Datenbankbenutzer über den entsprechenden Zugriff verfügt Rechte.


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie Tabellen mit SQL Server mithilfe der SQL -Anweisung So erstellen Sie Tabellen mit SQL Server mithilfe der SQL -Anweisung Apr 09, 2025 pm 03:48 PM

So erstellen Sie Tabellen mithilfe von SQL -Anweisungen auf SQL Server: Öffnen Sie SQL Server Management Studio und stellen Sie eine Verbindung zum Datenbankserver her. Wählen Sie die Datenbank aus, um die Tabelle zu erstellen. Geben Sie die Anweisung "Tabelle erstellen" ein, um den Tabellennamen, den Spaltennamen, den Datentyp und die Einschränkungen anzugeben. Klicken Sie auf die Schaltfläche Ausführen, um die Tabelle zu erstellen.

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

So schreiben Sie ein Tutorial zum Anschließen von drei Tabellen in SQL -Anweisungen So schreiben Sie ein Tutorial zum Anschließen von drei Tabellen in SQL -Anweisungen Apr 09, 2025 pm 02:03 PM

In diesem Artikel wird ein detailliertes Tutorial zum Verbinden von drei Tabellen mithilfe von SQL -Anweisungen vorgestellt und die Leser dazu veranlasst, zu lernen, wie Daten effektiv in verschiedenen Tabellen korrelieren. Mit Beispielen und detaillierten Syntax -Erklärungen hilft Ihnen dieser Artikel dabei, die Verbindungstechniken von Tabellen in SQL zu beherrschen, damit Sie zugeordnete Informationen effizient aus der Datenbank abrufen können.

So verwenden Sie SQL Anweisung Insert So verwenden Sie SQL Anweisung Insert Apr 09, 2025 pm 06:15 PM

Die SQL Insert -Anweisung wird verwendet, um Daten in eine Tabelle einzufügen. Die Schritte umfassen: Geben Sie die Zieltabelle an, um die zu eingefügten Spalten aufzulisten. Geben Sie den zugefügten Wert an (die Reihenfolge der Werte muss dem Spaltennamen entsprechen)

Wie man die SQL -Injektion bewertet Wie man die SQL -Injektion bewertet Apr 09, 2025 pm 04:18 PM

Zu den Methoden zur Beurteilung der SQL -Injektion gehören: Erkennen verdächtiger Eingaben, Anzeigen der ursprünglichen SQL -Anweisungen, Verwendung von Erkennungswerkzeugen, Anzeigen von Datenbankprotokollen und Durchführung von Penetrationstests. Nachdem die Injektion erkannt wurde, ergreifen Sie Maßnahmen, um Schwachstellen zu entflammen, Patches zu überprüfen, regelmäßig zu überwachen und das Bewusstsein für das Entwickler zu verbessern.

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

Wie füge ich Spalten in PostgreSQL hinzu? Wie füge ich Spalten in PostgreSQL hinzu? Apr 09, 2025 pm 12:36 PM

PostgreSQL Die Methode zum Hinzufügen von Spalten besteht darin, den Befehl zur Änderungstabelle zu verwenden und die folgenden Details zu berücksichtigen: Datentyp: Wählen Sie den Typ, der für die neue Spalte geeignet ist, um Daten wie int oder varchar zu speichern. Standardeinstellung: Geben Sie den Standardwert der neuen Spalte über das Standard -Schlüsselwort an und vermeiden Sie den Wert von NULL. Einschränkungen: Fügen Sie nicht null, eindeutig hinzu oder überprüfen Sie die Einschränkungen bei Bedarf. Gleichzeitige Operationen: Verwenden Sie Transaktionen oder andere Parallelitätskontrollmechanismen, um Sperrkonflikte beim Hinzufügen von Spalten zu verarbeiten.

So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen Apr 09, 2025 pm 12:21 PM

Das Wiederherstellen von gelöschten Zeilen direkt aus der Datenbank ist normalerweise unmöglich, es sei denn, es gibt einen Backup- oder Transaktions -Rollback -Mechanismus. Schlüsselpunkt: Transaktionsrollback: Führen Sie einen Rollback aus, bevor die Transaktion Daten wiederherstellt. Sicherung: Regelmäßige Sicherung der Datenbank kann verwendet werden, um Daten schnell wiederherzustellen. Datenbank-Snapshot: Sie können eine schreibgeschützte Kopie der Datenbank erstellen und die Daten wiederherstellen, nachdem die Daten versehentlich gelöscht wurden. Verwenden Sie eine Löschanweisung mit Vorsicht: Überprüfen Sie die Bedingungen sorgfältig, um das Verhandlich von Daten zu vermeiden. Verwenden Sie die WHERE -Klausel: Geben Sie die zu löschenden Daten explizit an. Verwenden Sie die Testumgebung: Testen Sie, bevor Sie einen Löschvorgang ausführen.

See all articles