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
です。ON DUPLICATE KEY
句で使用できるon_duplicate_clause
を見つけるには、MySQL のドキュメントを参照してください。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 テーブルからデータを取得します。
設定
デフォルト設定は非常に効率的ではなく、接続の再利用すら行わないため、これらの設定を使用して、サーバーが毎秒実行するクエリの数を増やすことができます。
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
。