MySQL におけるデータベース間関連クエリメソッド

MySQL におけるデータベース間関連クエリメソッド

ビジネスシナリオ: 異なるデータベース内のテーブルをクエリする

たとえば、関連付けられるテーブルは、マシン A 上のデータベース A のテーブル A と、マシン B 上のデータベース B のテーブル B です。

この場合、「select A.id,B.id from A left join B on ~~~;」を実行することはできませんが、ビジネス要件は不変であり、データベース設計は不変であるため、面倒です。 。

解決策: マシン A 上のデータベース A にテーブル B を作成します。 。 。

冗談ではなく、MySQL のフェデレーテッド エンジンに基づいてテーブルを構築する方法を使用しています。

テーブル作成ステートメントの例:

CREATE TABLE `table_name`(......) ENGINE = FEDERATED CONNECTION = 'mysql://[ユーザー名]:[パスワード]@[場所]:[ポート]/[db-name]/[テーブル名]'

前提条件: MySQL がフェデレーテッド エンジンをサポートしている必要があります (サポートされているかどうかを確認するには、show engines; を実行します)。

FEDERATED エンジンがあるのに、サポートが NO の場合、MySQL にこのエンジンがインストールされているが有効になっていないことを意味します。my.cnf ファイルの末尾に federated の行を追加し、MySQL を再起動します。

FEDERATED 行がまったくない場合は、MySQL エンジンがインストールされていないことを意味し、快適にプレイすることはできません。次のステップは比較的大きく、どのように実行すればよいか分からないため、運用と保守に修正を依頼するのが最善です。

説明: FEDERATED エンジンによって作成されたテーブルにはローカル テーブル定義ファイルのみがあり、データ ファイルはリモート データベースに存在します。このエンジンを使用すると、Oracle の DBLINK に類似したリモート データ アクセス機能を実装できます。つまり、このテーブル作成方法では、データベース A にテーブル B のテーブル構造ファイルのみが作成されます。テーブル インデックス、データ、およびその他のファイルは、マシン B のデータベース B に残ります。これは、データベース A にテーブル B へのショートカットを作成するのと同じです。

それで、睾丸の痛みはなくなりました。 。

注意すべき点がいくつかあります:

1. ローカル テーブル構造はリモート テーブル構造とまったく同じである必要があります。

2. リモートデータベースは現在MySQLに限定されています

3. トランザクションをサポートしていない

4. テーブル構造の変更はサポートされていません

他のネットユーザーはこう付け加えた。

`logintoken`が存在しない場合はテーブルを作成(
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` char(1) NOT NULL デフォルト '0',
`loginName` varchar(20) デフォルト NULL,
`token` varchar(2000) デフォルト NULL,
`tokenExpiredTime` タイムスタンプ NULL デフォルト NULL、
主キー (`id`)
)ENGINE=FEDERATED CONNECTION='mysql://root:[email protected]:3306/zysso/logintoken';

リモート 5.12 logintoken テーブルを使用するには、FEDERATED を自分で有効にするだけで済みます。5.12 では有効にする必要はありません。

以下もご興味があるかもしれません:
  • MySQL でのデータベース間クエリの例
  • MySQL リモートデータベース間結合クエリの例

<<:  Linux で scp コマンドを使用してファイルをリモートでコピーする方法の詳細な説明

>>:  Vue-cliに基づくコードセットは複数のプロジェクトをサポートします

推薦する

Win10 での MySQL 5.7 の詳細なインストールと設定のチュートリアル

1. MySQL 5.7を解凍する2. 新しい設定ファイルmy.iniを作成し、 D:\Free\m...

MySQL の乗算と除算の精度の不一致の問題 (除算後の小数点以下 4 桁)

質問今日、プロジェクト関数を書いていたとき、金額の統計計算を行い、単位を変換する必要がありました。そ...

MySQL シャーディング入門ガイド

序文リレーショナル データベースは、システムのボトルネックになる可能性が高くなります。単一のマシンの...

ローカルアイデアアクティベーションサーバーの構築に関する詳細なチュートリアル

序文ブロガーはアイデアIDEを使用しています。アイデア公式が最近サードパーティのアクティベーションサ...

React 国際化 react-i18next の詳細な説明

導入react-i18next は、 i18nextをベースにした強力な国際化フレームワークです。 ...

Dockerコンテナの原理の分析

目次01 コンテナの本質とは何か? 02 Cgroupテクノロジーと名前空間テクノロジーの概要03 ...

ローカルのMySQLをサーバーデータベースに移行する方法

Linux の scp コマンド (Windows では scp は使用できません) と、mysql...

ドラッグ位置プレビューを実装するネイティブJS

この記事では、要素をドラッグするときにプレビューを追加する小さなデモを紹介します。効果は次のとおりで...

Windows Server 2008 R2 に MySQL 5.7.10 をインストールする手順

MSIインストールパッケージを使用してインストールするご使用のオペレーティング システムに応じて、対...

Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策

Docker コンテナを適用する場合、多くの場合、ホスト ディレクトリを Docker コンテナにマ...

レスポンシブなアコーディオン効果を実現するための CSS3 の詳細な説明

最近、外国人が CSS3 を使用してアコーディオン効果を実現しているビデオを見たので、自分で学習した...

システム外のフォント参照とトランジション効果

コードをコピーコードは次のとおりです。 <span style="font-fami...

自作の Windows サーバーに egg アプリケーションを展開する方法 (画像とテキスト付き)

1. IEブラウザを使用してVPNにログインする 2. リモートログイン 3. サーバーに最新のn...

LambdaProbe を使用して Tomcat を監視する方法

導入: Lambda Probe (旧称 Tomcat Probe) は、Apache Tomcat...

WIN10 に複数のデータベースがインストールされている場合にコンピュータの速度低下を防ぐ方法

必要なときにサービスを有効にし、必要がないときは無効にします。データベース サービスを管理する方法:...