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


15.6黑洞ストレジエンジン

黑洞ストレジエンジンは,デタを受け取るけれども破棄して格納しないブラックホルとして機能します。検索は,常に空の結果を返します。

mysql> CREATE TABLE test(i INT, c CHAR(10))查询OK, 0行影响(0.03秒)mysql> INSERT INTO test VALUES(1,'record one'),(2,'record two');查询OK, 2 rows affected (0.00 sec) Records: 2 duplicate: 0 warning: 0 mysql> SELECT * FROM test;空集(0.00秒)

ソスからMySQLを構築する場合に黑洞ストレジエンジンを有効にするには,CMake-DWITH_BLACKHOLE_STORAGE_ENGINEオプションで呼び出します。

黑洞エンジンのソスを調べるには,MySQLソス配布のsqlディレクトリを検索します。

黑洞テーブルを作成するときに,サーバーはデータベースディレクトリ上にテーブルフォーマットファイルを作成します。ファ邮箱ルはテ邮箱ブル名から始まり.frm拡張子が付きます。テブルに関連するファ。

黑洞ストレジエンジンはすべての種類のトしています。すなわ,テンデックス宣言を含めることができます。

黑洞ストレジエンジンが显示引擎ステトメントで使用できるかどうかを確認できます。

黑洞テーブルへの挿入はデータを格納しませんが,ステートメントベースバイナリロギングが有効になっている場合は,SQLステートメントはログが記録されてスレーブサーバーに複製されます。これは,繰り返しまたはフィルタメカニズムとして役立場合があります。

注記

バ邮箱ナリログに行ベ邮箱スフォ邮箱マットを使用すると,邮箱更新と削除はスキップされ,邮箱ログも適用されません。このため,バイナリロギングフォーマットには行や混合ではなく声明を使用してください。

アプリケーションがスレーブ側フィルタリングルールを要求するけれども,すべてのバイナリログデータを最初にスレーブに転送するとトラフィックが多すぎるとします。そのような場合は,次に示すようにマスタ,ホスト上に,デフォルトストレ,ジエンジンが黑洞であるスレブプロセスをセットアップできます。

フィルタリングに黑洞を使用するレプリケション

マスタはそのバ。mysqldプロセスはスレブとして機能し,replicate-do - *およびreplicate-ignore - *ルルの適切な組み合わせを適用し,それ自体のフィルタリングされた新しいバナリログを書き込みます。セクション17.1.4 "レプリケションおよびバナリロギングのオプションと変数"を参照してください。フィルタリングされたこのログはスレブに提供されます。

ダミプロセスは実際にはデタを保存しないため,レプリケションマスタホスト上で追加mysqldプロセスを実行することによる処理オバヘッドはほとんどありません。この種類のセットアップは,ほかのレプリケションスレブで繰り返すことができます。

黑洞テブルの插入トリガは期待どおりに機能します。しかし,実際には黑洞テブルはデタを格納しないため,更新および删除トリガは有効ではありません。トリガ定義の为每一行句は,行がないために適用されません。

黑洞ストレジエンジンのその他の利用方法は,次のとおりです。

  • ダンプファ邮箱ル構文の検証。

  • バイナリロギングのオーバーヘッドを測定(バイナリロギングが有効である場合と有効でない場合のパフォーマンスを黑洞を利用して比較することで)。

  • 黑洞は本質的には无操作ストレージエンジンであるため,ストレージエンジン自体には関係ないパフォーマンスボトルネックの検出に使用される場合があります。

コミットされたトランザクションはバイナリログに書き込まれ,ロールバックされたトランザクションは書き込まれないという意味で,黑洞エンジンはトランザクション対応です。

黑洞エンジンと自動ンクリメントカラム

黑洞エンジンはno-opエンジンです。黑洞を使用してテブルで実行される操作は効果がありません。このことは,自動的に増分する主キカラムの動作を考慮するときに念頭におくようにしてください。このエンジンはフィルド値を自動的に増分せず,自動ルドの状態を保持しません。これは,レプリケションで重要な意味を持ます。

次の3の条件がすべて適用される次のレプリケションシナリオを検討します。

  1. マスターサーバーには,主キーである自動インクリメントフィールドを持つブラックホールテーブルがあります。

  2. スレブには同じテブルが存在しますが,MyISAMエンジンを使用します。

  3. 插入ステトメント自身で自動,设置INSERT_IDステトメントを使用して,マスタブルへの挿入が実行されます。

このシナリオでは,レプリケションは主キカラムでの重複エントリエラで失敗します。

ステトメントベスのレプリケションでは,コンテキストINSERT_IDの値は常に同じになります。このため,主キカラムで重複値を持行を挿入しようとすると,レプリケ。

行ベスのレプリケションでは,エンジンが戻す行の値は,各挿入で常に同じです。このため,スレーブは主キーカラムで同じ値を使用する2つの挿入ログエントリーを再生しようとして,レプリケーションは失敗します。

カラムのフィルタリング

行ベスのレプリケション(binlog_format =行)を使用すると,セクション17.4.1.9 "テブル定義が異なるマスタとスレブでのレプリケション"セクションで説明されたように,最後のカラムがテブルから失われたスレブがサポトされます。

このフィルタリングはスレブ側で機能します。すなわ,カラムはフィルタリングされる前にスレブにコピされます。スレブにカラムをコピすることが望ましくないケスが少なくとも2。

  1. デタが機密の場合,スレ。

  2. マスターが多くのスレーブを持つ場合,スレーブに送る前にフィルタリングすると,ネットワークトラフィックが削減される可能性があります。

マスタカラムのフィルタリングは,黑洞エンジンを使用して実現できます。これは,マスタテブルフィルタリングの実現方法(黑洞エンジンと——replicate-do-tableまたは——replicate-ignore-tableオプションを使用)に類似した方法で実行されます。

マスタのセットアップは次のとおりです。

创建表t1 (public_col_1,…), public_col_N, secret_col_1,…, secret_col_M) = MyISAM引擎;

信頼されたスレブのセットアップは次のとおりです。

创建表t1 (public_col_1,…)public_col_N)引擎=黑洞;

信頼されないスレブのセットアップは次のとおりです。

创建表t1 (public_col_1,…), public_col_N) = MyISAM引擎;

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