メインコンテンツまでスキップ
メインコンテンツまでスキップ

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_queryINSERT INTO クエリを REPLACE INTO に変換するフラグ。replace_query=1 の場合、クエリが置き換えられます。
  • on_duplicate_clauseINSERT クエリに追加される ON DUPLICATE KEY on_duplicate_clause 式。 例:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1 の場合、on_duplicate_clauseUPDATE c2 = c2 + 1 です。MySQL ドキュメント で、ON DUPLICATE KEY 句と一緒に使用できる on_duplicate_clause を確認してください。 on_duplicate_clause を指定するには、replace_query パラメータに 0 を渡す必要があります。replace_query = 1on_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

関連項目