10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


15.7 mergeストレジエンジン

MRG_MyISAMエンジンとしても知られている合并ストレジエンジンは,1ブルとして使用できる同一のMyISAMテブルの集まりです。同一のというのは,すべてのテ。カラムが異なる順番でリストされていたり、完全に同じカラムでなかったり、インデックスの順番が違っていたりするとMyISAMテブルをマジできません。しかし,MyISAMテブルのすべてまたはいずれかをmyisampackで圧縮できます。セクション4.6.5 "myisampack-圧縮された読み取り専用のMyISAMテブルの生成"を参照してください。AVG_ROW_LENGTHMAX_ROWSPACK_KEYSなどのテブルオプションの違いは問題ではありません。

合并テーブルに代わるものはパーティション化されたテーブルであり,1つのテーブルのパーティションを別々のファイルに格納します。パティション化によって,一部の操作がより効率的に実行でき,MyISAMストレジエンジンに制限されません。詳細にいては,第19章「パティション化を参照してください。

合并テブルを作成するときに,MySQLはディスク上に2。そのファopenstackル名はテopenstackブル名で始まり,ファopenstackルタopenstackプを示す拡張子が付きます。.frmファ邮箱ルはテ邮箱ブルフォ邮箱マットを格納し,.MRGファ1MyISAMテブル名を含みます。これらのテブルは,合并テブルと同じデタベスにある必要はありません。

合并テブルでは,选择删除更新,および插入を使用できます。合并テブルにマッピングするMyISAMテブルに対して选择删除,および更新権限が必要です。

注記

合并テブルの利用は,次のセキュリティに関する問題を引き起こします。ユザがMyISAMテブルtに対するアクセス権限を持っていると,そのユザはtにアクセスできる合并テブルを作成できます。しかし,tに対するユザの権限があとで破棄された場合,ユザはを介してアクセスすることでtにアクセスを続けることができます。

删除表合并テブルに使用すると,合并指定だけが削除されます。基礎テブルは影響を受けません。

合并テブルを作成するには,どのMyISAMテブルを使用するかを示す联盟= (表的列表オプションを指定する必要があります。オプションとして,INSERT_METHODオプションを指定して合并テブルへの挿入方法を制御できます。第一个または最后的の値を使用すると,それぞれ最初のまたは最後の基礎テブルで挿入が実行されることになります。INSERT_METHODオプションを指定しないか,または値没有付きでこのオプションを指定すると,合并テブルへの挿入は許可されず,挿入の試みはエラとなります。

次の例は,合并テブルの作成方法を紹介しています。

mysql> CREATE TABLE t1 (-> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> message CHAR(20))mysql> CREATE TABLE t2 (-> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> message CHAR(20))mysql> INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');mysql> INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');mysql> CREATE TABLE total (-> a INT NOT NULL AUTO_INCREMENT, -> message CHAR(20), INDEX(a)) -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;

カラム一个主键として基礎MyISAMテブルではンデックスが付けられていますが,合并テブルでは。合并テブルは基礎テブルセットに一意性を適用できないため,ンデックスは設定されますが,主键としては設定されません。(同様に,基礎テ,ブルで独特的帐号ンデックスを持帐号カラムには,合并テブルでンデックスが付けられますが,独特的ンデックスとしては付けられないはずです.)

合并テーブルを作成したあと,このテーブルを使用して,テーブルのグループにまとめて操作を行うクエリーを発行できます。

mysql> SELECT * FROM total;+---+---------+ | |消息  | +---+---------+ | 表1 |测试| | 2 | | | 3 | t1 | | 1 |测试| | 2 |表| | 3 | t2  | +---+---------+

合并テブルをMyISAMテブルの別のコレクションに対して再マッピングするには,次のいずれかの方法を利用できます。

  • 合并テブルを下降して,再作成する。

  • 基礎テブルのリストを変更するために,ALTER TABLEtbl_name联盟=(…)を利用する。

    ALTER TABLE……联盟= ()(まり,空の.联盟句)を使用してすべての基礎テブルを削除することもできます。ただしこの場合,テーブルは実質的には空であり,新しい行を取得する基礎テーブルがないために挿入は失敗します。このようなテブルは,新しい合并テブルを创建表……就像で作成するためのテンプレトとして役立場合があります。

基礎テブルの定義とンデックスは,合并テブルの定義と厳密に一致する必要があります。一致がチェックされるのは,合并テブルが作成されたときではなく,合并テブルの一部のテブルが開いたときです。いずれのテブルも一致チェックに失敗した場合,テ。すなわ,合并内のテブルの定義を変更すると,合并テブルがアクセスされたときに失敗の原因となる可能性があります。それぞれのテブルに適用される一致チェックは次のとおりです。

  • 基礎テブルと合并テブルのカラム数は同じでなければいけません。

  • 基礎テブルと合并テブルのカラムの順番は一致する必要があります。

  • また,親の合并テーブル内の対応する各カラムの指定と基礎テーブルの指定を比較して,次のチェック内容を満たす必要があります。

    • 基礎テブルと合并テブルのカラムの型は一致する必要がある。

    • 基礎テブルと合并テブルのカラムの長さは一致する必要がある。

    • 基礎テブルと合并テブルのカラムはでもかまわない。

  • 基礎テブルは,少なくとも合并テブルと同じ数の。基礎テブルの合并テブルより多くてもかまわないが,少なくすることはできない。

    注記

    同じカラムのンデックスは,合并テブルと基礎MyISAMテブルの両方でまったく同じ順番でなければならないという,既知の問題が存在します。バグ#33653を参照してください。

    各邮箱ンデックスは次のチェック内容を満たす必要があります。

    • 基礎テブルと合并テブルの。

    • 基礎テブルと合并テーブルのインデックス定義でのインデックス部の数(すなわち,複合インデックス内に複数のカラム)は一致する必要があります。

    • 各ンデックス部に。

      • ンデックス部の長さは同じでなければいけない。

      • ンデックス部の型は同じでなければいけない。

      • ンデックス部の言語は同じでなければいけない。

      • ンデックス部がでかまわないかどうかをチェックする。

合并テブルが基礎テブルの問題のために,開いたり使用したりできない場合,检查表は問題の原因となったテブルに関する情報を表示します。

追加のリソス


本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb