割り当てと上限

このページでは、Cloud SQL の割り当てと上限について説明します。 割り当てはプロジェクト単位で適用されます。上限は、その内容に応じて、インスタンスまたはプロジェクトに適用されます。

割り当て

割り当ては、Google Cloud プロジェクトで使用できる Google Cloud リソースの量を制限します。Cloud SQL はこのタイプのリソースの例です。

Cloud SQL の場合、割り当てはシステムの一部で、次の機能があります。

  • Cloud SQL インスタンスの使用状況や消費量をモニタリングする
  • 公平性の確保や使用量急増の抑制などのため、これらのインスタンスの消費量を制限する
  • 規定の制限を自動的に適用する構成を維持する
  • 割り当ての変更を実施またはリクエストする手段を提供する

割り当てを超過すると、ほとんどの場合、システムは関連するインスタンスへのアクセスをすぐにブロックするため、ユーザーが試行しているタスクは失敗します。割り当ては各 Google Cloud プロジェクトに適用され、そのプロジェクトを使用するすべてのインスタンスで共有されます。

割り当てを確認して増加する権限

割り当てを確認して増やすには、次の権限が必要です。

デフォルトでは、これらの権限は編集者とオーナーの基本の IAM ロール、および事前定義された割り当て管理者 ロールに含まれています。追加の権限が必要な場合は、割り当て管理者にお問い合わせください。

割り当てを確認する

プロジェクトの現在のリソースの割り当て量を確認するには、Google Cloud Console の [割り当て] ページに移動し、Cloud SQL Admin API をフィルタリングします。これらの割り当ては API 呼び出しにのみ適用されます。API 呼び出しにデータベース クエリは含まれません。

割り当てを増やす

Google Cloud の使用量が多くなるに伴い、割り当てが引き上げられることがあります。使用量の大幅な増加が見込まれる場合は、十分なサイズの割り当てを確保できるように、数日前にリクエストしてください。

割り当て増加のリクエストには料金は発生しません。料金が発生するのは、リソースの使用量が増えたときのみです。

割り当てを増やす手順は次のとおりです。

  1. Google Cloud コンソールで、[割り当て] ページに移動します。

    [割り当て] ページに移動

  2. Cloud SQL Admin API サービスをフィルタします。

    このサービスが表示されない場合は、Cloud SQL Admin API を有効にします

  3. 変更する割り当ての横にあるチェックボックスをオンにして、[割り当ての編集] をクリックします。

  4. 選択した各割り当ての [新しい上限] フィールドに、目的の上限の値を入力します。

  5. [理由の説明] フィールドに、割り当ての増加をリクエストする理由を入力し、[完了] をクリックします。

  6. [次へ] をクリックします。

  7. 名前、メールアドレス、電話番号を入力して、[リクエストを送信] をクリックします。

    割り当てを増やすことができない場合は、サポートケースを登録してください。

リソース割り当てが補充される時刻

割り当ては、毎日太平洋時間の深夜 0 時に補充されます。

割り当てとリソースの可用性

リソースの割り当てとは、そのリソースの種類で作成できる最大リソース数のことですが、それだけのリソースが利用可能であることが条件となります。割り当ては、常にリソースが利用可能であることを保証するものではありません。リージョンでリソースが物理的に利用できない場合、プロジェクトに割り当てが残っていても、その種類の新しいリソースを作成することはできません。

レートに基づく割り当て

Cloud SQL はレートに基づく割り当て(レート制限または API 割り当てとも呼ばれます)をサポートしています。レートに基づく割り当ては、Cloud SQL Admin API に対して実行できるリクエストの数を定義します。

各レートに基づく割り当ては、1 つ以上の Cloud SQL Admin API メソッドのカテゴリのすべてのリクエストに対応します。レートに基づく割り当ては、Cloud SQL に固有の時間間隔(1 分あたりの API リクエスト数など)が経過するとリセットされます。

gcloud CLI または Google Cloud コンソールを使用する場合、Cloud SQL Admin API に対してリクエストを行います。これらのリクエストは、レートに基づく割り当てにカウントされます。サービス アカウントを使用して API にアクセスする場合、これらのリクエストもレートに基づく割り当てにカウントされます。

Cloud SQL は、60 秒間隔で自動的にレートに基づく割り当てを適用して補充します。60 秒間内のどの時点でもプロジェクトがレートに基づく割り当ての上限に達すると、そのカテゴリでは、割り当てが補充されるまで待ってから追加のリクエストを行う必要があります。プロジェクトがこの上限を超えると、rateLimitExceeded の理由で HTTP 429 ステータス コードが返されます。

Cloud SQL Admin API は、次のカテゴリに分かれています。

  • 接続: Cloud SQL データベースに接続するために必要な値を検索します。
  • Get: リソース(インスタンス、オペレーション、バックアップなど)に関する情報を取得します。
  • List: リソースを一覧表示します。
  • 変更: リソースを作成、変更、削除します。
  • リージョンごとのデフォルト: 接続、取得、一覧表示、変更を行わずに Cloud SQL インスタンスを操作します。
  • デフォルト: Cloud SQL インスタンスのデータベース フラグとマシンタイプ(階層)を一覧表示します。このカテゴリの API はグローバルです。

Cloud SQL では、各カテゴリに対し 1 分あたり、ユーザーごと、リージョンごとに、レートに基づく割り当てが適用されます。これらの属性の一意の組み合わせごとに、Cloud SQL では個別のレート制限が課されます。

Cloud SQL Admin API では、API の使用状況の追跡、Cloud SQL インスタンスと API のパフォーマンスのモニタリング、インスタンスと API 間の問題の検出に役立つ詳細な指標が生成されます。詳細については、Monitoring API の使用をご覧ください。

次の表は、各カテゴリの指標、API、デフォルトの上限に関する情報を示したものです。

Category 指標 API デフォルトの上限
接続

sqladmin.googleapis.com/connect

このカテゴリの API を使用するために、1 分あたり、ユーザーごと、リージョンごとに行われたリクエストの数。

1000
スペシャライゼーションの

sqladmin.googleapis.com/get

このカテゴリの API を使用するために、1 分あたり、ユーザーごと、リージョンごとに行われたリクエストの数。

500
リスト

sqladmin.googleapis.com/list

このカテゴリの API を使用するために、1 分あたり、ユーザーごと、リージョンごとに行われたリクエストの数。

500
Mutate

sqladmin.googleapis.com/mutate

このカテゴリの API を使用するために、1 分あたり、ユーザーごと、リージョンごとに行われたリクエストの数。

180
リージョンごとのデフォルト

sqladmin.googleapis.com/
default_per_region

このカテゴリの API を使用するために、1 分あたり、ユーザーごと、リージョンごとに行われたデフォルトのリージョン リクエストの数。

180
デフォルト

sqladmin.googleapis.com/default

このカテゴリの API を使用するために、1 分あたり、ユーザーごとに行われたデフォルト リクエストの数。

180

制限事項

定期的に補充されず、Google Cloud Console の割り当てページに表示されないいくつかの Cloud SQL リソースには、上限が課されます。上限には、引き上げることができるものとできないものがあります。

引き上げることができる上限

プロジェクトあたりのインスタンス数

デフォルトでは、プロジェクトあたりの最大インスタンス数は 1,000 ですが、上限が 100 になる場合もあります。この数を引き上げる必要がある場合は、サポートケースを送信してリクエストしてください。リードレプリカはインスタンスとしてカウントされます。

インスタンス数を複数のプロジェクトに分散して、割り当て増加リクエストへの依存度を下げることをおすすめします。これにより、潜在的な障害を回避できます。

最大同時接続数

MySQL

max_connections フラグを使用すると、接続数の上限を構成できます。MySQL で最大 100,000 件の接続が可能です。データベースに接続して次のコマンドを実行すると、インスタンスの接続数上限を確認できます。 SHOW VARIABLES LIKE "max_connections";

PostgreSQL

max_connections フラグを使用すると、接続数の上限を構成できます。Cloud SQL for PostgreSQL インスタンスを作成すると、マシンタイプ構成設定により、選択したコア数に基づき、自動的に利用可能なメモリサイズの範囲が調整されます。これにより、インスタンスに設定される当初のデフォルトの接続数上限も設定されます。

データベースに接続して次のコマンドを実行すると、インスタンスの接続数上限を確認できます。SELECT * FROM pg_settings WHERE name = 'max_connections';

レプリカの値は、プライマリの値以上の値である必要があります。プライマリの変更は、プライマリの新しい値よりも小さい値を持つレプリカか、デフォルト値から変更されていないレプリカに反映されます。

SQL Server

実際に接続可能なユーザー接続数は、使用している SQL Server のバージョンに依存し、さらに使用しているアプリケーションとハードウェアの制限にも依存します。SQL Server で接続可能なユーザー接続数は、最大 32,767 個までです。

SQL Server でのユーザー接続の構成については、リファレンス ドキュメントをご覧ください。

注意点

Cloud SQL コネクタの割り当て使用量

Cloud SQL Auth Proxy と他の Cloud SQL コネクタは、Cloud SQL Admin API の割り当てを使用します。割り当て使用量は次のように計算されます。

Quota used = Instances of the proxy * Instances of Cloud SQL * 2/更新の試行

更新の試行は、コネクタの起動時に行われます。通常、起動後 1 時間ごとに試行されますが、インスタンスのフェイルオーバーや Admin API の呼び出しの失敗など、なんらかの問題が発生した場合は 30 秒ごとになることもあります。

自動インスタンス検出や -projects パラメータを使用する場合は、インスタンス数が多いため、割り当て使用量が大きくなることがあります。Cloud SQL Auth Proxy は稼働中に、接続されているインスタンスごとに 1 時間あたり 2 つの API 呼び出しを発行します。

Cloud SQL を初めて使用する場合は、上記の式を覚えておき、次の点に注意を払ってください。

  • 新しい DB クライアントをスケールアップする速さ

  • インスタンスを追加する速さ

  • アプリケーションごとに異なるサービス アカウントを使用すること

Cloud SQL IAM データベース認証

各インスタンスには分単位のログイン割り当てがあります。これには、成功したログインと失敗したログインの両方が含まれます。割り当てを超過すると、一時的にログインできなくなります。頻繁にログインするのではなく、承認済みネットワークを使用してログインを制限することをおすすめします。ログインの承認の割り当ては、インスタンスごとに 1 分あたり 3,000 です。

転送ルールの割り当て

各 Cloud SQL インスタンスは、転送ルールとロードバランサで構成されています。転送ルールには、接続先のロードバランサの種類に基づく割り当て上限があります。転送ルールの種類ごと、プロジェクトごと、ネットワークごと、ピアリング グループごとに複数の割り当てがあります。Cloud SQL には、ネットワーク割り当てごとおよびピアリング グループの割り当てごとの、オーバーライド ルールもあります。つまり、Google がプロデューサー ネットワークのネットワークごとの割り当てを増やした場合、ピアリング グループごとの割り当ても同じ値に引き上げられます。

Cloud SQL プロデューサー VPC は、お客様の VPC とピアリングされるため、多くの場合、Cloud SQL プロデューサー ネットワークのネットワーク割り当てと、お客様の VPC のピアリング グループ割り当てに達します。

割り当てに達すると、次のような特定のオペレーションは失敗することがあります。

  • 作成オペレーション: 新しいインスタンスを作成する場合は、新しい転送ルールが必要です。

  • 更新オペレーション: インスタンスのネットワークはお客様が切り替えることができるため、新しいネットワークには新しい転送ルールが必要になります。

  • メンテナンス オペレーション: 転送ルールは再作成されます。

このような問題が発生した場合は、サポートケースを登録してください。Google が関連する割り当てを増やします。

引き上げることができない上限

IOPS

IOPS とは、ディスクで 1 秒あたりに処理可能な入出力オペレーション(読み取り / 書き込みオペレーション)の回数です。

Cloud SQL は永続ストレージ ディスクを持つ Compute Engine 仮想マシン(VM)を使用します。具体的な VM のパフォーマンス特性の詳細については、永続ディスクのパフォーマンスの表で最大持続 IOPS をご覧ください。

テーブルの上限

Cloud SQL for MySQL のデフォルトの上限は 50,000 テーブルです。または、ハードウェアの最小要件(少なくとも 32 コア、最小 200 G メモリ)を満たしている場合は、インスタンスあたり 500,000 テーブルになります。最適なパフォーマンスを得るには、1 つのデータベースに含まれるテーブル数を 50,000 以下にすることをおすすめします。

これらの上限を超えるインスタンスは、SLA の対象外です。テーブルのサイズが Linux パーティションの最大サイズである 16 TB に達すると、データを追加できなくなります。

インスタンスに必要なメモリは、さまざまな要因によって異なります。Cloud SQL for MySQL でのメモリの使用方法の詳細については、MySQL でメモリを使用する方法をご覧ください。

アクティブ テーブル数が Cloud SQL のデフォルトよりも大きい場合、または全体のキャッシュ サイズが大幅に大きい場合は、インスタンスを調整する必要があります。最適なパフォーマンスを維持するために、次のことを行えます。

  • 大容量メモリのオプションを使用するには、Cloud SQL Enterprise Plus エディションにアップグレードします。
  • Cloud SQL マシンをアップグレードして、インスタンスにメモリを追加します。
  • innodb_buffer_pool_size データベース フラグの値を減らします。

table_open_cache フラグと table_definition_cache フラグを使用すると、Cloud SQL for MySQL テーブル キャッシュを変更できます。パフォーマンス スキーマを使用して、インスタンスのテーブル キャッシュ サイズを見積もることができます。

アクティブ テーブル数が Cloud SQL のテーブルのデフォルトと MySQL によるオープンテーブルの推奨の両方よりも大幅に大きい場合は、Cloud SQL では、インスタンスのアクティブなデーブル数を使用して table_open_cachetable_definition_cache のデータベース フラグを構成することをおすすめします。詳細については、MySQL によるテーブルの開閉方法をご覧ください。

オペレーションの上限

マイクロ階層と小規模階層のマシンタイプでは、同時実行するオペレーションの数が制限されます。これらの上限を超えると Too many operations エラーが発生します。

db-custom-1-3840(単一 CPU)マシンタイプ同時実行オペレーションの上限は 50 です。

指標の収集の上限

最大 500 個のデータベースについて、PostgreSQL の指標が収集されます。500 個を超えるデータベースがある場合は、特定の指標の上位 500 個のみが含まれます。これらのデータベースには、トランザクション数が最も多く含まれています。

Cloud SQL のストレージ上限

  • 専用コア: 最大 64 TB。

  • 共有コア: 最大 3 TB。

    詳細については、インスタンスの料金をご覧ください。

Cloud SQL のストレージ オプション

最適なパフォーマンスを得られるストレージ オプションを構成するには、ワークロードを理解して、適切なディスクタイプとサイズを選ぶことが重要です。Cloud SQL で利用可能な選択肢の詳細については、インスタンスの設定をご覧ください。

App Engine に関する上限

スタンダード環境で実行される App Engine の各インスタンスでは、インスタンスに対する同時接続数が最大 100 個に制限されます。PHP 5.5 アプリについては、同時接続数が最大 60 個に制限されます。

App Engine アプリケーションでは、使用状況や環境に応じてリクエストに時間上限が設けられる場合があります。詳しくは、App Engine のスタンダード環境とフレキシブル環境におけるインスタンスの管理方法をご覧ください。

さらに App Engine アプリケーションには、App Engine の割り当てページで説明されている App Engine の割り当てと上限も適用されます。

Cloud Run に関する上限

Cloud Run コンテナ インスタンスは、Cloud SQL データベースに対して 100 接続に制限されています。Cloud Run サービスまたはジョブの各インスタンスはデータベースに対して 100 接続を保持できるため、このサービスまたはジョブがスケールすると、デプロイあたりの接続の合計数が増加する可能性があります。

Cloud Functions に関する上限

Cloud Functions(第 1 世代)では、インスタンスごとの同時実行数が 1 に制限されています。第 1 世代の関数インスタンスで同時に 2 つのリクエストが処理されることはありません。ほとんどの場合、必要なデータベース接続は 1 つだけになります。

Cloud Functions(第 2 世代)は Cloud Run を基盤としており、インスタンスあたりのデータベース接続の上限は 100 です。