Heim >Datenbank >MySQL-Tutorial >Beispiel einer datenbankübergreifenden Assoziationsabfragemethode in MySQL
In diesem Artikel wird hauptsächlich die datenbankübergreifende Abfragemethode in MySQL vorgestellt. Freunde, die sie benötigen, können darauf verweisen.
Geschäftsszenario: Abfrage zum Zuordnen von Tabellen in verschiedenen Datenbanken
Die zuzuordnenden Tabellen sind beispielsweise: Tabelle A in Datenbank A auf Maschine A && Datenbank B auf Maschine B Tabelle B.
In diesem Fall ist es unmöglich, „select A.id,B.id from A left join B on ~~~;“ auszuführen, aber die Geschäftsanforderungen sind unveränderlich und das Datenbankdesign ist unveränderlich ist so schmerzhaft. .
Lösung: Erstellen Sie eine Tabelle B in Datenbank A auf Maschine A. . .
Natürlich mache ich keine Witze. Wir verwenden eine Tabellenerstellungsmethode, die auf der föderierten Engine von MySQL basiert.
Beispiel für eine Tabellenerstellungsanweisung:
CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'
Voraussetzung: Ihr MySQL muss die Verbund-Engine unterstützen (Show Engines ausführen; Sie können sehen, ob es unterstützt wird ).
Wenn es eine FEDERATED-Engine gibt, die Unterstützung jedoch NEIN ist, bedeutet das, dass Ihre MySQL diese Engine installiert, aber nicht aktiviert hat. Gehen Sie zum Ende der my.cnf-Datei und fügen Sie eine föderierte Zeile hinzu und starten Sie MySQL neu Um dies zu erledigen, müssen Sie zu Hause arbeiten und warten, da die nächste Aktion relativ umfangreich ist und ich nicht weiß, wie ich sie ausführen soll.
Erklärung: Die über die FEDERATED-Engine erstellten Tabellen haben nur eine Tabellendefinition Dateien lokal, und die Datendateien sind in der Remote-Datenbank vorhanden. Mit dieser Engine kann etwas Ähnliches wie bei Oracle erreicht werden. Laden Sie die Remote-Datenzugriffsfunktion von DBLINK herunter. Das heißt, diese Tabellenerstellungsmethode erstellt nur eine Tabellenstrukturdatei von Tabelle B in Datenbank A. Der Index, die Daten und andere Dateien der Tabelle befinden sich weiterhin in Datenbank B auf Maschine B, was dem einfachen Erstellen der Tabelle entspricht in Datenbank A. Eine Verknüpfung zu B.
Dadurch tut das Ei nicht mehr weh. .
Ein paar Punkte, die Sie beachten sollten:1. Die lokale Tabellenstruktur muss genau mit der Remote-Tabelle übereinstimmen.
2. Die Remote-Datenbank ist derzeit auf MySQL beschränkt
3 Transaktionen werden nicht unterstützt
4. Zusätzliche Kommentare von anderen Internetnutzern:
Um die Remote-Logintoken-Tabelle von 5.12 zu verwenden, müssen Sie FEDERATED nur selbst aktivieren. Es ist nicht erforderlich, es in 5.12 zu aktivieren .
CREATE TABLE IF NOT EXISTS `logintoken` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` char(1) NOT NULL DEFAULT '0', `loginName` varchar(20) DEFAULT NULL, `token` varchar(2000) DEFAULT NULL, `tokenExpiredTime` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.5.102:3306/zysso/logintoken';Wie Oracle datenbankübergreifende Abfragen implementiert
Lösung für das Problem der datenbankübergreifenden Transaktionskonsistenz (Beispiel)
[MSSQL]SQLServer datenbankübergreifende Abfrage
Das obige ist der detaillierte Inhalt vonBeispiel einer datenbankübergreifenden Assoziationsabfragemethode in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!