MySQL テーブルエンジン
MySQL エンジンでは、リモート MySQL サーバーに保存されているデータに対して SELECT
および INSERT
クエリを実行できます。
テーブルの作成
CREATE TABLE クエリの詳細な説明を参照してください。
テーブル構造は元の MySQL テーブルの構造と異なる場合があります。
- カラム名は元の MySQL テーブルと同じである必要がありますが、これらのカラムの一部のみを使用しても、順番は自由です。
- カラムタイプは元の MySQL テーブルのものと異なる場合があります。ClickHouse は値を ClickHouse データ型にキャストしようとします。
- external_table_functions_use_nulls 設定は、Nullable カラムの処理方法を定義します。デフォルト値: 1。0 の場合、テーブル関数は Nullable カラムを作成せず、null の代わりにデフォルト値を挿入します。これは配列内の NULL 値にも適用されます。
エンジンパラメータ
host:port
— MySQL サーバーのアドレス。database
— リモートデータベース名。table
— リモートテーブル名。user
— MySQL ユーザー。password
— ユーザーパスワード。replace_query
—INSERT INTO
クエリをREPLACE INTO
に変換するフラグ。replace_query=1
の場合、クエリが代入されます。on_duplicate_clause
—INSERT
クエリに追加されるON DUPLICATE KEY on_duplicate_clause
式。 例:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1
では、on_duplicate_clause
はUPDATE c2 = c2 + 1
です。MySQL ドキュメントを参照して、ON DUPLICATE KEY
句と共に使用できるon_duplicate_clause
を確認してください。on_duplicate_clause
を指定するには、replace_query
パラメータに0
を渡す必要があります。replace_query = 1
とon_duplicate_clause
を同時に渡すと、ClickHouse は例外を生成します。
引数は名前付きコレクションを使用して渡すこともできます。この場合、host
と port
は別々に指定する必要があります。このアプローチは本番環境での使用が推奨されます。
=, !=, >, >=, <, <=
のような単純な WHERE
句は、MySQL サーバーで実行されます。
クエリが MySQL に終了してから、残りの条件と LIMIT
サンプリング制約は ClickHouse でのみ実行されます。
複数のレプリカをサポートしており、|
でリストする必要があります。例えば:
使用例
MySQL にテーブルを作成:
ClickHouse でプレーン引数を使用してテーブルを作成:
または名前付きコレクションを使用:
MySQL テーブルからデータを取得:
設定
デフォルトの設定はあまり効率的ではなく、接続を再利用すらしません。これらの設定を使用すると、サーバーで実行されるクエリの数を増加させることができます。
connection_auto_close
クエリ実行後に接続を自動的に閉じることを許可し、すなわち接続の再利用を無効にします。
可能な値:
- 1 — 自動的に接続を閉じることが許可され、接続の再利用が無効
- 0 — 自動的に接続を閉じることが許可されず、接続の再利用が有効
デフォルト値: 1
。
connection_max_tries
フェイルオーバーのプールのリトライ回数を設定します。
可能な値:
- 正の整数。
- 0 — フェイルオーバーのプールにリトライはありません。
デフォルト値: 3
。
connection_pool_size
接続プールのサイズ(すべての接続が使用中の場合、クエリは自由になるまで待機します)。
可能な値:
- 正の整数。
デフォルト値: 16
。
connection_wait_timeout
自由な接続を待機するタイムアウト(秒単位)(接続プールサイズでアクティブな接続がすでにある場合)、0 - 待機しない。
可能な値:
- 正の整数。
デフォルト値: 5
。
connect_timeout
接続タイムアウト(秒単位)。
可能な値:
- 正の整数。
デフォルト値: 10
。
read_write_timeout
読み取り/書き込みタイムアウト(秒単位)。
可能な値:
- 正の整数。
デフォルト値: 300
。