ClickHouse Cloud の QUOTAClickHouse Cloud では QUOTA がサポートされていますが、作成には DDL 構文 を使用する必要があります。以下で説明する XML 設定の方法は サポートされていません。
- 単一のクエリを制限するのではなく、一定期間内に実行される一連のクエリに制限を課します。
- 分散クエリ処理において、すべてのリモートサーバーで消費されたリソースを計上します。
statbox QUOTA では、1 時間ごとおよび 24 時間ごと (86,400 秒) に制限が設定されます。このインターバルは、実装で定義された固定の時点を起点として計算されます。言い換えると、24 時間のインターバルは必ずしも午前 0 時に始まるわけではありません。
このインターバルが終了すると、蓄積されたすべての値はクリアされます。次の 1 時間については、QUOTA の計算が最初からやり直されます。
制限できる項目は次のとおりです。
queries – リクエストの総数。
query_selects – SELECT リクエストの総数。
query_inserts – INSERT リクエストの総数。
errors – 例外を発生させたクエリの数。
result_rows – 結果として返された行の総数。
result_bytes - 結果として返された行の合計サイズ。
read_rows – すべてのリモートサーバーでクエリを実行するために、テーブルから読み取られた行の総数。
read_bytes - すべてのリモートサーバーでクエリを実行するために、テーブルから読み取られた合計サイズ。
written_bytes - 書き込み操作の合計サイズ。
execution_time – 秒単位のクエリの総実行時間 (実時間) 。
failed_sequential_authentications - 連続した認証エラーの総数。
queries_per_normalized_hash – 単一の正規化クエリの最大実行回数です。正規化クエリとは、リテラルをプレースホルダーに置き換えたクエリのことで、たとえば SELECT 1 と SELECT 2 は同じ正規化クエリと見なされます。この制限は、それぞれの異なる正規化クエリパターンごとに独立して追跡されます。
少なくとも1つのインターバルでこの制限を超えると、どの制限に違反したのか、どのインターバルに対するものか、また新しいインターバルがいつ始まるか (再びクエリを送信できるようになる時点) を示すテキスト付きで例外がスローされます。
QUOTA では、複数のキーのリソース使用状況をそれぞれ独立して報告するために “quota key” 機能を使用できます。以下に例を示します。
<keyed_by_normalized_query_hash /> と記述します:
SELECT number FROM numbers(1) と SELECT number FROM numbers(2) は同じバケットを共有します (正規化形式が同じであるため) が、SELECT number, number FROM numbers(1) は別のバケットを使用します。
QUOTA は、config の ‘users’ セクションでユーザーに割り当てられます。“アクセス権” のセクションを参照してください。
分散クエリ処理では、累積値はリクエスト元のサーバーに保存されます。そのため、ユーザーが別のサーバーに移ると、そのサーバーのQUOTAは “最初から” になります。
サーバーを再起動すると、QUOTA はリセットされます。