これらの設定は system.settings で確認でき、ソースコード から自動生成されています。
max_execution_speed
1 秒あたりの実行行数の上限です。各データブロックで
timeout_before_checking_execution_speed
の期限が切れるたびにチェックされます。実行速度が高すぎる場合は、実行速度が抑制されます。
max_execution_speed_bytes
1 秒あたりの実行バイト数の最大値です。各データブロックで
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 を指定する代わりに、次のようにします:
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));クエリ設定として max_execution_time_leaf を指定できます:
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;