すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:パフォーマンスパラメータのチューニング

最終更新日:Mar 29, 2026

AnalyticDB for PostgreSQL は、ほとんどのユースケースですぐに使用できます。しかし、高い接続同時実行性、メモリ集約型のクエリ、または優先度が混在するワークロードなど、特定のパフォーマンス要件があるシナリオでは、データベースパラメーターをチューニングすることで、スループットとリソース使用率を大幅に向上させることができます。

パラメーターレベル

パラメーターは 4 つのレベルで適用されます。下位レベルで設定されたパラメーターは、そのスコープにおいて上位レベルの同じパラメーターをオーバーライドします。

レベルスコープ設定方法
システムインスタンス内のすべてのデータベースにわたるすべてのユーザー運用保守 (O&M) 担当者にチケットを起票
データベース指定されたデータベース内のすべてのセッションALTER DATABASE name SET parameter { TO | = } { value | DEFAULT };
ロール指定されたユーザーのすべてのセッションALTER ROLE name SET parameter { TO | = } { value | DEFAULT };
セッション現在のセッションのみSET parameter { TO | = } { value | DEFAULT };
セッションレベルのチューニングから始めてください。変更が他のユーザーやワークロードに影響を与えないことを確認した後にのみ、上位レベルのパラメーターを変更してください。

パラメーターの現在値の確認

パラメーターを変更する前に、その現在値を確認します。

-- 現在のセッションで特定のパラメーターを確認
SHOW statement_mem;

-- 現在のデータベースのすべてのパラメーターを確認
SELECT name, setting, unit, context FROM pg_settings WHERE name = 'statement_mem';

システムレベルのパラメーター

以下のパラメーターを変更するには、チケットの起票が必要です。詳細については、Greenplum 構成パラメーターリファレンスをご参照ください。

パラメーターデフォルト値タイプ/単位有効な値
gp_autostats_modeON_NO_STATSSTRINGNONE, ON_CHANGE, ON_NO_STATS
gp_autostats_mode_in_functionsNONESTRINGNONE, ON_CHANGE, ON_NO_STATS
gp_max_slices50INT0–1000
log_rotation_size102400KB0–4194304
master.rds_enable_vmem_protectonSTRINGon, off
master.rds_max_non_super_conns500INT10–1000
max_stack_depth2048KB100–2048000
max_statement_mem2048000KB32768–2147483647
optimizeronSTRINGon, off
random_page_cost4DOUBLE0–1000
rds.rds_enable_aliyun_oss_endpointonSTRINGon, off
rds.rds_enable_oss_endpoint_whitelist_checkonSTRINGon, off
rds_max_super_conns50INT10–100
segment.rds_enable_vmem_proctectoffSTRINGon, off
segment.rds_max_non_super_conns1000INT10–3000
statement_mem2047000KB50–2147483647
statement_timeout10800000INT0–2147483647

接続パラメーター

これらのパラメーターは、インスタンスが受け入れる同時接続数を制御します。設定を誤ると、高い同時実行性のシナリオで接続エラーが発生する可能性があります。

パラメーター有効になるタイミング依存関係説明
max_connectionsインスタンスの再起動コンピュートノードの値は、コーディネーターノードの値の 3~5 倍である必要がありますノードあたりの最大同時接続数です。max_connections を直接増やすのではなく、代わりに rds_max_non_super_conns を調整してください。このパラメーターは再起動なしで有効になります。同時実行性が高い短時間接続の場合は、rds_max_non_super_conns を 500 から max_connections の値の間の値に設定します。
max_prepared_transactionsインスタンスの再起動max_connections と同じ値に設定します。2 × max_prepared_transactionsrds_max_non_super_conns + rds_max_super_conns を超える必要があります。2フェーズコミット (2PC) 状態のトランザクションの最大数です。高い同時実行性のもとでエラーが発生した場合は、この値を増やしてください。
rds_max_non_super_conns設定のリロードmax_connections より小さい値にする必要があります。rds_max_non_super_conns + rds_max_super_connsmax_connections を超えてはなりません。コンピュートノードの値は、コーディネーターノードの値の 3~5 倍である必要があります。スーパーユーザー以外の最大接続数です。接続制限を管理するには、このパラメーターを調整することが推奨されます。
rds_max_super_conns設定のリロードrds_max_non_super_conns と同じ制約です。スーパーユーザーの最大接続数です。ほとんどの場合、調整は不要です。

接続制限に達した場合: rds_max_non_super_conns を引き上げます (再読み込みで即座に反映されます)。上限がすでに max_connections になっている場合は、まず max_connections を引き上げてから (再起動が必要です)、rds_max_non_super_conns を引き上げます。

メモリパラメーター

これらのパラメーターは、クエリにメモリを割り当て、セッション間で共有する方法を制御します。メモリ不足 (OOM) エラーでクエリが失敗する場合や、メモリが十分に活用されていない場合に、これらのパラメーターをチューニングします。

パラメーター単位有効になるタイミング依存関係説明
shared_buffersKBインスタンスの再起動行指向テーブルのワークロードの場合、コンピュートノードでインスタンスメモリの 25% 以上に設定します。共有バッファプールのサイズ。コーディネーターノードとコンピュートノードで個別に設定します。コーディネーターノードのキャッシュにはデータディクショナリテーブルが保持され、コンピュートノードは行指向テーブルをキャッシュします。Append-optimized column-oriented (AOCO) テーブルはこの設定の影響を受けません。インスタンスに 100,000 を超えるテーブルがある場合は、コーディネーターノードとコンピュートノードの両方でこの値を増やしてください。
temp_buffersKB構成の再読み込みセッションレベルで一時テーブルにアクセスするために使用される一時バッファのサイズ。デフォルト:8 MB。大規模な一時テーブルのパフォーマンスを向上させるには、セッションレベルでこの値を増やします。
gp_vmem_protect_limitMBインスタンスの再起動gp_vmem_protect_limit = gp_vmem / acting_primary_segmentsgp_vmem = ((SWAP + RAM) - (7.5 GB + 0.05 × RAM)) / 1.7gp_vmem_protect_limit = gp_vmem / acting_primary_segmentsコンピュートノード上のすべての postgres プロセスが使用できる最大メモリ。クエリがこの制限を超えるメモリを必要とする場合、クエリは失敗します。プライマリおよびセカンダリのコンピュートノードで個別に設定します。適切な値を計算します:`gp_vmem = ((SWAP + RAM) - (7.5 GB + 0.05 × RAM)) / 1.7`、次に `gp_vmem_protect_limit = gp_vmem / acting_primary_segments`。メモリ不足エラーでクエリが失敗する場合は、この値を増やしてください。クエリごとのメモリ制限を設定するには、代わりにリソースキューパラメーターを使用します。詳細については、「ワークロード管理のためのリソースキューの使用」をご参照ください。
gp_vmem_protect_segworker_cache_limitKBインスタンスの再起動コンピュートノード上のクエリエグゼキュータプロセスごとにキャッシュされる最大メモリ。インスタンスに多数の接続またはアイドルプロセスがある場合は、この値を減らしてアクティブなクエリのためにメモリを解放します。各コンピュートノードで個別に設定します。
gp_resqueue_memory_policy構成の再読み込みメモリ管理ポリシー。eager_free は、各クエリプランステージの終了時にメモリを解放し、次のステージで利用可能にします — OOM のリスクを低減しますが、オーバーヘッドが発生します。auto は、statement_mem およびリソースキューのメモリ制限に基づいてメモリを割り当てます。
statement_memKB構成の再読み込みgp_resqueue_memory_policyauto に設定されている場合に有効になります。max_statement_mem を超えてはなりません。ホスト上のクエリごとに割り当てられるメモリ。クエリがこの制限を超えるメモリを必要とする場合、一時ディスクファイルにスピルされます。適切な値は、次の式で計算します: statement_mem = (gp_vmem_protect_limit GB × 0.9) / max_expected_concurrent_queries。 例えば、gp_vmem_protect_limit = 8 GB で、想定される同時クエリ数が 40 の場合、(8 GB × 0.9) / 40 = 184 MB となります。
max_statement_memKB構成の再読み込み(seghost_physical_memory) / (average_number_concurrent_queries)クエリごとのメモリ割り当ての上限値。コンピュートノードで statement_mem の値が高すぎた場合に OOM エラーを防止します。適切な値を計算します:max_statement_mem = seghost_physical_memory / average_number_concurrent_queries

ワークロードパラメーター

これらのパラメーターは、同時実行ワークロード間での CPU 割り当てとクエリの優先度付けを制御します。

パラメーター有効な値有効になるタイミング依存関係説明
gp_resqueue_priorityBOOLEANインスタンスの再起動クエリの優先度付けを有効または無効にします。無効にすると、リソースキューの優先度設定はランタイムに影響を与えません。すべてのクエリが CPU を平等に競合すべき遅延の影響を受けやすいシナリオでは、優先度付けを無効にします。
gp_resqueue_priority_cpucores_per_segment0.1–512.0インスタンスの再起動各コンピュートノードに割り当てられる CPU コアの数。インスタンス作成時の実際の CPU 数と一致するように設定します。値が正しくないと、CPU の非効率な利用が発生し、クエリの優先度付けの信頼性が低下します。
gp_resqueue_priority_sweeper_interval500–15000 msインスタンスの再起動gp_resqueue_priority が有効である必要がありますアクティブなクエリの CPU 使用率が再計算される間隔。間隔を短くすると、優先度付けの精度が向上しますが、CPU オーバーヘッドが増加します。

gp_resqueue_priority のトレードオフ: クエリの優先度付けを無効にすると、スケジューリングのオーバーヘッドが解消され、均一なワークロードのスループットが向上する可能性があります。ワークロードに遅延の影響を受けやすいクエリとバッチクエリが混在している場合は、優先度付けを有効にし、リソースキューを介して優先度を割り当ててください。詳細については、「ワークロード管理のためのリソースキューの使用」をご参照ください。

次のステップ