Datenbankübergreifende Assoziationsabfragemethode in MySQL

Datenbankübergreifende Assoziationsabfragemethode in MySQL

Geschäftsszenario: Abfragen von Tabellen in verschiedenen Datenbanken

Die zu verknüpfenden Tabellen sind beispielsweise: Tabelle A in Datenbank A auf Maschine A und Tabelle B in Datenbank B auf Maschine 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, was ein echter Krampf ist. .

Lösung: Erstellen Sie eine Tabelle B in Datenbank A auf Computer A. . .

Ich mache keine Witze, wir verwenden die Methode zum Erstellen von Tabellen basierend auf der föderierten Engine von MySQL.

Beispiel einer Anweisung zur Tabellenerstellung:

CREATE TABLE `table_name`(......) ENGINE = FEDERATED CONNECTION = 'mysql://[Benutzername]:[Passwort]@[Standort]:[Port]/[Datenbankname]/[Tabellenname]'

Voraussetzung: Ihr MySQL muss die föderierte Engine unterstützen (führen Sie „show engines“ aus, um zu prüfen, ob sie unterstützt wird).

Wenn eine FEDERATED-Engine vorhanden ist, aber der Support auf NO steht, bedeutet dies, dass Ihr MySQL diese Engine installiert, aber nicht aktiviert hat. Fügen Sie am Ende der Datei my.cnf eine Zeile „federated“ hinzu und starten Sie MySQL neu.

Wenn überhaupt keine FEDERATED-Zeile vorhanden ist, bedeutet dies, dass Ihre MySQL-Engine nicht installiert ist und Sie nicht glücklich spielen können. Bitten Sie am besten Ihren Betrieb und Ihre Wartung, das Problem zu beheben, da der nächste Schritt relativ groß ist und ich nicht weiß, wie ich das machen soll.

Erklärung: Die von der FEDERATED-Engine erstellte Tabelle verfügt nur über eine lokale Tabellendefinitionsdatei, und die Datendatei befindet sich in der Remote-Datenbank. Mit dieser Engine können Remote-Datenzugriffsfunktionen ähnlich wie DBLINK unter Oracle implementiert werden. Das heißt, diese Methode zur Tabellenerstellung erstellt nur eine Tabellenstrukturdatei der Tabelle B in Datenbank A. Der Tabellenindex, die Daten und andere Dateien befinden sich weiterhin in Datenbank B auf Maschine B. Dies entspricht der Erstellung einer Verknüpfung zu Tabelle B in Datenbank A.

Der Schmerz in den Eiern ist also weg. .

Einige Hinweise:

1. Die lokale Tabellenstruktur muss exakt mit der Remote-Tabelle übereinstimmen.

2. Die Remote-Datenbank ist derzeit auf MySQL beschränkt

3. Keine Unterstützung für Transaktionen

4. Die Änderung der Tabellenstruktur wird nicht unterstützt

Andere Internetnutzer fügten hinzu:

Tabelle erstellen, wenn `logintoken` nicht vorhanden ist (
`id` int(11) NICHT NULL AUTO_INCREMENT,
`Typ` char(1) NICHT NULL STANDARD '0',
`loginName` varchar(20) DEFAULT NULL,
`Token` varchar(2000) DEFAULT NULL,
`tokenExpiredTime` Zeitstempel NULL DEFAULT NULL,
PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=FEDERATED CONNECTION='mysql://root:[email protected]:3306/zysso/logintoken';

Um die Remote-5.12-Logintoken-Tabelle zu verwenden, müssen Sie FEDERATED nur selbst aktivieren. 5.12 muss es nicht aktivieren.

Das könnte Sie auch interessieren:
  • Beispiel einer datenbankübergreifenden Abfrage in MySQL
  • Beispiel für eine gemeinsame MySQL-Remote-Datenbankabfrage

<<:  Lösung zur Codeaufteilung im Vue-Projekt

>>:  Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte

Artikel empfehlen

VUE führt die Implementierung der Verwendung von G2-Diagrammen ein

Inhaltsverzeichnis Über G2 Chart verwenden Vollst...

Detaillierte Erklärung der MySQL-Berechtigungssteuerung

Inhaltsverzeichnis MySQL-Berechtigungskontrolle B...

Grundlegende Syntax und Funktionsweise der MySQL-Datenbank

Grundlegende Syntax der MySQL-Datenbank DDL-Opera...

Eine kurze Diskussion über den virtuellen Speicher von Linux

Inhaltsverzeichnis Herkunft Virtueller Speicher P...

MySQL-Serie 9 MySQL-Abfrage-Cache und -Index

Inhaltsverzeichnis Tutorial-Reihe 1. MySQL-Archit...

MySQL verwendet ein Limit, um die Beispielmethode für Paging zu implementieren

1. Grundlegende Implementierung des Limits Im All...

Zusammenfassung der Situationen, in denen MySQL-Indizes nicht verwendet werden

Indextypen in MySQL Im Allgemeinen können sie in ...

Tutorial zur Installation und Konfiguration von Hbase unter Linux

Inhaltsverzeichnis Hbase-Installation und -Konfig...

Detaillierte Erklärung, wo die von Docker abgerufenen Bilder gespeichert werden

Die vom Docker abgerufenen Befehle werden standar...