MySQL テーブルエンジン
MySQL エンジンを使用して、リモート MySQL サーバーに保存されたデータに対して SELECT
および INSERT
クエリを実行できます。
テーブルの作成
CREATE TABLE クエリの詳細な説明を参照してください。
テーブルの構造は、元の MySQL テーブルの構造と異なる場合があります:
- カラム名は元の MySQL テーブルと同じである必要がありますが、これらのカラムの一部だけを使用し、任意の順序で指定できます。
- カラムタイプは、元の MySQL テーブルのものとは異なる場合があります。ClickHouse は値を ClickHouse データ型に変換しようとします。cast 参照。
- external_table_functions_use_nulls 設定は Nullable カラムの処理方法を定義します。デフォルト値:1。0の場合、テーブル関数は Nullable カラムを作成せず、null の代わりにデフォルト値を挿入します。これは、配列内の NULL 値にも適用されます。
MySQL テーブルエンジンは、現在のところ ClickHouse の MacOS ビルドで利用できません。 (issue)
エンジンパラメータ
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 は例外を生成します。
引数は named collections を使用しても渡すことができます。この場合、host
および port
を別々に指定する必要があります。このアプローチは、本番環境で推奨されます。
シンプルな WHERE
句(=, !=, >, >=, <, <=
など)は、MySQL サーバーで実行されます。
その他の条件や LIMIT
サンプリング制約は、MySQL へのクエリが完了した後に ClickHouse でのみ実行されます。
複数のレプリカをサポートしており、|
で区切ってリストする必要があります。例えば:
使用例
MySQL でテーブルを作成:
ClickHouse でプレーン引数を使用してテーブルを作成:
または named collections を使用:
MySQL テーブルからデータを取得:
設定
デフォルトの設定は非常に効率的ではなく、接続を再利用することさえありません。これらの設定により、サーバーが1秒あたりに実行するクエリの数を増やすことができます。
connection_auto_close
クエリ実行後に接続を自動的に閉じることを許可し、接続の再利用を無効にします。
可能な値:
- 1 — 自動的に接続を閉じることが許可されているため、接続の再利用が無効
- 0 — 自動的に接続を閉じることが許可されていないため、接続の再利用が有効
デフォルト値:1
。
connection_max_tries
フェイルオーバーを伴うプールの再試行の回数を設定します。
可能な値:
- 正の整数。
- 0 — フェイルオーバーを伴うプールに再試行はありません。
デフォルト値:3
。
connection_pool_size
接続プールのサイズ(すべての接続が使用中の場合、クエリは接続が解放されるまで待機します)。
可能な値:
- 正の整数。
デフォルト値:16
。
connection_wait_timeout
接続が空くのを待つためのタイムアウト(秒単位)(すでに connection_pool_size のアクティブ接続がある場合)、0 - 待機しない。
可能な値:
- 正の整数。
デフォルト値:5
。
connect_timeout
接続タイムアウト(秒単位)。
可能な値:
- 正の整数。
デフォルト値:10
。
read_write_timeout
読み取り/書き込みタイムアウト(秒単位)。
可能な値:
- 正の整数。
デフォルト値:300
。