max_execution_speed
timeout_before_checking_execution_speed
の期限が切れるたびにチェックされます。実行速度が高すぎる場合は、実行速度が抑制されます。
max_execution_speed_bytes
timeout_before_checking_execution_speed
の期限が切れるたびにチェックされます。実行速度が高すぎる場合は、実行速度が抑制されます。
max_execution_time
max_execution_time パラメータは、少しわかりにくい場合があります。
これは、現在のクエリ実行速度に対する補間に基づいて動作します
(この挙動は timeout_before_checking_execution_speed で制御されます) 。
ClickHouse は、予測される実行時間が指定した
max_execution_time を超える場合、クエリを中断します。既定では、timeout_before_checking_execution_speed
は 10 秒に設定されています。つまり、クエリ実行開始から 10 秒経過すると、ClickHouse
は合計実行時間の推定を開始します。たとえば、max_execution_time
を 3600 秒 (1 時間) に設定した場合、推定時間がこの 3600 秒の上限を超えると、ClickHouse は
クエリを終了します。timeout_before_checking_execution_speed
を 0 に設定すると、ClickHouse は max_execution_time の基準として実際の経過時間を使用します。
クエリの実行時間が指定した秒数を超えた場合の動作は、
既定で throw に設定されている timeout_overflow_mode によって決まります。
タイムアウトの確認が行われ、クエリを停止できるのは、データ処理中の所定の箇所に限られます。
現在のところ、集約状態のマージ中やクエリ解析中には停止できないため、
実際の実行時間はこの設定値より長くなります。
max_execution_time_leaf
max_execution_time と意味としては似ていますが、
分散クエリまたはリモートクエリのリーフノードにのみ適用されます。
たとえば、リーフノードでの実行時間を 10s に制限しつつ、
初期ノードでは制限を設けたくない場合は、ネストされたサブクエリの設定に
max_execution_time を指定する代わりに、次のようにします:
max_execution_time_leaf を指定できます: