use_async_executor_for_materialized_views
materialized view のクエリ実行に async、場合によってはマルチスレッド実行を使用します。これにより、INSERT 時の view の処理を高速化できますが、メモリ消費量が増える可能性があります。use_cache_for_count_from_files
table functionfile/s3/url/hdfs/azureBlobStorage で、ファイルから件数をカウントする際の行数のキャッシュを有効にします。
デフォルトで有効です。
use_client_time_zone
DateTime 文字列の値を解釈する際に、server timezone ではなくクライアントのタイムゾーンを使用します。use_columns_cache
カラムキャッシュを使用するかどうかを指定します。0 または 1 を指定できます。デフォルトは 0 (無効) です。 カラムキャッシュは、MergeTree テーブルからデシリアライズされたカラムを保持することで、頻繁にアクセスされるデータを毎回伸長・デシリアライズする必要をなくします。これにより、同じデータに対して繰り返し実行されるクエリのレイテンシを大幅に低減できます。キャッシュのキーは、テーブルの UUID、データパーツ名、カラム名、および約 65536 行分の連続したグラニュールからなるストライプです。
エントリはテーブルの UUID をキーとするため、キャッシュが有効になるのは、Atomic、Replicated、Shared (ClickHouse Cloud のデフォルトのデータベースエンジン) など、UUID を割り当てるデータベース内のテーブルに限られます。レガシーな Ordinary データベース内の MergeTree テーブルは UUID が nil であるため、この設定は警告なしに無視されます。
現時点では、キャッシュは wide パーツにのみ適用されます。compact パーツ内のデータはカラムキャッシュへの読み書きの対象外となるため、読み取りが高速化されるかどうかはパーツのフォーマットによって異なります。
1 つのエントリは、1 つのストライプ内の連続したグラニュールの範囲を保持します。グラニュールは最初の行から最後の行まで読み取られて初めてキャッシュに格納され、読み取り時にはグラニュール単位でキャッシュから返されます。また、異なる読み取りによって書き込まれた範囲はマージされるため、パーツを異なるマーク範囲に分割して読み取る場合でも、エントリは共有されます。
use_concurrency_control
サーバーの同時実行制御 (グローバルなサーバー設定concurrent_threads_soft_limit_num および concurrent_threads_soft_limit_ratio_to_cores を参照) を適用します。無効にすると、サーバーが過負荷状態でもより多くのスレッドを使用できるようになります (通常の用途では推奨されず、主にテストで必要になります) 。
use_constant_folding_in_index_analysis
パーツごとの主キーおよびスキップ索引の解析時に、パーティション単位の定数をフィルタ条件に代入します。 パーティションキーが、主キーカラムまたはスキップ索引のカラムと一緒にフィルタに現れる場合、この設定により、索引解析時に各パーツ内でパーティション値を個別に畳み込めるようになります。特に、異なるパーティションを対象とする分岐を含む OR 条件のフィルタで有効です。たとえば、PARTITION BY a と ORDER BY b の場合:
a = 1 のパートでは、この条件は b >= 1 に畳み込まれます。一方、パーティション a = 2 と a = 3 では b > 10 に畳み込まれるため、各パートは実際に適用される述語に基づいて解析されます。
設定可能な値:
- 0 — 無効。
- 1 — 有効。
use_hash_table_stats_for_join_reordering
join の並べ替え時に、カーディナリティ推定のために収集した hash table 統計を使用することを有効にしますuse_hedged_requests
リモートクエリに対する hedged requests のロジックを有効にします。これにより、クエリのために異なるレプリカへの複数の接続を確立できます。 既存の接続がhedged_connection_timeout 以内にレプリカに確立されなかった場合、または receive_data_timeout 以内にデータを受信しなかった場合は、新しい接続が有効になります。クエリは、空でない Progress パケット (allow_changing_replica_until_first_data_packet が有効な場合は Data パケット) を最初に送信した接続を使用し、他の接続はキャンセルされます。max_parallel_replicas > 1 のクエリもサポートされます。
デフォルトで有効です。
Cloud でのデフォルト値: 0.
use_hive_partitioning
有効にすると、ClickHouse はファイル系のテーブルエンジン File/S3/URL/HDFS/AzureBlobStorage のパス (/name=value/) にある Hive スタイルのパーティション化を検出し、パーティションカラムをクエリ内で仮想カラムとして使用できるようにします。これらの仮想カラムの名前は、パーティション化されたパス内の名前と同じですが、先頭に _ が付きます。
use_indexes_refiner_in_read_pools
MergeTree 読み取りプール内で、データ読み取り時に評価される索引を適用します。スキップ索引 (use_skip_indexes_on_data_read を参照) またはプロジェクション索引 (optimize_use_projection_filtering を参照) によって完全に除外されたマーク範囲は、読み取り時にグラニュール単位でスキップする代わりに、その範囲の読み取りタスクが作成される前に削除されます。
先読み読み取りプールでは、削除された範囲が先読みされることはありません。ただし、タスク境界と filesystem_prefetch_max_memory_usage / filesystem_prefetches_limit による先読みの許可判定はフィルタリング前に決定されるため、選択性が非常に高いフィルタでは、残ったタスクが想定されるタスクサイズより小さくなり、許可判定が保守的になる場合があります。
use_join_disjunctions_push_down
JOIN 条件のうち OR で結合された部分を、対応する入力側にプッシュダウン (「部分的なプッシュダウン」) できるようにします。 これにより、ストレージエンジンがより早い段階でフィルタリングできるため、読み取るデータ量を削減できます。 この最適化は意味を変えず、各最上位の OR 分岐が対象側に対して少なくとも 1 つの決定論的な述語を含む場合にのみ適用されます。use_legacy_to_time
有効にすると、toTime は従来の toTime 関数を指します。この関数は、日時の時刻部分を保持したまま、特定の固定日付に変換します。
無効の場合、toTime は新しい toTime 関数を指し、さまざまな型の値を Time 型に変換します。
この設定に関係なく、従来の関数は常に toTimeWithFixedDate としても利用できます。
この設定が有効な間は、Time 型への変換には CAST(x AS Time) または x::Time を使用してください。
use_lightweight_primary_key_index_analysis
長い主キーを持つMergeTree テーブルの主キー索引解析を最適化します。
有効にすると、索引解析の実行時間は主キーの長さではなく、主にクエリのフィルタの複雑さ (実際に使用されるキーカラム) に依存します。そのため、一部のカラムだけでフィルタするクエリでは、ソートキーを拡張しても索引解析に対する追加のオーバーヘッドはごくわずかです。
設定可能な値:
- 0 — 無効。索引解析時にすべての主キーカラムが処理されます。
- 1 — 有効。
use_parquet_metadata_cache
有効にすると、Parquet フォーマットで Parquet メタデータキャッシュを利用できます。 設定可能な値:- 0 - 無効
- 1 - 有効
use_primary_key
MergeTree テーブルのクエリ実行時に、グラニュールのプルーニングに主キーを使用します。 設定可能な値:- 0 — 無効。
- 1 — 有効。
use_reader_executor
実験的機能です。従来の読み取りバッファの入れ子構造ではなく、新しいパイプラインReaderExecutor を介して読み取りをルーティングします。executor がまだサポートしていない構成では、従来のパスにフォールバックします。
use_roaring_bitmap_iceberg_positional_deletes
Iceberg の positional deletes に対して roaring bitmap を使用します。use_streaming_marks_compression
MergeTree パーツの marks を読み込む際、最初に完全な生の marks 配列としてマテリアライズするのではなく、1 block ずつメモリ内表現に圧縮 (streaming) します。これにより、多数の substreams を持つ compact パーツ (たとえば、JSON カラムを持ち、write_marks_for_substreams_in_compact_parts が有効なテーブル) での marks 読み込み時のピークメモリ使用量を大幅に削減できます。use_strict_insert_block_limits
有効にすると、最小および最大の挿入ブロックサイズ制限の両方が厳密に適用されます。 ブロックは次の場合に生成されます:- 最小しきい値 (AND): min_insert_block_size_rows と min_insert_block_size_bytes の両方に達した場合。
- 最大しきい値 (OR): max_insert_block_size_rows または max_insert_block_size_bytes のいずれかに達した場合。
- 最小しきい値 (OR): min_insert_block_size_rows または min_insert_block_size_bytes のいずれかに達した場合。
use_structure_from_insertion_table_in_table_functions
データからスキーマを推論する代わりに、挿入先テーブルの構造を使用します。設定可能な値: 0 - 無効、1 - 有効、2 - 自動use_uncompressed_cache
非圧縮ブロックのキャッシュを使用するかどうかを指定します。0 または 1 を受け付けます。既定値は 0 (無効) です。
非圧縮キャッシュ (MergeTree family のテーブルでのみ有効) を使用すると、多数の短いクエリを扱う際のレイテンシを大幅に低減し、スループットを向上させることができます。短いリクエストを頻繁に送信するユーザーには、この設定を有効にしてください。また、uncompressed_cache_size 設定パラメータ (設定ファイルでのみ設定可能) にも注意してください。これは非圧縮キャッシュブロックのサイズです。既定では 8 GiB です。非圧縮キャッシュは必要に応じて格納され、使用頻度の低いデータは自動的に削除されます。
ある程度大きな量のデータ (100 万行以上) を読み取るクエリでは、本当に小さなクエリのための領域を確保するために、非圧縮キャッシュは自動的に無効になります。つまり、use_uncompressed_cache 設定は常に 1 のままにしておくことができます。