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

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_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 は例外を生成します。

引数は名前付きコレクションを使用して渡すこともできます。この場合、hostport は別々に指定する必要があります。このアプローチは本番環境での使用が推奨されます。

=, !=, >, >=, <, <= のような単純な 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

参照