更改您的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。
有關更多信息,請參閱 管理PostgreSQL連接。
搭配使用 CLI 與 Databases for PostgreSQL
您可以使用 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 物件或檔案進行的變更。 如需相關資訊,請參閱 參考頁面。
搭配使用 API 與 IBM Cloud® Databases for PostgreSQL
兩個部署配置端點容許檢視配置綱目及變更配置。 若要檢視配置綱目,請將 GET 要求傳送至 /deployments/{id}/configuration/schema。
若要變更配置,請將您想要在 PATCH 要求的要求內文中變更為 JSON 物件的設定傳送至 /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 緩衝區。 您的部署可以使用額外 RAM 來進行快取及效能,即使不將它配置給 shared_buffers 也一樣。 您不需要將資料庫配置成使用所有已配置的 RAM,即可讓部署使用它。
對於現有工作負載或調整 RAM 時,增加記憶體至共用緩衝區可能不是最佳的行動方針。 相反地,請追蹤您的表格及索引快取命中率。 如果快取命中率是在高 90 年代,請讓 OS 在其他區域中使用記憶體,而不是增加 shared_buffers。
您可以使用這些查詢作為 admin 使用者,或任何具有 pg_monitor 角色的使用者,來追蹤快取命中率:
Tables
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;
與 shared_buffer 和 max_connection 配置值相關的 work_mem 值會自動調整。
IBM Cloud® Databases for PostgreSQL常規設定
- 預設值-115
- 要重新啟動資料庫嗎? - 是
- 附註- 在增加連線數上限之前,您可能需要調整。
- 預設值-64
- 選項-最小值為 10
- 要重新啟動資料庫嗎? - 是
- 預設 -
50 - 要重新啟動資料庫嗎? - 是
- 註記 - 將值設定為
0會停用 預備交易,除非您需要使用它們,否則建議使用此值。
- 預設 -
local - 重新啟動資料庫-否
- 選項-
local、on或off - 附註-將
synchronous_commit設定為關閉,會增加交易確定率,但代價是如果發生未清除關閉,則會遺失已確定的交易。 如果synchronous_commit設為on,則只有在寫入主導器及至少一個抄本時,才會確定交易。 因此,on設定僅適用於已水平調整為至少三個成員的單位。 執行此變更之前,請參閱 高可用性。
- 預設 -
12 - 重新啟動資料庫-否
- 附註-建議將此設定保留為預設值。 只有在您側寫 SQL 查詢並觀察到無效的點陣圖資料堆掃描時,才會增加它。 因為 IOPS 關聯於磁碟大小,所以也不建議在預設或較小的磁碟上增加此設定。
- 預設 -
10000 - 重新啟動資料庫-否
- 選項-最小值為 100
- 附註-在檢查死鎖之前要等待的毫秒數,以及記載鎖定等待的持續時間。 透過 記載整合提供的日誌。 將此數字設得太低會對效能造成負面影響。
- 預設 -
off - 重新啟動資料庫-否
- 選項-
on或off的值 - Notes-將此值設為
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的值 - Notes-將此值設為
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
- Notes-記載所花費的時間超過指定毫秒數的陳述式。
- 預設 -
111 - 重新啟動資料庫-否
- 預設 -
15 - 重新啟動資料庫-否
- 預設 -
6 - 重新啟動資料庫-否
IBM Cloud® Databases for PostgreSQL WAL 設定
- 預設 -
1800 - 重新啟動資料庫-否
- 選項-最小值 300
- 附註-強制切換至下一個 WAL 檔案之前要等待的秒數。 如果已過了秒數,且有資料庫活動,則伺服器會切換至新的區段。 有效地限制資料可以保持未保存的時間量。
接下來的三個設定 wal_level、max_replication_slots 和 max_wal_senders 可啟用 wal2json 邏輯解碼外掛程式。 如果您不是使用此外掛程式,請將這些設定保留為預設值。
- 預設 -
replica - 重新啟動資料庫- YES
- 附註-控制項 WAL 層次。 容許值為
replica或logical。 設定為logical以使用邏輯解碼。 如果不使用邏輯解碼,使用logical會增加 WAL 大小,這有幾個缺點並且沒有真正的優點。
- 預設 -
10 - 重新啟動資料庫- YES
- 附註-同步定義的抄寫插槽數目上限。 預設及最小插槽數目是 10。 基於高可用性 (HA) 目的,您的部署會保留 20 個插槽供內部使用。 若要使用空位,您需要將值設為高於 20,且每個消費者有一個空位。 在每個預期消費者的下限之上新增一個額外空位。 使用
wal2json且不增加max_replication_slots可能會影響 HA 及唯讀抄本。 如果您不是使用wal2json,請將此設定保留為預設值。
- 預設 -
12 - 重新啟動資料庫- YES
- Notes-同步執行 WAL 傳送端處理程序的數目上限。 預設值及最小值為 12。 每個消費者需要一個
wal_sender。 基於高可用性 (HA) 目的,您的部署會保留 20 個插槽供內部使用。 您需要將值設定為高於 20,並且建議在每個預期消費者的最小值之外再新增一個wal_sender。 使用wal2json且不增加max_wal_senders可能會影響 HA 及唯讀抄本。 如果您不是使用wal2json,請將此設定保留為預設值。