ClickHouse/docs/ja/operations/quotas.md
2024-11-18 11:58:58 +09:00

5.6 KiB
Raw Blame History

slug sidebar_position sidebar_label title
/ja/operations/quotas 51 Quotas Quotas

クォータは、リソース使用量を一定期間内で制限したり、リソースの使用を追跡することを可能にします。クォータは通常「users.xml」に設定されるユーザー設定に含まれます。

システムには、単一のクエリの複雑さを制限する機能もあります。詳細は、クエリの複雑さに関する制限のセクションを参照してください。

クエリの複雑さの制限とは対照的に、クォータは以下を特徴とします:

  • 単一のクエリを制限するのではなく、一定期間内で実行できるクエリのセットに対して制限をかけます。
  • 分散クエリ処理のための全てのリモートサーバーで消費されたリソースを考慮します。

次に、クォータを定義する「users.xml」ファイルのセクションを見てみましょう。

<!-- クォータ -->
<quotas>
    <!-- クォータ名 -->
    <default>
        <!-- 一定期間の制限。異なる制限を持つ多くのインターバルを設定できます。 -->
        <interval>
            <!-- インターバルの長さ。 -->
            <duration>3600</duration>

            <!-- 無制限。指定された時間間隔のデータを収集します。 -->
            <queries>0</queries>
            <query_selects>0</query_selects>
            <query_inserts>0</query_inserts>
            <errors>0</errors>
            <result_rows>0</result_rows>
            <read_rows>0</read_rows>
            <execution_time>0</execution_time>
        </interval>
    </default>

デフォルトでは、クォータは毎時のリソース消費を追跡し、使用を制限しません。 各インターバルごとに計算されたリソース消費は、リクエストごとにサーバーログに出力されます。

<statbox>
    <!-- 一定期間の制限。異なる制限を持つ多くのインターバルを設定できます。 -->
    <interval>
        <!-- インターバルの長さ。 -->
        <duration>3600</duration>

        <queries>1000</queries>
        <query_selects>100</query_selects>
        <query_inserts>100</query_inserts>
        <errors>100</errors>
        <result_rows>1000000000</result_rows>
        <read_rows>100000000000</read_rows>
        <execution_time>900</execution_time>
    </interval>

    <interval>
        <duration>86400</duration>

        <queries>10000</queries>
        <query_selects>10000</query_selects>
        <query_inserts>10000</query_inserts>
        <errors>1000</errors>
        <result_rows>5000000000</result_rows>
        <read_rows>500000000000</read_rows>
        <execution_time>7200</execution_time>
    </interval>
</statbox>

statbox クォータの場合、1時間ごとおよび24時間86,400秒ごとに制限が設定されています。時間間隔は、実装で定義された固定の時点から始まるため、24時間のインターバルは必ずしも深夜に始まるわけではありません。

インターバルが終了すると、すべての収集された値はクリアされます。次の時間のクォータ計算は再び始まります。

次の制限可能な項目があります:

queries リクエストの総数。

query_selects selectリクエストの総数。

query_inserts insertリクエストの総数。

errors 例外をスローしたクエリの数。

result_rows 結果として与えられた行の総数。

read_rows すべてのリモートサーバーでクエリを実行するためにテーブルから読み取られたソース行の総数。

execution_time 合計のクエリ実行時間(秒:ウォールタイム)。

少なくとも1つの時間間隔で制限を超えると、どの制限がどのインターバルで超えられたか、新しいインターバルがいつ始まるかについてのメッセージが添えられた例外がスローされますクエリが再び送信できる場合

クォータは「クォータキー」機能を使用して、複数のキーに対して独立してリソースを報告することができます。以下にその例を示します:

<!-- グローバルレポートデザイナー用 -->
<web_global>
    <!-- keyed  クォータ_key "key" はクエリパラメーターで渡され、キーの値ごとにクォータが別々に追跡されます。
        例えば、ユーザー名をキーとして渡せば、クォータはユーザー名ごとに別々に計算されます。
        キーを使用するのはプログラムがクォータ_keyを送信している場合にのみ適切です。ユーザーが直接送信する場合は適当ではありません。

        <keyed_by_ip /> と記述することもでき、IPアドレスがクォータキーとして使用されます。
        ただし、ユーザーがIPv6アドレスを比較的容易に変更できることを念頭に置いてください。
    -->
    <keyed />

クォータは設定の「users」セクションでユーザーに割り当てられます。「アクセス権」のセクションを参照してください。

分散クエリ処理では、蓄積された量は要求者のサーバーに保存されます。そのため、ユーザーが別のサーバーに移動すると、そのサーバーでのクォータは「やり直し」になります。

サーバーが再起動されると、クォータはリセットされます。