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

推薦する

CentOS サーバーに FFmpeg をインストールするための完全な手順

序文サーバーシステム環境は、CentOS 6.5 (最終) です。 FFmpeg をサーバーに正常に...

vue+springbootでログイン認証コードを実現

この記事では、ログイン認証コードを実装するためのvue+springbootの具体的なコードを例とし...

Mysqlのprepare前処理の具体的な使用法

目次1. 前処理2. 前処理塗布方法A. 例: B. 実行計画の変更を追跡するための前処理C. スト...

Vue の親子コンポーネントの値転送と一方向データフローの問題の詳細な説明

目次序文1. 親コンポーネントが子コンポーネントに値を渡す2. サブコンポーネントのprops型制約...

Ubuntu サーバーで MySQL を設定し、リモート接続を実装する方法

サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...

Vue の要素カレンダー コンポーネントを使用したサンプル コード

まず効果図を見てみましょう: 完全なコードは添付されています <テンプレート> <...

スプライトとフォントアイコンを実装するためのCSS

スプライト:以前は、各画像リソースは独立した画像でした。ブラウザが Web サイト内のさまざまな W...

HTML 固定タイトル列、タイトル ヘッダー テーブル固有の実装コード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Dockerコンテナ間の通信と外部ネットワーク通信の操作

コンテナ間の通信1. コンテナのネットワーク共有このモードの Docker コンテナはネットワーク ...

Linux で AIDE に基づいてファイルシステムの整合性を検出する方法

1. 補助AIDE (Advanced Instruction Detection Environm...

MySQL は、現在のデータ テーブル内のすべての時間に対して指定された時間間隔を増加または減少させます (推奨)

DATE_ADD() 関数は、指定された時間間隔を日付に追加します。現在のテーブル内のすべてのデー...

CSSアニメーション属性キーフレームの詳細な説明

コラムを更新してからどれくらい経ったでしょうか?半年ですか?今年の後半は、まさに離陸、つまり文字通り...

HTML の iframe と frame の違いを例を使って説明します

プロジェクトで frameset 属性を使用したことがあるかどうかはわかりません。昨年、オンライン ...

Nofollowタグの書き方と使い方

「nofollow」タグは数年前に Google、Yahoo、Microsoft によって提案されま...