Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  FEDERATED ストレージエンジンの注記とヒント

15.8.3 FEDERATED ストレージエンジンの注記とヒント

FEDERATED ストレージエンジンを使用するときは、次の点に注意することをお勧めします。

  • FEDERATED テーブルをほかのスレーブに複製してもかまいませんが、スレーブサーバーが CONNECTION 文字列 (または mysql.servers テーブルの行) で定義されたユーザーとパスワードの組み合わせを使用してリモートサーバーに接続できることを確認する必要があります。

次の項目は、FEDERATED ストレージエンジンがサポートしている機能とサポートしていない機能を示します。

  • リモートサーバーは MySQL サーバーでなくてはいけません。

  • FEDERATED テーブルがポイントするリモートテーブルは、FEDERATED テーブルを介してそのテーブルにアクセスを試みる前に、存在している必要があります

  • ある FEDERATED テーブルがほかのテーブルをポイントすることは可能ですが、ループを作らないように注意する必要があります。

  • FEDERATED テーブルは本質的にインデックスをサポートしていません。テーブルへのアクセスがリモートで処理されるため、リモートテーブルがインデックスをサポートします。同等の MyISAM やほかのテーブルからのインデックス定義がサポートされていない可能性があるため、FEDERATED テーブルを作成するときは注意を払うようにしてください。たとえば、VARCHARTEXT、または BLOB カラムにインデックスプリフィクスを付けた FEDERATED テーブルを作成すると、失敗します。MyISAM の次の定義は有効です。

    CREATE TABLE `T1`(`A` VARCHAR(100),UNIQUE KEY(`A`(30))) ENGINE=MYISAM;

    この例のキープリフィクスは FEDERATED エンジンと互換性がないため、同等のステートメントは失敗します。

    CREATE TABLE `T1`(`A` VARCHAR(100),UNIQUE KEY(`A`(30))) ENGINE=FEDERATED
      CONNECTION='MYSQL://127.0.0.1:3306/TEST/T1';

    可能であれば、これらのインデックスの問題を回避するため、リモートサーバーとローカルサーバーの両方にテーブルを作成する場合、カラムとインデックスの定義を分けるようにしてください。

  • 内部的に、実装は SELECTINSERTUPDATE、および DELETE を使用しますが、HANDLER は使用しません。

  • FEDERATED ストレージエンジンは、SELECTINSERTUPDATEDELETETRUNCATE TABLE、およびインデックスをサポートしています。DROP TABLE を除いて、ALTER TABLE や、テーブルの構造に直接影響を与えるデータ定義言語ステートメントをサポートしていません。現在の実装は、プリペアドステートメントを使用しません。

  • FEDERATEDINSERT ... ON DUPLICATE KEY UPDATE ステートメントを受け入れますが、重複キー違反が起こった場合、ステートメントはエラーで失敗します。

  • 大量の挿入を実行する場合 (たとえば、INSERT INTO ... SELECT ... ステートメント) の FEDERATED テーブルのパフォーマンスは、選択された各行が FEDERATED テーブルで個々の INSERT ステートメントとして処理されるため、ほかのテーブルタイプに比べて低下します。

  • トランザクションはサポートされていません。

  • FEDERATED は、複数の行がバッチでリモートテーブルに送られるように大量挿入処理を実行します。これでパフォーマンスは向上し、リモートテーブルは改善を実行できます。また、リモートテーブルがトランザクション対応の場合、エラーが発生したときにリモートストレージエンジンはステートメントロールバックを適切に実行できます。この機能には次の制限があります。

    • 挿入のサイズは、サーバー間の最大パケットサイズを超えることはできません。挿入がこのサイズを超えた場合、複数のパケットに分割され、ロールバック問題が発生する可能性があります。

    • 大量挿入処理は INSERT ... ON DUPLICATE KEY UPDATE では起こりません。

  • FEDERATED エンジンは、リモートテーブルが変わったかどうかを知る方法がありません。その理由は、このテーブルが、データベースシステム以外の何かによって決して書き込まれることのないデータファイルのように動作する必要があるためです。リモートデータベースに変更が加えられた場合に、ローカルテーブルのデータの完全性が損なわれる可能性があります。

  • CONNECTION 文字列を使用する場合、パスワードに '@' 文字を使用できません。CREATE SERVER ステートメントを使用してサーバー接続を作成することで、この制限を回避できます。

  • insert_id および timestamp オプションはデータプロバイダには伝達されません。

  • FEDERATED テーブルに対して発行された DROP TABLE ステートメントは、ローカルテーブルだけを削除し、リモートテーブルは削除しません。

  • FEDERATED テーブルはクエリーキャッシュでは機能しません。

  • ユーザー定義のパーティション化は、FEDERATED テーブルではサポートされていません。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.