FEDERATED
ストレージエンジンを使用する時は、次の点に注意する必要があります。
FEDERATED
テーブルは他のスレーブに複製されることもあります。しかし、リモートサーバに接続するためには、スレーブサーバがCONNECTION
(または
mysql.servers
テーブルのレコード)で定義されたユーザ/パスワードの組み合わせを確実に利用できなければいけません。
次の項目は FEDERATED
ストレージエンジンがサポートする、またはしない特徴を指定します。
最初のバージョンでは、リモートサーバはMySQLサーバでなければいけませんでした。FEDERATED
によるその他のデータベースエンジンのサポートは将来追加される可能性があります。
FEDERATED
テーブルを指し示すリモートテーブルはFEDERATED
テーブルを通してそこにアクセスしようと試みる前に既に存在していなければいけません。
一つのFEDERATED
テーブルが他の物を指し示す事は可能ですが、その時ループを作成しないように気をつける必要があります。
FEDERATED
テーブル上で
大量挿入(例えば INSERT INTO ... SELECT
...
ステートメント上で)などを行う時は、それぞれの選択されたレコードがfederated
テーブル上で個別のINSERT
ステートメントとして扱われるので、他のテーブルタイプで行う時と比べると動作は遅いです。
トランザクションはサポートされていますが、現在は配信されたトランザクション(XA)サポートされていません。
FEDERATED
エンジンは、リモートテーブルが変えられているかどうかを知る事はできません。それは、このテーブルはデータベース以外の物には書き込まれる事がない、データファイルのように機能しなければいけないからです。ローカルテーブル内のデータのインテグリティは、リモートデータベースに何か変更があると破壊される事があります。
FEDERATED
ストレージエンジンは、
SELECT
、 INSERT
、
UPDATE
、 DELETE
、
TRUNCATE
、そしてインデックスをサポートします。ALTER
TABLE
や、DROP
TABLE
以外のデータ定義言語
ステートメントはサポートしません。現在のインプリメンテーションは、用意されたステートメントを利用しません。
CONNECTION
文字列を利用する時、パスワードに
'@'を用いることはできません。
この制限は、サーバ接続を作成する時にCREATE
SERVER
を利用すれば避ける事ができます。
INSERT_ID
と TIMESTAMP
オプションは、データ提供者に対して用意されている物ではありません。
FEDERATED
テーブルに対して発行されたDROP
TABLE
ステートメントは、ローカルテーブルは除去しますが、リモートテーブルは除去しません。
インプリメンテーションは、SELECT
、
INSERT
、
UPDATE
、そして
DELETE
を利用しますが、HANDLER
は利用しません。
FEDERATED
テーブルはクエリキャッシュとは機能しません。
ユーザー定義領域確保はFEDERATED
テーブルの為にはサポートされていません。MySQL
5.1.15からは、そのような
テーブルを作成する事は不可能になりました。
これらの制限のうちのいくつかは、FEDERATED
ハンドラの今後のバージョンで撤廃されるでしょう。