MRG_MyISAM
エンジンとしても知られている合并
ストレジエンジンは,1ブルとして使用できる同一のMyISAM
テブルの集まりです。「同一の」というのは,すべてのテ。カラムが異なる順番でリストされていたり、完全に同じカラムでなかったり、インデックスの順番が違っていたりするとMyISAM
テブルをマジできません。しかし,MyISAM
テブルのすべてまたはいずれかをmyisampackで圧縮できます。セクション4.6.5 "myisampack-圧縮された読み取り専用のMyISAMテブルの生成"を参照してください。AVG_ROW_LENGTH
、MAX_ROWS
、PACK_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 TABLE
を利用する。tbl_name
联盟=(…)ALTER TABLE……联盟= ()
(まり,空の.联盟
句)を使用してすべての基礎テブルを削除することもできます。ただしこの場合,テーブルは実質的には空であり,新しい行を取得する基礎テーブルがないために挿入は失敗します。このようなテブルは,新しい合并
テブルを创建表……就像
で作成するためのテンプレトとして役立場合があります。
基礎テブルの定義とンデックスは,合并
テブルの定義と厳密に一致する必要があります。一致がチェックされるのは,合并
テブルが作成されたときではなく,合并
テブルの一部のテブルが開いたときです。いずれのテブルも一致チェックに失敗した場合,テ。すなわ,合并
内のテブルの定義を変更すると,合并
テブルがアクセスされたときに失敗の原因となる可能性があります。それぞれのテブルに適用される一致チェックは次のとおりです。
基礎テブルと
合并
テブルのカラム数は同じでなければいけません。基礎テブルと
合并
テブルのカラムの順番は一致する必要があります。また,親の
合并
テーブル内の対応する各カラムの指定と基礎テーブルの指定を比較して,次のチェック内容を満たす必要があります。基礎テブルと
合并
テブルのカラムの型は一致する必要がある。基礎テブルと
合并
テブルのカラムの長さは一致する必要がある。基礎テブルと
合并
テブルのカラムは零
でもかまわない。
基礎テブルは,少なくとも
合并
テブルと同じ数の。基礎テブルの合并
テブルより多くてもかまわないが,少なくすることはできない。注記同じカラムのンデックスは,
合并
テブルと基礎MyISAM
テブルの両方でまったく同じ順番でなければならないという,既知の問題が存在します。バグ#33653を参照してください。各邮箱ンデックスは次のチェック内容を満たす必要があります。
基礎テブルと
合并
テブルの。基礎テブルと
合并
テーブルのインデックス定義でのインデックス部の数(すなわち,複合インデックス内に複数のカラム)は一致する必要があります。各ンデックス部に。
ンデックス部の長さは同じでなければいけない。
ンデックス部の型は同じでなければいけない。
ンデックス部の言語は同じでなければいけない。
ンデックス部が
零
でかまわないかどうかをチェックする。
合并
テブルが基礎テブルの問題のために,開いたり使用したりできない場合,检查表
は問題の原因となったテブルに関する情報を表示します。
追加のリソス
合并
ストレジエンジンに特化したフォラムは,https://forums.10bet靠谱mysql.com/list.php?93で参照できます。