Wenn Sie eine FEDERATED
-Tabelle anlegen,
erzeugt der Server eine Tabellen-Formatdatei im
Datenbankverzeichnis. Die Datei beginnt mit dem Tabellennamen
und hat die Erweiterung .frm
. Andere
Dateien werden nicht angelegt, da die eigentlichen Daten in
einer Remote-Tabelle vorliegen. Das steht im Gegensatz zu den
Speicher-Engines für lokale Tabellen.
Für lokale Datenbanktabellen liegen auch die Datendateien lokal
vor. Wenn Sie beispielsweise eine
MyISAM
-Tabelle namens
users
anlegen, erzeugt der
MyISAM
-Handler eine Datendatei namens
users.MYD
. Ein Handler für lokale Tabellen
liest, ergänzt, löscht und aktualisiert Daten in lokalen
Datendateien und die Zeilen werden in einem für den Handler
spezifischen Format gespeichert. Um Datenzeilen zu lesen, muss
der Handler die Daten in Spalten parsen, und um Zeilen zu
schreiben, müssen die Spaltenwerte in das vom Handler benutzte
Zeilenformat umgewandelt und in die lokale Datendatei
geschrieben werden.
Doch bei der MySQL-Speicher-Engine FEDERATED
existieren lokal keine Datendateien für eine Tabelle (es gibt
beispielsweise keine .MYD
-Datei).
Stattdessen speichert eine entfernte Datenbank die Daten, die
normalerweise in der Tabelle vorliegen würden. Der lokale
Server verbindet sich mit einem entfernten Server und liest,
löscht, aktualisiert und ergänzt die Daten in der entfernten
Tabelle über eine MySQL-API. Abgefragt werden die Daten mit
einer SELECT * FROM
-SQL-Anweisung. Um
das Ergebnis zu lesen, werden die Zeilen eine nach der anderen
mit der C-API-Funktion tbl_name
mysql_fetch_row()
abgeholt. Danach werden die Spalten der
SELECT
-Ergebnismenge in das vom
FEDERATED
-Handler erwartete Format
umgewandelt.
Der Informationsfluss ist wie folgt:
Lokaler SQL-Aufruf
MySQL-Handler-API (Daten im Format des Handlers)
MySQL-Client-API (Daten werden in SQL-Aufrufe konvertiert)
Remote-Datenbank -> MySQL-Client-API
Ergebnismengen (sofern vorhanden) werden in Handler-Format konvertiert
Handler-API -> Ergebniszeilen oder Zahl der betroffenen Zeilen werden lokal angegeben
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.