Die folgende Liste beschreibt einige wichtige Charakteristika von MySQL. Weitere Informationen sind unter Abschnitt 1.6, „MySQL-Roadmap“, zu finden.
Interna und Portabilität:
Geschrieben in C und C++.
Getestet mit einer großen Anzahl unterschiedlicher Compiler.
Läuft auf vielen Plattformen, siehe Abschnitt 2.1.1, „Betriebssysteme, die von MySQL unterstützt werden“.
Benutzt aus Gründen der Portabilität GNU Automake, Autoconf und Libtool.
APIs für C, C++, Eiffel, Java, Perl, PHP, Python, Ruby und Tcl stehen zur Verfügung, siehe Kapitel 24, APIs und Bibliotheken.
Voll multithread-fähig unter Benutzung von Kernel-Threads. Das bedeutet, dass Sie sehr einfach mehrere Prozessoren benutzen können, falls verfügbar.
Enthält transaktionale und nichttransaktionale Speicher-Engines.
Verwendet sehr schnelle B-Baum-Festplatten-Tabellen
(MyISAM
) mit Indexkompression.
Es ist verhältnismäßig einfach, neue Speicher-Engines hinzuzufügen. Das ist praktisch, wenn man beispielsweise einer Inhouse-Datenbank eine SQL-Schnittstelle hinzufügen möchte.
Ein sehr schnelles thread-basiertes Speicherzuordnungssystem.
Sehr schnelle Joins durch Benutzung eines optimierten Multi-Joins in einem Durchgang.
Im Arbeitsspeicher gehaltene Hash-Tabellen, die als temporäre Tabellen benutzt werden.
SQL-Funktionen sind durch eine hochoptimierte Klassenbibliothek implementiert und sollten so schnell sein, wie es überhaupt geht. Üblicherweise gibt es keinerlei Speicherzuordnung nach der Initialisierung von Anfragen.
Keine Speicherlecks (memory leaks). MySQL wird mit Purify getestet, einem kommerziellen Werkzeug zur Entdeckung von Speicherlecks, und mit Valgrind, einem GPL-Werkzeug (http://developer.kde.org/~sewardj/).
Der Server ist als separates Programm verfügbar, das in einer vernetzten Client-Server-Umgebung arbeitet. Es ist auch als Bibliothek erhältlich, die in Einzelanwendungen eingebettet werden kann. Solche Applikationen können isoliert oder in Umgebungen eingesetzt werden, in denen kein Netzwerk zur Verfügung steht.
Datentypen:
Viele Datentypen: vorzeichenbehaftete und vorzeichenlose
Integers, die 1, 2, 3, 4 und 8 Byte lang sein können,
FLOAT
, DOUBLE
,
CHAR
, VARCHAR
,
TEXT
, BLOB
,
DATE
, TIME
,
DATETIME
, TIMESTAMP
,
YEAR
, SET
,
ENUM
und OpenGIS-Typen (raumbezogene
Daten). Siehe Kapitel 11, Datentypen.
Datensätze fester und variabler Länge.
Anweisungen und Funktionen:
Volle Operator- und Funktionsunterstützung in
SELECT
- und
WHERE
-Klauseln von Abfragen. Beispiel:
mysql>SELECT CONCAT(first_name, ' ', last_name)
->FROM citizen
->WHERE income/dependents > 10000 AND age > 30;
Volle Unterstützung der SQL-Klauseln GROUP
BY
und ORDER BY
. Unterstützung
von Gruppierungsfunktionen (COUNT()
,
COUNT(DISTINCT ...)
,
AVG()
, STD()
,
SUM()
, MAX()
,
MIN()
und
GROUP_CONCAT()
).
Unterstützung von LEFT OUTER JOIN
und
RIGHT OUTER JOIN
sowohl mit Standard-SQL-
als auch mit ODBC-Syntax.
Unterstützung für Aliase auf Tabellen und Spalten, wie im SQL-Standard verlangt.
DELETE
, INSERT
,
REPLACE
und UPDATE
geben
die Anzahl der geänderten (betroffenen) Zeilen zurück. Durch
Setzen eines Flags beim Verbinden mit dem Server lässt sich
stattdessen die Anzahl der übereinstimmenden Zeilen
zurückgeben.
Die MySQL-spezifische Anweisung SHOW
kann
zum Abruf von Informationen über Datenbanken,
Speicher-Engines, Tabellen und Indizes verwendet werden.
Mit der Anweisung EXPLAIN
lässt sich
feststellen, wie der Optimierer eine Abfrage auflöst.
Funktionsnamen vertragen sich mit Tabellen- und Spaltennamen.
Beispielsweise ist ABS
ein gültiger
Spaltenname. Als einzige Einschränkung dürfen bei einem
Funktionsaufruf dem Funktionsnamen keine Leerzeichen folgen,
siehe Abschnitt 9.5, „Ist MySQL pingelig hinsichtlich reservierter Wörter?“.
Ab MySQL 3.22 können Tabellen in unterschiedlichen Datenbanken in einer Abfrage verwendet werden.
Sicherheit:
MySQL besitzt ein sehr flexibles und sicheres Berechtigungs- und Kennwortsystem, das Host-basierte Überprüfung unterstützt. Kennwörter sind sicher, weil jegliche Übermittlung beim Verbinden mit dem Server verschlüsselt erfolgt.
Skalierbarkeit und Grenzen:
Handhabt große Datenbanken. Wir selbst benutzen Datenbanken mit mehr als 50 Millionen Datensätzen und kennen Benutzer, die MySQL Server mit 60.000 Tabellen und über 5 Milliarden Zeilen benutzen.
Pro Tabelle sind bis zu 64 Indizes erlaubt (32 vor MySQL
4.1.2). Jeder Index kann aus 1 bis 16 Spalten oder
Spaltenteilen bestehen. Die größte Indexweite beträgt 1.000
Byte (500 vor MySQL 4.1.2). Indizes können Präfixe einer
Spalte bei folgenden Spaltentypen verwenden:
CHAR
, VARCHAR
,
BLOB
und TEXT
.
Konnektivität:
Clients können sich mit dem MySQL Server über TCP/IP-Sockets verbinden. Das ist auf jeder Plattform möglich. Auf Windows-Systemen der NT-Serie (NT, 2000, XP, 2003, Vista) können sich Clients mittels Named Pipes verbinden. Auf Unix-ähnlichen Systemen können Clients Unix-Domain-Socketdateien verwenden.
Ab MySQL 4.1 werden unter Windows auch
Shared-Memory-Verbindungen unterstützt, wenn der Server mit
der Option --shared-memory
gestartet wurde.
Clients können sich über Shared Memory mit der Option
--protocol=memory
verbinden.
Die Schnittstelle Connector/ODBC (MyODBC) stellt MySQL-Unterstützung für Clientprogramme zur Verfügung, die ODBC (Open Database Connectivity) benutzen. Beispielsweise können sie damit von MS Access auf MySQL Server zugreifen. Clients können unter Windows und Unix laufen. Der Quellcode von MyODBC ist offen. Alle Funktionen von ODBC 2.5 werden unterstützt sowie darüber hinaus viele weitere, siehe Kapitel 25, Connectors.
Die Schnittstelle Connector/J stellt MySQL-Unterstützung für Java-Clientprogramme zur Verfügung, die JDBC-Verbindungen benutzen. Clients können unter Windows und Unix laufen. Der Quellcode von Connector/J ist offen. Siehe Kapitel 25, Connectors.
Mit MySQL Connector/NET können Entwickler auf einfache Art .NET-Applikationen entwickeln, die sichere, hochperformante Datenverbindungen mit MySQL benötigen. Es enthält die erforderlichen ADO.NET-Schnittstellen und lässt sich in Werkzeuge einbinden, die ADO.NET-kompatibel sind. Entwickler können Applikationen mit der .NET-Sprache ihrer Wahl herstellen. MySQL Connector/NET ist ein voll verwalteter ADO.NET-Treiber, der zu 100 % in C# geschrieben wurde, siehe Kapitel 25, Connectors.
Lokalisierung:
Der Server kann Clients Fehlermeldungen in vielen Sprachen ausgeben, siehe Abschnitt 5.11.2, „Nicht englische Fehlermeldungen“.
Volle Unterstützung für diverse Zeichensätze,
beispielsweise latin1
(cp1252),
german
, big5
,
ujis
. In Tabellen- und Spaltennamen sind
beispielsweise die Zeichen
‘å
’,
‘ä
’ und
‘ö
’ zulässig. Ab MySQL 4.1
wird Unicode unterstützt.
Alle Daten werden mit dem ausgewählten Zeichensatz gespeichert. Alle Vergleiche für normale String-Spalten unterscheiden nicht nach Groß- und Kleinschreibung.
Sortierungen werden mit dem ausgewählten Zeichensatz durchgeführt, wobei die schwedische Sortierfolge als Vorgabe ausgewählt ist. Das lässt sich beim Start des MySQL Servers ändern. Schauen Sie sich als Beispiel einer fortgeschrittenen Sortierfolge den tschechischen Sortiercode an. MySQL Server unterstützt viele verschiedene Zeichensätze, die beim Kompilieren von MySQL sowie zur Laufzeit angegeben werden können.
Clients und Werkzeuge:
MySQL Server hat eingebaute SQL-Anweisungen zum Prüfen,
Optimieren und Reparieren von Tabellen. Diese Anweisungen sind
auch von der Befehlszeile aus zugänglich, über das
Clientprogramm mysqlcheck. Darüber hinaus
enthält MySQL myisamchk, ein sehr
schnelles Hilfsprogramm zum Durchführen dieser Operationen
auf MyISAM
-Tabellen, siehe
Kapitel 5, Datenbankverwaltung.
Alle MySQL-Programme können mit den Optionen
--help
und -?
aufgerufen
werden, die direkte Hilfestellungen anzeigen.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.