Databases for PostgreSQL 設定の変更
IBM Cloud® Databases for PostgreSQL PostgreSQL の設定の一部を変更できるようにし、 PostgreSQL データベースをユースケースに合わせて調整できるようにします。 データベース構成への永続的な変更を行うには、 Cloud Databases CLI プラグイン または API を使用して、デプロイメントの構成ファイルに変更を書き込みます。
構成はスキーマで定義されています。 変更を加えるには、対象の設定と新しい設定値を含む JSON オブジェクトを API または CLI に渡します。 例えば、設定 max_connections を150に設定するには、以下のように指定します:
{"configuration":{"max_connections":150}}
CLI または API へ。
詳細は 接続の管理 を参照してください。
Databases for PostgreSQL での CLI の使用
deployment-configuration-schema コマンドを使用して、デプロイメントのデフォルト構成を確認できます。 コマンド deployment-configuration-schema の出力は、設定を変更した後でもデフォルト設定のみを表示します。 データベース固有の変更を確認するには、データベースを直接クエリしてください。
ibmcloud cdb deployment-configuration-schema <INSTANCE_NAME_OR_CRN>
同様に、 deployment-configuration コマンドを使用して構成を変更します。
ibmcloud cdb deployment-configuration <INSTANCE_NAME_OR_CRN> [@JSON_FILE | JSON_STRING]
このコマンドは、変更内容を JSON オブジェクトまたはファイルから読み取ります。 詳しくは、リファレンス・ページを参照してください。
IBM Cloud® Databases for PostgreSQL での API の使用
2 つのデプロイメント構成エンドポイントにより、構成スキーマの表示と構成の変更が可能になります。 構成スキーマを表示するには、GET 要求を /deployments/{id}/configuration/schema に送信します。
構成を変更するには、変更する設定を JSON オブジェクトとして PATCH 要求の本文に指定して /deployments/{id}/configuration に送信します。
詳細については、 APIリファレンスを参照してください。
利用可能なIBM Cloud® Databases for PostgreSQL構成設定
このセクションでは、利用可能な IBM Cloud Databases for PostgreSQL の設定に関する情報を提供します。 ここに記載されていない設定を製品機能の改善案として提案する場合は、 IBM アイデアポータル でアイデアを提出してください。 ご希望であれば、 IBM Cloud Ideas で、 IBM Cloud の機能強化のみを表示するように制限できます。
IBM Cloud® Databases for PostgreSQL タイムゾーンの設定
IBM Cloud® Databases for PostgreSQL デプロイメントのタイム・ゾーンは、常に UTC (協定世界時) です。 この設定は、クライアントによって構成することはできません。
IBM Cloud® Databases for PostgreSQL メモリ設定
- デフォルト -
32000(8 KiB バッファーの数、または約 262 MB) - 推奨される最大値: 使用可能な RAM の 25%
- データベースを再始動する - はい
shared_buffers のメモリー割り振り量は、デプロイメントの RAM の 25% にすることをお勧めします。 設定値を shared_buffers これ以上高くすると、メモリ問題が発生してデータベースがクラッシュする可能性があり、またデータは既にOSによってバッファリングされている可能性が高いため、データベースのパフォーマンスが低下する恐れがあります。 割り当てられたメモリ量と同等、ほぼ同等、またはそれ以上に設定
shared_buffers すると、データベースの起動が妨げられます。 設定では、8 KiB の共有メモリー・バッファーの数が指定されます。
例えば、1 GB の shared_buffers スペースは 1048576 KiB であるため、(1048576 KiB / 8 KiB) により 131072 個のバッファーとなります。 デプロイメントは、shared_buffers に割り振らなくても追加の RAM をキャッシングとパフォーマンスのために使用することができます。 割り当てられた
RAM をすべて使用するようにデータベースを構成しなくても、デプロイメントはすべての RAM を使用できます。
既存のワークロードの場合、または RAM をスケーリングしているときには、メモリーを共有バッファーにまで拡大することが最適な操作とはならない可能性があります。 代わりに、テーブルと索引のキャッシュ・ヒット率を追跡してください。 キャッシュヒット率が90%台後半である場合、OSが他の領域のメモリを使用できるようにし、 shared_buffers 増大させないようにする。
admin ユーザーや pg_monitor 役割を持つユーザーは、以下の照会を使用してキャッシュ・ヒット率を追跡できます。
テーブル
SELECT
sum(heap_blks_read) as heap_read,
sum(heap_blks_hit) as heap_hit,
sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) as table_hit_ratio
FROM
pg_statio_user_tables;
索引
SELECT
sum(idx_blks_read) as idx_read,
sum(idx_blks_hit) as idx_hit,
(sum(idx_blks_hit) - sum(idx_blks_read)) / sum(idx_blks_hit) as index_hit_ratio
FROM
pg_statio_user_indexes;
work_mem 値は、 shared_buffer 構成値および max_connection 構成値に関連して自動的に調整されます。
IBM Cloud® Databases for PostgreSQL一般設定
- デフォルト - 115
- データベースを再始動する - はい
- 注意事項 - 最大接続数を増やす前にスケーリングしなければならない場合があります。
- デフォルト-64
- オプション - 最小値は10
- データベースを再始動する - はい
- デフォルト-
50 - データベースを再始動する - はい
- 注意事項 - この値を
0に設定すると、 プリペアド・トランザクションが使用できなくなる。
- デフォルト-
local - データベースを再始動する - いいえ
- オプション -
local、on、またはoff - 注 -
synchronous_commitをオフに設定すると、トランザクション・コミット率が増加しますが、クリーンでないシャットダウンが発生した場合は、コミットされたトランザクションが失われます。synchronous_commitがonに設定されている場合、トランザクションは、リーダーと少なくとも 1 つのレプリカに書き込まれたときにのみコミットされます。 したがって、on設定は、少なくとも 3 つのメンバーに水平方向にスケーリングされたフォーメーションでのみ使用できます。 この変更を実施する前に、 高可用性を 参照してください。
- デフォルト-
12 - データベースを再始動する - いいえ
- 注意事項 - この設定はデフォルトのままにしておくことをお勧めします。 プロファイルが作成された SQL 照会があり、非効率なビットマップ・ヒープ・スキャンが確認された場合にのみ、この値を大きくしてください。 IOPSはディスクサイズに依存 するため、デフォルトまたはそれより小さいサイズのディスクでこの設定値を上げることも推奨されません。
- デフォルト-
10000 - データベースを再始動する - いいえ
- オプション - 最小値 100
- 注意事項 - デッドロックを検査するまで待機するミリ秒数であり、ロック待機がログに記録される間隔でもあります。 ロギング統合を介して使用可能なログ。 この数値の設定が小さすぎると、パフォーマンスに悪影響があります。
- デフォルト-
off - データベースを再始動する - いいえ
- オプション -
on値またはoff値 - 注記 - この値を に設定すると、
onログが詳細になります。 また、60 秒ごとにメトリックが抽出されるので、モニタリング・ツールの接続も示されます。 これをonに設定する場合は、接続 URI に application_name を設定してログに概要を保持するようにすることをお勧めします。示される IP アドレスは Kubernetes 内部 IP だからです。 接続URIの調整に関する詳細は 、 PostgreSQL のドキュメントに記載されています。offに設定した場合は、デフォルト設定と比べて動作の変化はなく、接続はログに記録されません。 ログは、ロギングとの統合を行うと利用できるようになります。onに設定した場合は、次の例のような行がログで示されます。この例では、アプリケーション名はtest-appに設定されています。
2021-03-01 10:27:56 UTC [[unknown]] [00000] [708]: [2-1] user=admin,db=ibmclouddb,client=127.0.0.1 LOG: connection authorized: user=admin database=ibmclouddb application_name=test-app SSL enabled (protocol=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384, bits=256, compression=off)
- デフォルト-
off - データベースを再始動する - いいえ
- オプション -
on値またはoff値 - 注記 - この値を に設定すると、
onログが詳細になります。 また、監視ツールが60秒ごとにメトリクスを抽出する際の切断も表示します。 これをonに設定する場合は、接続 URI に application_name を設定してログに概要を保持するようにすることをお勧めします。示される IP アドレスは Kubernetes 内部 IP だからです。 接続URIの調整に関する詳細は 、 PostgreSQL のドキュメントに記載されています。offに設定した場合は、デフォルト設定と比べて動作の変化はなく、切断はログに記録されません。 ログは、ロギングとの統合を行うと利用できるようになります。onに設定した場合は、次の例のような行がログで示されます。この例では、アプリケーション名はtest-appに設定されています。
2021-03-01 10:27:56 UTC [test-app] [00000] [708]: [3-1] user=admin,db=ibmclouddb,client=127.0.0.1 LOG: disconnection: session time: 0:00:00.793 user=admin database=ibmclouddb host=127.0.0.1 port=50638
- デフォルト-
100 - データベースを再始動する - いいえ
- オプション - 最小値 100
- 注意事項 - 指定したミリ秒数より長くかかっているステートメントがログに記録されます。
- デフォルト-
111 - データベースを再始動する - いいえ
- デフォルト-
15 - データベースを再始動する - いいえ
- デフォルト-
6 - データベースを再始動する - いいえ
IBM Cloud® Databases for PostgreSQL WAL設定
- デフォルト-
1800 - データベースを再始動する - いいえ
- オプション - 最小値 300
- 注意事項 - 次の WAL ファイルへの切り替えを強制するまで待機する秒数。 この秒数が経過した場合、およびデータベース・アクティビティーがあった場合、サーバーは新規セグメントに切り替えます。 データがアーカイブされない状態でいる時間を効果的に制限できます。
次の 3 つの設定 wal_level、max_replication_slots、および max_wal_senders によって、wal2json 論理デコード・プラグインを使用できるようになります。
このプラグインを使用しない場合は、これらの設定をデフォルトのままにします。
- デフォルト-
replica - データベース再始動 - 必要
- 注意事項 - WAL レベルを制御します。 許可される値は または
replicaですlogical。 論理デコードを使用logicalするように設定します。 論理デコードを使用しない場合にlogicalを使用すると WAL サイズが大きくなります。これには欠点がいくつかあるだけで、利点は一切ありません。
- デフォルト-
10 - データベース再始動 - 必要
- 注意事項 - 同時に定義できるレプリケーション・スロットの最大数。 デフォルトおよび最小のスロット数は 10 です。 高可用性 (HA) のためにデプロイメントが内部使用するものとして、20 個のスロットが予約されます。 スロットを使用するには、20 を超える値を設定し、コンシューマーごとに 1 つのスロットを用意する必要があります。 予期されるコンシューマーごとに、最小数を超えるスロットを 1 つ追加します。
wal2jsonを使用し、max_replication_slotsを大きくしないと、HA および読み取り専用レプリカに影響が生じる可能性があります。 を使用wal2jsonしていない場合は、この設定をデフォルトのままにしておいてください。
- デフォルト-
12 - データベース再始動 - 必要
- 注意事項 - 同時に実行できる WAL 送信側プロセスの最大数。 デフォルト値かつ最小値は12です。 コンシューマーごとに 1 つの
wal_senderが必要です。 高可用性 (HA) のためにデプロイメントが内部使用するものとして、20 個のスロットが予約されます。 値は20以上に設定する必要があり、予想される消費者数ごとに最低値に加えてwal_senderさらに1つ追加することが推奨されます。wal2jsonを使用し、max_wal_sendersを大きくしないと、HA および読み取り専用レプリカに影響が生じる可能性があります。 を使用wal2jsonしていない場合は、この設定をデフォルトのままにしておいてください。