Donnerstag, 28. April 2016

April 2016 - MySQL

Im "Modul 151 - Datenbanken in Internetauftritten einbinden" verwenden wir als Datenbank MySQL. Ich habe bisher nur einige Male etwas mit MySQL zu tun gehabt, deshalb möchte ich in diesem Blogeintrag darüber schreiben.


MySQL

Bei MySQL handelt es sich um ein relationales Datenbankenverwaltungssystem. Da es für viele verschiedene Betriebssysteme verfügbar ist, ist es eines der am verbreitetsten Systeme und bildet die Grundlage sehr vieler dynamischer Websites. MySQL wird bereits seit 1994 entwickelt. MySQL wird vorzugsweise zur Datenspeicherung von Webdiensten verwendet und wird dabei häufig in Verbindung mit dem WebServer Apache und PHP eingesetzt, kann jedoch auch für gewöhnliche Desktopapplikationen eingesetzt werden. Die meisten bekannten Websites wie YouTube, Facebook, Twitter, Google etc. verwenden dieses System.


Plattfomen

Wie bereits erwähnt, ist MySQL für viele verschiedene Plattformen verfügbar. Diese sind unter anderem Windows, Mac OS X, Linux und viele Unix-Varianten. Weiterhin ist MySQL auch auf den Betriebssystemen OS/2 und i5/OS sowie Symbian lauffähig.


Verwendung/Struktur

Die Verwendung von MySQL sieht im Allgemeinen so aus, dass ein MySQL-Server, auf welchem die Daten abgespeichert sind, vorhanden ist. Von den Clients werden Anfragen an den Server geschickt, die dieser beantwortet. 
Im Datenbankmanagementsystem können mehrere Datenbanken erstellt und verwaltet werden. In einer Datenbank werden eine oder mehrere Tabellen angelegt. MySQL erstellt dann auf der Festplatte jeweils einen Ordner pro Datenbank, in dem Dateien für die Struktur und die Daten der einzelnen Tabellen abgelegt werden.
Die Spalten der Tabellen haben jeweils einen Datentypen zugeordnet, so dass in der jeweiligen Spalte nur Daten dieses Typs abgespeichert werden können.


Ablauf von Anfragen

Wenn ein Client eine Anfrage an den Server schickt, ist dieser dafür verantwortlich, die Anfrage so performant wie möglich abzuarbeiten.
Dazu wird als erstes der Query-Cache befragt. Der Query-Cache ist ein Zwischenspeicher, in dem die Ergebnisse von Anfragen gespeichert werden. Der Zwischenspeicher bleibt so lange erhalten, bis sich etwas an den Daten in der Datenbank ändert. Befindet sich also nun im Query-Cache eine identische Abfrage wie die, die gerade gestellt wurde, gibt der Server die Antwort aus dem Cache und muss nicht die gesamte Datenbank nochmals befragen. 
Befindet sich keine identische Abfrage im Query-Cache, wird die erhaltene Query zuerst geparst. Das heisst, sie wird zunächst mal auf die Syntax überprüft. Dazu wird sie in die einzelnen Komponenten zerlegt. Gleichzeitig werden grundlegende Informationen über die Query gesammelt, wie etwa die Art der Query (Select- , Insert-, Set-, oder Grant-Statement), sowie die betroffenen Tabellen. Am Ende kennt MySQL den vollständigen Parse-Baum, der danach optimiert wird.
Optimiert wird jede Query, die syntaktisch in Ordnung ist. Der sogenannte Optimizer sucht nach dem effizientesten Weg, die Query zu bearbeiten. In diesem Schritt geht es hauptsächlich darum, die Anzahl der zu lesenden Datensätze zu verringern. Das kann zum Beispiel erreicht werden, wenn bei Datensätzen, die aus mehreren Tabellen gelesen werden müssen, eine geschickte Abfragereihenfolge gewählt wird. Andererseits werden nicht benötigte Tabellen in Join-Anweisungen erst gar nicht gelesen. Nach dieser Prozedur stehen dem Optimizer alternative Möglichkeiten zum Finden der Daten zur Verfügung. Für jede Möglichkeit wird die Ausführungsgeschwindigkeit abgeschätzt und zum Schluss diejenige mit der kürzesten Zeit ausgewählt und durchgeführt.

Speichersubsysteme

In MySQL sind verschiedene Speichersubsysteme enthalten. Speichersubsysteme sind Engines, die sich insofern unterscheiden, als sie jeweils für andere Einsatz-Szenarien optimiert sind. Ausserdem bieten diese Engines mehr Funktionalitäten als reine Speichersubsysteme. Die einzelnen Engines bieten unterschiedliche Funktionen an und weisen je nach Einsatzgebiet auch eine unterschiedliche Performance auf. Je nachdem wozu eine Tabelle genutzt wird, z.B. mehrheitlich lesen oder hauptsächlich schreiben, sollte eine passende Speicherengine gewählt werden. Der Entscheid für oder gegen eine Engine hängt auch von den gegebenen Funktionalitäten ab.
MySQL kann auch mit eigenen Speicherengines erweitert werden.



Administration

Für die Verwaltung und Administration von MySQL-Datenbanken steht der mitgelieferte Kommandozeilen-Client zur Verfügung. Weitere Kommandozeilenwerkzeuge sind im Funktionsumfang enthalten. Beispielsweise Tools zur Anzeige von Metadaten einer Datenbank oder Tabelle, anzeigen von erweiterten Informationen zu Fehlercodes sowie Import und Export von Tabellenstrukturen.
Als grafische Benutzeroberfläche zur Verwaltung wird MySQL Workbench angeboten.


Mysqlwb-homepage.png
MySQL Workbench


Als Alternative gibt es die Open-Source-Anwendung phpMyAdmin, die beispielsweise auch zusammen mit XAMPP geliefert wird. Die Benutzeroberfläche lässt sich über den Browser bedienen. phpMyAdmin wird hauptsächlich zur Verwaltung von MySQL-Datenbanken auf WebServern verwendet.

Bildschirmfoto von phpMyAdmin
phpMyAdmin


Keine Kommentare:

Kommentar veröffentlichen