このページでは、Cloud SQL のデータベース フラグを構成する方法について説明し、インスタンスに設定できるフラグの一覧も示します。データベース フラグは、SQL Server パラメータの調整、オプションの調整、インスタンスの構成や調整など、多くの操作で使用します。
データベース インスタンスのフラグを設定、削除、変更すると、データベースが再起動される場合があります。その場合、フラグの値はフラグを削除するまでインスタンスに対して保持されます。インスタンスがレプリカのソースで、インスタンスが再起動されると、レプリカはインスタンスの現在の構成に合わせて再起動します。
データベース フラグを構成する
以降のセクションでは、一般的なフラグ管理タスクについて説明します。
データベース フラグを設定する
コンソール
- Google Cloud コンソールで、データベース フラグを設定する Cloud SQL インスタンスを含むプロジェクトを選択します。
- インスタンスを開き、[編集] をクリックします。
- [フラグ] セクションに移動します。
- それまでにインスタンスで設定したことのないフラグを設定するには、[項目を追加] をクリックし、プルダウン メニューからフラグを選択して、その値を設定します。
- [保存] をクリックして、変更を保存します。
- [概要] ページの [フラグ] で、変更を確認します。
gcloud
インスタンスを編集します。
gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2
このコマンドでは、以前に設定されたすべてのデータベース フラグが上書きされます。これらを保持し、新しいフラグを追加するには、インスタンスに設定するすべてのフラグの値を含めます。具体的に含まれていないフラグはデフォルト値に設定されます。値のないフラグについては、フラグ名の後に等号(=)を付けておきます。
たとえば、フラグ 1204、remote access、remote query timeout (s) を設定するには、次のコマンドを使用します。
gcloud sql instances patch INSTANCE_NAME \ --database-flags="1204"=on,"remote access"=on,"remote query timeout (s)"=300
Terraform
データベース フラグを追加するには、Terraform リソースを使用します。
変更を適用する
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tfにする必要があります(例:main.tf)。このチュートリアルでは、このファイルをmain.tfとします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tfにサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgradeオプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
変更を削除する
変更を削除するには、次の手順を行います。
- 削除の保護を無効にするには、Terraform 構成ファイルで
deletion_protection引数をfalseに設定します。deletion_protection = "false"
- 次のコマンドを実行します。プロンプトで「
yes」と入力して、更新された Terraform 構成を適用します。terraform apply
-
次のコマンドを実行します。プロンプトで「
yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。terraform destroy
REST v1
既存のデータベースのフラグを設定するには:
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
リクエストの本文(JSON):
{
"settings":
{
"databaseFlags":
[
{
"name": "flag_name",
"value": "flag_value"
}
]
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
データベースにすでに構成されているフラグがある場合は、以前のコマンドを変更するときにそれらのフラグも含めるようにします。PATCH コマンドは、既存のフラグをリクエストで指定されているフラグで上書きします。
REST v1beta4
既存のデータベースのフラグを設定するには:
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
リクエストの本文(JSON):
{
"settings":
{
"databaseFlags":
[
{
"name": "flag_name",
"value": "flag_value"
}
]
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
データベースにすでに構成されているフラグがある場合は、以前のコマンドを変更するときにそれらのフラグも含めるようにします。PATCH コマンドは、既存のフラグをリクエストで指定されているフラグで上書きします。
すべてのフラグをデフォルト値にクリアする
コンソール
- Google Cloud コンソールで、すべてのフラグをクリアする Cloud SQL インスタンスが含まれているプロジェクトを選択します。
- インスタンスを開き、[編集] をクリックします。
- [データベースのフラグ] セクションを開きます。
- 表示されているフラグの横にある X をクリックします。
- [保存] をクリックして、変更を保存します。
gcloud
インスタンスのすべてのフラグをデフォルト値にクリアします。
gcloud sql instances patch INSTANCE_NAME \ --clear-database-flags
インスタンスを再起動する確認を求められます。
REST v1
既存のインスタンスのフラグをすべてクリアするには:
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
リクエストの本文(JSON):
{
"settings":
{
"databaseFlags": []
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
REST v1beta4
既存のインスタンスのフラグをすべてクリアするには:
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
リクエストの本文(JSON):
{
"settings":
{
"databaseFlags": []
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
インスタンスに設定されているデータベース フラグを確認する
Cloud SQL インスタンスに対して設定されているフラグを確認するには:
コンソール
- Google Cloud コンソールで、設定されているデータベース フラグを確認する Cloud SQL インスタンスを含むプロジェクトを選択します。
- インスタンスを選択して、[インスタンスの概要] ページを開きます。
設定済みのデータベース フラグは、[データベースのフラグ] セクションに一覧表示されます。
gcloud
インスタンスの状態を取得します。
gcloud sql instances describe INSTANCE_NAME
出力では、データベース フラグは settings の下にコレクション databaseFlags として一覧表示されます。出力でのフラグの表示の詳細については、インスタンスのリソースの表示をご覧ください。
REST v1
インスタンスに構成されているフラグを一覧表示するには:
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
出力で databaseFlags フィールドを探します。
REST v1beta4
インスタンスに構成されているフラグを一覧表示するには:
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
出力で databaseFlags フィールドを探します。
サポートされているフラグ
Cloud SQL では、このセクションに記載されているフラグのみがサポートされます。
| Cloud SQL フラグ | 型 有効な値と注意事項 |
再起動が 必要か |
|---|---|---|
| 1204(トレースフラグ) | booleanon | off |
× |
| 1222(トレースフラグ) | booleanon | off |
× |
| 1224(トレースフラグ) | booleanon | off |
× |
| 2528(トレースフラグ) | booleanon | off |
× |
| 3205(トレースフラグ) | booleanon | off |
× |
| 3226(トレースフラグ) | booleanon | off |
× |
| 3625(トレースフラグ) | booleanon | off |
○ |
| 4199(トレースフラグ) | booleanon | off |
× |
| 4616(トレースフラグ) | booleanon | off |
× |
| 7806(トレースフラグ) | booleanon | off |
○ |
| access check cache bucket count | integer0 ... 65536 |
× |
| access check cache quota | integer0 ... 2147483647 |
× |
| affinity mask | integer2147483648 ... 2147483647 |
はい |
| agent xps | booleanon | off |
× |
| automatic soft-numa disabled | booleanon | off |
○ |
| cloud sql xe バケット名 | stringバケット名は、接頭辞 gs:// で始まる必要があります。 |
× |
| cloud sql xe 出力の合計ディスクサイズ(MB) | integer10~512 |
× |
| cloud sql xe ファイルの保持時間(分) | integer0~10080 |
× |
| cloud sql xe アップロード間隔(分) | integer1~60 |
× |
| cloudsql enable linked servers | booleanon | off |
いいえ |
| cost threshold for parallelism | integer0 ... 32767 |
× |
| contained database authentication | booleanon | off |
× |
| cross db ownership chaining | booleanon | off
|
× |
| cursor threshold | integer-1 ... 2147483647 |
× |
| default full-text language | integer0 ... 2147483647 |
× |
| デフォルトの言語 | integer0~32 |
× |
| default trace enabled | booleanon | off |
× |
| disallow results from triggers | booleanon | off |
× |
| external scripts enabled | booleanon | off |
○ |
| ft crawl bandwidth (max) | integer0 ... 32767 |
× |
| ft crawl bandwidth (min) | integer0 ... 32767 |
× |
| ft notify bandwidth (max) | integer0 ... 32767 |
× |
| ft notify bandwidth (min) | integer0 ... 32767 |
× |
| fill factor (%) | integer0 ... 100 |
はい |
| index create memory (kb) | integer704 ... 2147483647 |
× |
| locks | integer5000 ... 2147483647 |
○ |
| max degree of parallelism(MAXDOP) | integer0 ... 32767 |
× |
| max server memory (mb) | integer1000...2147483647
Cloud SQL では、Microsoft の推奨値に基づいて、インスタンスにこのフラグの値を設定できます。詳細については、特別なフラグをご覧ください。 |
× |
| max text repl size (b) | integer-1 ... 2147483647 |
× |
| max worker threads | integer128 ... 65535 |
× |
| nested triggers | booleanon | off |
× |
| optimize for ad hoc workloads | booleanon | off |
× |
| ph timeout (s) | integer1 ... 3600 |
× |
| query governor cost limit | integer0 ... 2147483647 |
× |
| query wait (s) | integer-1 ... 2147483647 |
× |
| recovery interval (min) | integer0 ... 32767 |
× |
| remote access | booleanon | off |
○ |
| remote login timeout (s) | integer0 ... 2147483647 |
× |
| remote query timeout (s) | integer0 ... 2147483647 |
× |
| transform noise words | booleanon | off |
× |
| two digit year cutoff | integer1753 ... 9999 |
× |
| user connections | integer0、10 ... 32767 |
○ |
| user options | integer0 ... 32767 |
× |
特別なフラグ
このセクションでは、Cloud SQL for SQL Server のフラグに関する追加情報について説明します。
max degree of parallelism (MAXDOP)
Max degree of parallelism (MAXDOP) は、Cloud SQL for SQL Server で使用できる Microsoft データベース フラグです。このフラグを使用すると、並列プランで単一のクエリを実行するときに使用される最大スレッド数を制限できます。
デフォルト値の 0 のままにすると、データベース インスタンスは使用可能なすべてのプロセッサを使用します。ただし、数百のデータベースを含むインスタンスを管理している場合は、この方法が効率的でない場合や、実用的でない場合もあります。
フラグの値を設定する際は、Microsoft のドキュメントの推奨事項に従うことをおすすめします。推奨値は、NUMA ノードの数と使用可能な論理プロセッサの数によって異なる場合があります。
NUMA ノードの構成は、sys.dm_os_sys_info の動的管理ビュー(DMV)を使用して確認できます。NUMA ノードの構成を確認するには、次のようなコード スニペットを使用します。
SELECT socket_count,cores_per_socket,numa_node_count
FROM sys.dm_os_sys_info
MAXDOP を使用して並列プランの実行で許可する最大プロセッサ数を制限できますが、並列オペレーションを別のプロセッサに拡張する前に、並列処理のコストしきい値機能を使用して、単一のプロセッサに設定する最小コストを指定することもできます。これらの機能を使用すると、並列プランの実行の効率と費用をより適切に制御できます。
これらの機能の推奨値は場合によって異なり、サーバーとアプリケーションのワークロードのニーズによって影響を受けます。
サーバーの並列処理値に最適な MAXDOP と費用のしきい値を決定するには、次のリソースをご覧ください。
デフォルト値を変更すると、次の潜在的な問題に対処できます。
max degree of parallelism (MAXDOP)フラグが0に設定されている場合、SharePoint のダウンロードを必要とするインスタンスまたはクライアント アプリケーションは失敗します。SharePoint のダウンロードでは、事前チェックが行われます。この事前チェックでは、このフラグに数値が要求され、1 未満の値は許可されません。- MAXDOP フラグをデフォルトの
0のままにすると、事実上上限がなくなり、使用可能なすべてのプロセッサを並列オペレーションに使用できるようになります。この値は、常に小規模なクエリを実行するサーバーでは問題ないとしても、非常に大規模なクエリも定期的に実行する必要がある場合は、費用の問題が発生する可能性があります。
max degree of parallelism (MAXDOP) フラグを使用すると、スレッド数を次の 3 つのレベルで制御できます。
- インスタンス レベル(データベース フラグを使用)
- データベース スコープ(TSQL を使用)
- クエリレベル(クエリヒントを使用)
インスタンスのサイズを変更しても、フラグの値は変更されません。
max server memory (mb)
max server memory (mb) フラグは、Cloud SQL が内部プールに割り当てることができるメモリ量を制限します。
このフラグの値を構成せず、Cloud SQL に値を管理させることをおすすめします。この値を手動で管理する必要がある場合は、一般的な推奨事項として、SQL Server がすべてのメモリを消費しないように、max server memory (mb) 値を使用可能なメモリの約 80% に設定することをおすすめします。
逆に、メモリ容量が大きいインスタンスの場合、使用可能なメモリの 80% では値が低すぎて、メモリ使用量の浪費につながる可能性があります。
このフラグの値を設定しない場合は、Cloud SQL がインスタンスの RAM のサイズに基づいて値を自動的に管理します。また、インスタンスのサイズを変更すると、Cloud SQL は新しいインスタンス サイズの推奨事項を満たすようにフラグの値を自動的に調整します。このサイズ変更オペレーションでは、フラグに手動で設定された値も削除されます。これにより、過剰割り当てを防ぎ、メモリ不足の問題によるクラッシュの可能性を減らし、インスタンスのパフォーマンスの低下を回避することで、データベースがリソースをより効率的に使用できるようになります。
詳細については、最大サーバーメモリと高いメモリ使用量の最適化をご覧ください。
トラブルシューティング
| 問題 | トラブルシューティング |
|---|---|
| Cloud SQL インスタンスのタイムゾーンを変更する。 |
インスタンスのタイムゾーンを更新する方法については、インスタンスの設定をご覧ください。 Cloud SQL for SQL Server では、時間変換などに |
次のステップ
- SQL Server の構成オプションについて学習します。