全部產品
Search
文件中心

PolarDB:叢集參數預設值說明

更新時間:Dec 09, 2025

調整資料庫參數可用於最佳化效能、增強安全性或滿足特定功能需求。PolarDB PostgreSQL版在社區版的基礎上對部分參數進行了預最佳化,以在雲環境中提供良好的效能與穩定性。以下內容提供完整的參數參考和核心參數的配置建議,用於指導參數調優。

重要參數詳解

PolarDB PostgreSQL版參數預設值的設定,綜合了效能、可用性以及可靠性方面的考慮,與社區版本預設值不一定相同。特別是以下參數,PolarDB根據最優效能原則進行了預設設定,您可以根據自己的需求在控制台自行修改。

參數

說明

synchronous_commit

該參數用於控制一個事務在返回成功指示給用戶端之前,是否需要等待WAL記錄被寫入磁碟。取值如下:

  • off(預設):表示一個事務在返回成功指示給用戶端之前不需要等待WAL記錄被寫入磁碟。

    說明

    由於在向用戶端返回成功和真正保證事務持久性之間會有延遲(最大的延遲是wal_writer_delay的三倍,其中,wal_writer_delay預設為10 ms),因此參數設定為off時,可以提升資料庫的事務提交效率。

  • on:表示一個事務在返回成功指示給用戶端之前需要等待WAL記錄被寫入磁碟。

    說明

    如果應用依賴事務提交後,事務一定持久化到磁碟,可以在控制台中將參數設定為on。

  • remote_apply:表示一個事務在返回成功指示給用戶端之前需要等待WAL記錄被寫入磁碟。且需要確認資料apply在備份的本地交易記錄中,需要等待備份應用完事務,確保資料已經被處理,保證資料一致性。這將導致更大的提交延遲,因為其需等待WAL重放。

  • remote_write:表示一個事務在返回成功指示給用戶端之前需要等待WAL記錄被寫入檔案系統。

  • local:表示一個事務需要等待WAL記錄被寫入磁碟,但對返回成功指示給用戶端不作限制。

說明

您可以通過SHOW synchronous_commit;命令查看當前資料庫中該參數的設定情況。

wal_level

該參數用於決定將多少資訊寫入到WAL中。取值如下:

  • replica(預設):表示WAL中不包含邏輯解碼所需的資訊, 會降低WAL寫入量,從而可以提升資料庫寫入效能。

  • logical:表示業務中涉及邏輯複製功能,即WAL中包含邏輯複製所需的資訊,會增加WAL寫入量。

說明
  • 修改該參數會導致資料庫重啟,請謹慎操作。

  • 您可以通過SHOW wal_level;命令查看當前資料庫中該參數的設定情況。

log_statement

該參數用於設定審計日誌的層級。預設為ddl,表示只有DDL對應的SQL才會進行審計,更少的日誌列印可以提升資料庫效能。取值如下:

  • none:不記錄。

  • ddl(預設):記錄CREATE/ALTER/DROP等DDL語句。

  • mod:記錄DDL和DML(INSERT/UPDATE/DELETE)語句。

  • all:記錄所有SQL語句。

說明
  • 在控制台上開啟或關閉SQL洞察與審計功能會自動修改當前參數:

    • 開啟審計日誌會設定log_statement = all

    • 關閉審計日誌會設定log_statement = ddl

  • 您可以通過SHOW log_statement;命令查看當前資料庫中該參數的設定情況。

常見參數參考

說明

部分參數不支援在控制台上進行修改,您可以通過登入叢集並使用命令列的方式進行查看與修改。

串連與認證

參數

說明

authentication_timeout

設定用戶端完成身份認證的最長等待時間。如果用戶端在此時間內未能完成認證,伺服器將主動關閉串連,以防止有問題的用戶端長時間佔用串連資源。

  • 取值範圍:1~600

  • 預設值:60

  • 單位:秒

ssl

控制執行個體是否啟用並支援SSL加密串連。

  • 取值範圍:ON/OFF

  • 預設值:OFF

自動清理 (Autovacuum)

自動清理(Autovacuum)進程負責回收死元組(已刪除或已更新的資料行所佔用的空間)並更新表的統計資訊,對鑑效組資料庫效能至關重要。

參數

說明

autovacuum

控制是否啟用自動清理(autovacuum)後台進程。為保證功能正常,參數track_counts也必須啟用。

  • 取值範圍:ON/OFF

  • 預設值:ON

說明

即使禁用此參數,當需要防止事務ID回卷時,系統仍會強制啟動清理進程。

autovacuum_max_workers

指定可同時啟動並執行自動清理背景工作處理序(除自動清理啟動器外)的最大數量。

  • 取值範圍:1~262143

  • 預設值:5

  • 單位:進程數

autovacuum_naptime

指定自動清理進程在檢查完一個資料庫後,再次檢查該資料庫之前的最小休眠時間。在每一輪中後台進程檢查資料庫並根據需要為資料庫中的表發出VACUUMANALYZE命令。

  • 取值範圍:1~2147483

  • 預設值:30

  • 單位:秒

autovacuum_vacuum_threshold

觸發VACUUM操作所需的最少變更(增、刪、改)元組數。

  • 取值範圍:0~2147483647

  • 預設值:50

  • 單位:元組數

autovacuum_vacuum_scale_factor

觸發VACUUM操作時,表大小比例因素。實際閾值由autovacuum_vacuum_threshold和此因子共同決定,公式為:autovacuum_vacuum_threshold + (autovacuum_vacuum_scale_factor * 表的元組數)

  • 取值範圍:0~100

  • 預設值:0.02

  • 單位:百分比

autovacuum_analyze_threshold

觸發ANALYZE操作所需的最少變更(增、刪、改)元組數。

  • 取值範圍:0~2147483647

  • 預設值:50

  • 單位:元組數

autovacuum_analyze_scale_factor

觸發ANALYZE操作時,表大小比例因素。實際閾值由autovacuum_analyze_threshold和此因子共同決定,公式為:autovacuum_analyze_threshold + (autovacuum_analyze_scale_factor * 表的元組數)。

  • 取值範圍:0~2147483647

  • 預設值:0.05

  • 單位:百分比

autovacuum_freeze_max_age

在強制執行VACUUM以防止事務ID回卷前,表中最舊的事務ID可存在的最大年齡。系統會為阻止回卷而自動發起清理,不受autovacuum參數禁用的影響。

  • 取值範圍:100000~2000000000

  • 預設值:500000000

  • 單位:事務ID

說明

即便自動清理被禁用,系統仍將發起自動清理進程來阻止回卷。

autovacuum_multixact_freeze_max_age

在強制執行VACUUM以防止多事務ID(multixact ID)回卷前,表中最舊的多事務ID可存在的最大年齡。

  • 取值範圍:10000~2000000000

  • 預設值:700000000

  • 單位:事務ID

說明

即便自動清理被禁用,系統仍將發起自動清理進程來阻止回卷。

autovacuum_vacuum_cost_delay

用於自動VACUUM操作的代價延遲時間。如果設為-1,則沿用vacuum_cost_delay的值。

  • 取值範圍:-1~100

  • 預設值:0

  • 單位:毫秒

autovacuum_vacuum_cost_limit

用於自動VACUUM操作的代價限制值。該總限制值將按比例分配給所有正在啟動並執行自動清理背景工作處理序(如果存在多個進程),因此每個背景工作處理序的限制值之和將不會超過此變數中的值。如果設定為-1,則將沿用vacuum_cost_limit的值。

  • 取值範圍:-1~10000

  • 預設值:10000

  • 單位:代價值

檢查點與後台寫入

參數

說明

checkpoint_timeout

設定自動WAL檢查點之間的最長時間間隔。

  • 取值範圍:30~86400

  • 預設值:30

  • 單位:秒

bgwriter_delay

後台寫入進程(background writer)兩輪刷髒頁操作之間的休眠時間。

  • 取值範圍:10~10000

  • 預設值:600000

  • 單位:毫秒

backend_flush_after

當後台進程寫入的髒頁數量超過此閾值後,作業系統會將檔案快取中的資料重新整理到磁碟。

  • 取值範圍:0~256

  • 預設值:0

  • 單位:Block

full_page_writes

控制在檢查點(checkpoint)之後,當一個資料頁首次被修改時,是否將整個頁面的內容寫入WAL日誌。此功能用於防止因斷電等故障導致的頁面部分寫入問題。

  • 取值範圍:ON/OFF

  • 預設值:OFF

wal_buffers

用於在記憶體中暫存WAL資料的共用記憶體大小。

  • 取值範圍:-1~262143(2097144 KB)

  • 預設值:16 MB

  • 單位:WAL Block(每塊8 KB)

wal_level

控制寫入WAL(預寫式日誌)的資訊量層級。不同層級支援不同功能:replica提供唯讀服務的備庫節點,logical提供邏輯複製服務。

  • 取值範圍:replica/logical

  • 預設值:replica

wal_writer_delay

WAL寫入進程(walwriter)在兩輪WAL刷盤操作之間的最大休眠時間。

  • 取值範圍:1~10000

  • 預設值:600000

  • 單位:毫秒

查詢計劃與執行

參數

說明

constraint_exclusion

控制查詢最佳化工具是否使用資料表條件約束(如CHECK約束)來最佳化查詢,尤其適用於分區表的查詢剪枝。

  • 取值範圍:

    • on:對所有表檢查約束

    • off:禁用

    • partition:僅對分區表和UNION ALL子查詢生效

  • 預設值:partition

cpu_index_tuple_cost

設定規劃器對一次索引掃描中處理每一個索引項目的代價估計。

  • 取值範圍:0~1.79769e+308

  • 預設值:0.005

cpu_operator_cost

設定規劃器對於一次查詢中處理每個操作符或函數的代價估計。

  • 取值範圍:0~1.79769e+308

  • 預設值:0.0025

cpu_tuple_cost

設定規劃器對一次查詢中處理每一行的代價估計。

  • 取值範圍:0~1.79769e+308

  • 預設值:0.01

enable_partition_pruning

控制查詢最佳化工具是否在計劃階段和執行階段啟用分區剪枝最佳化,以跳過對無關分區的掃描。

  • 取值範圍:ON/OFF

  • 預設值:ON

seq_page_cost

設定規劃器對一次順序磁碟頁面擷取的代價估計。

  • 取值範圍:0~1.79769e+308

  • 預設值:1

jit

控制是否為特定查詢啟用即時編譯(Just-In-Time Compilation)以加速執行。

  • 取值範圍:ON/OFF

  • 預設值:OFF

逾時設定

參數

說明

deadlock_timeout

在檢查到可能存在死結之前,一個事務所等待鎖的最長時間。

  • 取值範圍:0~2147483647

  • 預設值:1000

  • 單位:毫秒

idle_in_transaction_session_timeout

事務處於空閑狀態(idle in transaction)下的最長允許時間。超過此時間,會話將被終止。設定為0表示禁用此逾時。

  • 取值範圍:0~2147483647

  • 預設值:3600000

  • 單位:毫秒

lock_timeout

單個操作等待擷取表、行或其他對象鎖的最長時間。超過此時間,操作將報錯退出。設定為0表示禁用此逾時,將無限等待。

  • 取值範圍:0~2147483647

  • 預設值:0

  • 單位:毫秒

statement_timeout

限制單條SQL語句執行的最長時間。超過此時間,該語句將被終止。設定為0表示無逾時限制。

  • 取值範圍:0~262143

  • 預設值:0

  • 單位:毫秒

日誌與審計

參數

說明

logging_collector

控制是否啟用日誌收集進程,該進程負責捕獲並寫入叢集運行期間的日誌。

  • 取值範圍:ON/OFF

  • 預設值:ON

log_connections

控制是否在日誌中記錄每一次成功的用戶端串連。

  • 取值範圍:ON/OFF

  • 預設值:OFF

log_disconnections

控制是否在日誌中記錄每一次用戶端串連的斷開。

  • 取值範圍:ON/OFF

  • 預設值:OFF

log_error_verbosity

設定錯誤記錄檔的詳細程度。

  • 取值範圍:

    • terse:僅包含嚴重性、主訊息和位置

    • default:包含更多細節,如詳細資料、提示等

    • verbose:所有詳細日誌

  • 預設值:default

log_min_duration_statement

記錄執行時間超過指定閾值的慢SQL。設定為0將記錄所有SQL語句,設定為-1表示禁用慢SQL日誌功能。

  • 取值範圍:0~2147483647

  • 預設值:5000

  • 單位:毫秒

log_statement

控制記錄到日誌中的SQL語句類型。

  • 取值範圍:

    • none:不記錄

    • ddl:記錄CREATE/ALTER/DROP等DDL語句

    • mod:記錄DDL和DML(INSERT/UPDATE/DELETE)語句

    • all:記錄所有SQL語句

  • 預設值:ddl

複製與高可用

參數

說明

hot_standby

控製備節點(唯讀節點)是否可以接受唯讀查詢。

  • 取值範圍:ON/OFF

  • 預設值:ON

hot_standby_feedback

控制唯讀節點是否向主節點反饋其正在啟動並執行查詢資訊。啟用後,主節點會延遲清理那些唯讀節點查詢仍在使用的舊資料行,以減少查詢衝突。

  • 取值範圍:ON/OFF

  • 預設值:ON

max_replication_slots

執行個體能夠支援的最大複製槽數量。

  • 取值範圍:0~262143

  • 預設值:64

資源管理

參數

說明

dynamic_shared_memory_type

指定動態共用記憶體的實現方式。

  • 取值範圍:posix/sysv/mmap

  • 預設值:posix

gin_pending_list_limit

設定GIN索引在快速更新模式下,待處理列表(Pending List)的最大記憶體大小。

  • 取值範圍:64~2097151

  • 預設值:4096

  • 單位:KB

huge_pages

控制執行個體是否嘗試使用作業系統提供的大頁記憶體。

  • 取值範圍:ON/OFF

  • 預設值:ON

max_files_per_process

每個資料庫後台進程允許同時開啟的最大檔案控制代碼數。

  • 取值範圍:64~2147483647

  • 預設值:10000

max_locks_per_transaction

每個事務能夠持有的最大鎖數量。

  • 取值範圍:10~2147483647

  • 預設值:64

max_prepared_transactions

叢集中允許同時處於準備狀態的(兩階段交易認可)事務的最大數量。

  • 取值範圍:0~262143

  • 預設值:800

max_worker_processes

叢集能夠啟動的後台背景工作處理序的最大總數,包括並行查詢背景工作處理序等。

  • 取值範圍:0~262143

  • 預設值:256

temp_file_limit

限制單個後台進程可使用的臨時檔案(用於排序、雜湊等操作)的總大小。設定為-1表示不限制。

  • 取值範圍:-1~2147483647

  • 預設值:104857600(100 GB)

  • 單位:KB

格式與行為

參數

說明

datestyle

設定日期和時間值的顯示格式。

  • 取值範圍:

    • 輸出格式聲明:ISO/Postgres/SQL/German

    • 輸入/輸出的年/月/日順序:DMY/MDY/YMD

  • 預設值:'ISO,YMD'

default_with_oids

已廢棄的參數,用於控制CREATE TABLE是否預設包含OID。目前的版本不再支援OID,只能為OFF。

extra_float_digits

控制浮點數顯示時,在標準精度之外額外顯示的有效位元。用於更精確地展示浮點數值。

  • 取值範圍:-15~3

  • 預設值:0

fsync

控制資料庫是否在關鍵操作(如COMMIT)後,強制將資料變更從作業系統緩衝同步到物理磁碟。

  • 取值範圍:ON/OFF

  • 預設值:ON

timezone

指定資料庫會話用於顯示和解釋時間戳記的時區。

  • 取值範圍:標準時區名稱,如Asia/ShanghaiUTC等。詳細取值範圍,請參考控制台參數的修改範圍。

  • 預設值:'UTC'