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に基づくコードセットは複数のプロジェクトをサポートします

推薦する

Reactソースコードにおけるビット演算について詳しく説明します

目次序文いくつかの一般的なビット操作ビットAND (&)ビットOR (|)ビット否定(~)マ...

要素のフォームコンポーネントに関する注意事項

要素フォームとコード表示詳細はエレメントフォーム公式サイトをご覧ください構造と機能の分析紹介とソース...

Ubuntu 18.04 Server に静的 IP を設定する方法

1. 背景Netplan は、Ubuntu システムのネットワーク設定を簡単に管理および構成できるよ...

yumコマンドの使い方

1. yumの紹介Yum (フルネームは Yellow dogUpdater、Modified) は...

Vueカスタムディレクティブを使用してドラッグアンドドロッププラグインを構築する方法

HTML5 のドラッグ アンド ドロップ機能は誰もが知っていますが、これを使用するとドラッグ アンド...

フォーム内のどの隠し属性をフォームとともに送信できるか

フォーム内の visibility=hidden および display=none のフォーム要素は...

Linux の一般的な Java プログラム起動スクリプトのコード例

シェルを起動する頻度は非常に低いですが。 。 。しかし、書くたびに、多くの jar ファイル パスを...

Vue.js アプリケーションのパフォーマンス最適化分析 + ソリューション

目次1. はじめに2. Vue JS のパフォーマンス最適化が必要な理由は何ですか? 3. Vueの...

Vueは3段階のナビゲーション表示と非表示を実装します

この記事では、3階層ナビゲーションの表示と非表示を実現するためのVueの具体的なコードを例として紹介...

MySQL 5.7 のインストールと設定のチュートリアル

この記事では、参考までにMySQLのインストールと設定のチュートリアルを紹介します。具体的な内容は次...

Docker での WSL の構成と変更の問題について

https://docs.microsoft.com/ja-jp/windows/wsl/wsl-...

JavaScript のよりエレガントなエラー処理方法 async await

目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...

MYSQL での Truncate の使用法の詳細な説明

この記事のガイド: テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TR...

Vueはタブ切り替えを実装します

この記事では、タブ切り替えを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

XHTML 入門チュートリアル: よく使われる XHTML タグ

<br />記事と同様に、Web ページにも明確な段落と重要度の異なるタイトルが必要です...