Die SQL ist sehr einfach zu bedienen und benutzereffizient, da die Befehle eine einfache Syntax haben. Die Effizienz des SQL-Befehls hängt jedoch von den verschiedenen Datenbankfunktionen ab, insbesondere in Bezug auf ihre individuelle Rechenzeit. Außerdem bedeutet die Effizienz der Sprache nicht, dass die Optimierung der Sprache auch einfacher wäre. Jede Datenbank erfordert eine individuelle Anpassung an ihre Bedürfnisse.
Deshalb ist es ratsam, die beste SQL-Datenbank zu verwenden und verschiedene Möglichkeiten zu kennen, die Datenbank zu optimieren oder zu verbessern, um die beste Leistung aus ihr herauszuholen. Der Umfang der Optimierung der SQL-Datenbank für Entwickler, wie z. B. Senior Java j2ee-Entwickler, unterscheidet sich in mancher Hinsicht von der Arbeit eines Datenbankadministrators (DBA) und gleicht sich in anderer Hinsicht. In großen Unternehmen müssen Entwickler und DBAs oft zusammenarbeiten, wobei es häufig zu Konflikten zwischen den beiden Teams kommt. Es gibt verschiedene Möglichkeiten, SQL-Datenbanken zu tunen.
- NEXT GENERATION DEVOPS: VALUE STREAM MANAGEMENT
- WIE SIE IHR SERVERLESS-TEAM VERGRÖßERN
- MLOPS: CONTINUOUS DELIVERY OF MACHINE LEARNING SYSTEMS
- Proper indexing
- MEHR SEHEN: Top-Datenbanken im Jahr 2017: Trends für SQL, NoSQL, Big Data, Fast Data
- Nur die relevanten Daten abrufen
- Korrelierte Unterabfragen loswerden
- MEHR SEHEN: Team MySQL gegen Team PostgreSQL: Diese Unternehmen setzen auf sie
- Temporäre Tabellen je nach Anforderung verwenden oder vermeiden
- Codierschleifen vermeiden
- Ausführungspläne
NEXT GENERATION DEVOPS: VALUE STREAM MANAGEMENT
Helen Beal (DevOps Institute.)
WIE SIE IHR SERVERLESS-TEAM VERGRÖßERN
Sheen Brisals (The LEGO Group)
MLOPS: CONTINUOUS DELIVERY OF MACHINE LEARNING SYSTEMS
Hauke Brammer (finpair GmbH)
Proper indexing
Index ist im Grunde eine Datenstruktur, die hilft, den Datenabruf insgesamt zu beschleunigen. Ein eindeutiger Index ist eine Art der Indizierung, bei der separate Datenspalten erstellt werden, die sich nicht überschneiden. Eine ordnungsgemäße Indizierung gewährleistet einen schnelleren Zugriff auf die Datenbank. Übermäßige Indizierung oder gar keine Indizierung sind beide falsch. Ohne jegliche Indizierung wird die Verarbeitung sehr langsam sein, während eine vollständige Indizierung die Einfüge- und Aktualisierungstrigger unwirksam macht.
MEHR SEHEN: Top-Datenbanken im Jahr 2017: Trends für SQL, NoSQL, Big Data, Fast Data
Nur die relevanten Daten abrufen
Die Spezifizierung der benötigten Daten ermöglicht eine präzise Abfrage. Die Verwendung der Befehle *
und LIMIT
anstelle von SELECT *
nach Bedarf ist eine gute Möglichkeit, die Datenbank zu optimieren und gleichzeitig zu vermeiden, dass der gesamte Datensatz abgerufen wird, wenn der Benutzer nur einen bestimmten Teil davon wünscht. Natürlich ist dies nicht notwendig, wenn die Datenmenge insgesamt geringer ist. Aber wenn man auf Daten aus einer großen Quelle zugreift, kann man durch die Angabe der benötigten Teile viel Zeit sparen.
Der Befehl *
ist für die Angabe von Daten aus Spalten gedacht, und der Befehl LIMIT
, wenn der Benutzer Daten aus einer bestimmten Anzahl von Zeilen aus der Menge benötigt. Sparsam zu selektieren ist nicht unbedingt notwendig. Sie trägt jedoch dazu bei, Systemfehler in Zukunft zu vermeiden. Außerdem wird durch die Einschränkung und Spezifizierung der Daten die Notwendigkeit einer weiteren Optimierung der Datenbank erheblich verringert.
Korrelierte Unterabfragen loswerden
Eine korrelierte Unterabfrage hängt im Grunde von der übergeordneten oder äußeren Abfrage ab. Diese Art der Suche wird Zeile für Zeile durchgeführt. Das bedeutet, dass sie die Gesamtgeschwindigkeit des Prozesses verringert. Das Problem liegt in der Regel in dem Befehl WHERE
der äußeren Abfrage, mit dem die Unterabfrage für jede Zeile ausgeführt wird, die von der übergeordneten Abfrage zurückgegeben wird, was den gesamten Prozess verlangsamt und die Effizienz der Datenbank verringert. Eine bessere Möglichkeit, die Datenbank zu optimieren, ist in diesem Fall der Befehl INNER JOIN
anstelle der korrelierten Unterabfrage. Aber in bestimmten Fällen ist die Verwendung der korrelierten Unterabfrage unerlässlich.
MEHR SEHEN: Team MySQL gegen Team PostgreSQL: Diese Unternehmen setzen auf sie
Temporäre Tabellen je nach Anforderung verwenden oder vermeiden
Wenn ein Code auf einfache Weise gut geschrieben werden kann, gibt es absolut keine Notwendigkeit, ihn mit temporären Tabellen zu verkomplizieren. Natürlich ist es in solchen Fällen empfehlenswert, temporäre Tabellen zu verwenden, wenn ein bestimmtes Verfahren eingerichtet werden muss, das mehrere Abfragen erfordert. Temporäre Tabellen werden oft durch Unterabfragen abgewechselt, aber man muss die spezifische Effizienz berücksichtigen, die jede dieser Abfragen in einzelnen Fällen bieten würde.
Codierschleifen vermeiden
Die Vermeidung von Codierschleifen ist sehr wichtig, um eine Verlangsamung des gesamten Ablaufs zu vermeiden. Dies kann erreicht werden, indem die eindeutigen Befehle UPDATE
oder INSERT
mit einzelnen Zeilen verwendet werden und indem sichergestellt wird, dass der Befehl WHERE
die gespeicherten Daten nicht aktualisiert, wenn er passende, bereits vorhandene Daten findet.
Ausführungspläne
Die vom Optimierer erstellten Ausführungspläne spielen eine wichtige Rolle beim Tuning von SQL-Datenbanken. Sie helfen auch bei der Erstellung geeigneter Indizes. Seine Hauptfunktion besteht jedoch darin, die verschiedenen Methoden zum Abrufen von Daten grafisch darzustellen. Dies wiederum hilft bei der Erstellung der benötigten Indizes und den anderen erforderlichen Schritten zur Optimierung der Datenbank.
Natürlich gibt es noch viele andere Möglichkeiten, wie man seine SQL-Datenbank auf die effizienteste Weise optimieren kann. Außerdem besteht eine große Chance, dass die oben genannten Schritte nicht für alle Datenbanken die richtige Wahl sind. Jede Datenbank erfordert Optimierungsmethoden, die speziell auf ihre Bedürfnisse zugeschnitten sind.