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

推薦する

ページを更新せずにフォームを送信するには iframe を使用します

そこで、この問題を解決するために埋め込みフレームワークを導入します。具体的な原則は、フォームがデータ...

JS上級編ES6の6つの継承方法

目次1. プロトタイプチェーン継承2. コンストラクタによる継承3. 組み合わせ継承4. プロトタイ...

MySQL 論理バックアップとリカバリ テストの概要

目次1. データベース論理バックアップとはどのようなバックアップですか? 2. よく使われる論理バッ...

データベース接続のURLの詳細な説明と概要

データベース接続のURLの詳細な説明と概要JDBC URL = プロトコル名 + サブプロトコル名 ...

CSS3 ボタン境界アニメーションの実装

まず効果を見てみましょう: html <a href="#"> &l...

DockerにTomcatコンテナを追加したときにホームページにアクセスできない問題の解決方法

質問docker run コマンドを使用して、tomcat コンテナが正常に追加されました。ポートも...

CSS における XHTML タグの対応する属性と使用法

XHTML CSS を使って Web ページをデザインし始めた頃は、タグの使用経験も少なく、あまり気...

デザイン協会: なぜ間違った場所を探したのですか?

数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...

曇り空のアイコン効果を実現する純粋な CSS

効果効果は以下のとおりです​実装のアイデアbox-shadow プロパティを使用して、複数の灰色の円...

Docker.v19 で Docker Compose オーケストレーション ツールをインストールして構成する方法

1. Compose の紹介Compose は、マルチコンテナ Docker アプリケーションを定義...

MySQLコマンドラインでSQLファイルを実行するいくつかの方法

目次最初の方法: MySQLデータベースが接続されていない場合2 番目の方法: データベースがすでに...

Linux のユーザーとグループ管理によく使われるコマンドの概要

この記事では、Linux のユーザーとグループの管理によく使用されるコマンドをまとめます。ご参考まで...

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

Vue で動的に読み込まれたローカル画像を処理する方法

問題を見つける今日は、vue ファイルにローカル画像を導入する際に問題が発生したので、この記事を書き...

VirtualBox6上のCentOS7で静的IPを設定する方法と注意点

VirtualBox をインストールした後、CentOS 7 をインストールします。ここでは詳細には...