標準のストレジエンジン(MyISAM
、CSV
、InnoDB
など)のいずれかを使用してテーブルを作成すると,そのテーブルはテーブルの定義と関連データで構成されます。联邦
テーブルを作成すると,テーブル定義は同じですが,データの物理ストレージはリモートサーバーで処理されます。
联邦
テブルは2の要素で構成されます。
デタベステブルを持リモトサバ。テブル定義(
.frm
ファルに格納されます)と関連テブルで構成されます。リモトテブルのテブルタMyISAM
やInnoDB
を含む,リモトmysqld
サバがサポトするいずれのタ。デタベステブルを持ロカルサバ。テブルの定義は,リモ。テブル定義は
.frm
ファ邮箱ルに格納されます。ただし,ロ。その代わり,テ。
ロカルサバで联邦
テーブルにクエリーやステートメントを実行すると,一般的にローカルデータファイルの情報を挿入,更新,または削除する操作は,実行するために代わりにリモートサーバーに送られ,そこでリモートサーバーのデータファイルを更新したり,リモートサーバーから一致する行を戻したりします。
联邦
テブルのセットアップの基本的な構造は図15.1 " federatedテテブルの構造"で示します。
联邦
テーブルを参照するSQLステートメントをクライアントが発行する場合,ローカルサーバー(SQLステートメントが実行される場所)とリモートサーバー(データが物理的に格納される場所)の間の情報の流れは次のとおりです。
ストレジエンジンは
联邦
テーブルが持つ各カラムを調べて,リモートテーブルを参照する適当なSQLステートメントを構築します。ステトメントはMySQLクラAPIを使用してリモに送られます。
リモートサーバーはステートメントを処理し,ローカルサーバーはステートメントが作成した結果(影響を受けた行の数や結果セット)を取得します。
ステトメントが結果セットを作成する場合,各カラムは
联邦
エンジンが求める内部ストレージエンジン形式に変換され,元のステートメントを発行したクライアントに結果を表示するために使用できます。
ローカルサーバーは,MySQLクライアントのC API関数を使用してリモートサーバーと通信します。mysql_real_query ()
を呼び出して,ステトメントを送信します。結果セットを読み取るために,mysql_store_result ()
を使用し,mysql_fetch_row ()
を使用して1ず行をフェッチします。