在 RDS for PostgreSQL 資料庫執行個體上搭配使用參數 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 RDS for PostgreSQL 資料庫執行個體上搭配使用參數

某些情況下,您可能會在沒有指定自訂參數群組的狀況下建立一個 RDS for PostgreSQL 資料庫執行個體。如果是這樣,系統會使用您所選擇 PostgreSQL 版本的預設參數群組來建立資料庫執行個體。例如,假設您使用 PostgreSQL 13.3 建立 RDS for PostgreSQL 資料庫執行個體。在這種情況下,系統會使用 PostgreSQL 第 13 版參數群組 (default.postgres13) 中的值來建立資料庫執行個體。

您也可以建立自己的自訂資料庫參數群組。如果要從預設值中修改 RDS for PostgreSQL 資料庫執行個體的任何設定,則需要執行此操作。如要瞭解如何作業,請參閱使用參數群組

您可以使用多種不同的方式追蹤 RDS for PostgreSQL 資料庫執行個體上的設定。您可以使用 AWS Management Console AWS CLI、或 Amazon RDS API。您也可以查詢執行個體 PostgreSQL pg_settings 資料表中的值,如下所示。

SELECT name, setting, boot_val, reset_val, unit FROM pg_settings ORDER BY name;

若要進一步了解此查詢傳回的值,請參閱 PostgreSQL 說明文件中的 pg_settings

為 RDS for PostgreSQL 資料庫執行個體更改 max_connectionsshared_buffers 的設定時請格外小心。例如,假設您修改 max_connectionsshared_buffers 的設定並且使用的值對於實際工作負載而言過高。這種情況下,RDS for PostgreSQL 資料庫執行個體將無法啟動。如果發生這種情況,postgres.log 中會顯示錯誤,如下所示。

2018-09-18 21:13:15 UTC::@:[8097]:FATAL: could not map anonymous shared memory: Cannot allocate memory 2018-09-18 21:13:15 UTC::@:[8097]:HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently 3514134274048 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

但是,您無法更改預設 RDS for PostgreSQL 資料庫參數群組中包含的任何設定值。若要變更任何參數的設定,請首先建立自訂資料庫參數群組。然後變更該自訂資料群組中的設定,再將自訂參數群組套用於 RDS for PostgreSQL 資料庫執行個體。如需進一步了解,請參閱使用參數群組

有兩種類型的參數在適用於 PostgreSQL 的。

  • 靜態參數 – 靜態參數變更後需重新啟動 RDS for PostgreSQL 資料庫執行個體,新值才會生效。

  • 動態參數 – 動態參數的設定變更後不需要重新啟動。

注意

如果 RDS for PostgreSQL 資料庫執行個體使用自己的自訂資料庫參數群組,您可以變更正在執行中的資料庫執行個體上的動態參數值。您可以使用 AWS Management Console、 AWS CLI或 Amazon RDS API 來這麼做。

如果您擁有權限,也可以使用 ALTER DATABASEALTER ROLESET 命令來變更參數值。

RDS for PostgreSQL DB 資料庫執行個體參數清單

下表列出 RDS for PostgreSQL 資料庫執行個體中的一些 (但並非全部) 可用參數。若要檢視所有可用的參數,請使用describe-db-parameters AWS CLI 指令。例如,若要取得預設參數群組中 RDS for PostgreSQL 第 13 版可用的所有參數清單,請執行下列命令。

aws rds describe-db-parameters --db-parameter-group-name default.postgres13

您也可以使用主控台。從 Amazon RDS 功能表中選擇 Parameter groups (參數群組),然後從 AWS 區域中可用的參數群組中選擇參數群組。

參數名稱

Apply_Type

描述

application_name

動態 設定要在統計資訊和日誌中報告的應用程式名稱。

archive_command

動態 設定將呼叫的 shell 命令來封存 WAL 檔案。

array_nulls

動態 能夠在陣列中輸入 NULL 元素。

authentication_timeout

動態 設定要完成用戶端驗證的最大允許時間。

autovacuum

動態 啟動自動資料清理子程序。

autovacuum_analyze_scale_factor

動態 在分析之前的 tuple 插入、更新或刪除數目 (成為 reltuple 的一小部分)。

autovacuum_analyze_threshold

動態 在分析之前的 tuple 插入、更新或刪除數目下限。

autovacuum_freeze_max_age

靜態 要自動資料清理資料表以防止交易 ID 包圍的存留期。

autovacuum_naptime

動態 自動資料清理執行之間的休眠時間。

autovacuum_max_workers

靜態 設定同時執行自動清空工作者程序的數目上限。

autovacuum_vacuum_cost_delay

動態 自動資料清理的清理成本延遲 (以毫秒為單位)。

autovacuum_vacuum_cost_limit

動態 自動資料清理在小憩前可用的清理成本金額。

autovacuum_vacuum_scale_factor

動態 在清理之前的 tuple 更新或刪除數目 (成為 reltuple 的一小部分)。

autovacuum_vacuum_threshold

動態 在清理之前的 tuple 更新或刪除數目下限。

backslash_quote

動態 設定在字串常值中是否允許反斜線 (\)。

bgwriter_delay

動態 回合之間的背景寫入器休眠時間。

bgwriter_lru_maxpages

動態 每回合要清空之 LRU 頁面的背景寫入器數目上限。

bgwriter_lru_multiplier

動態 每回合要釋放之平均緩衝區使用量的倍數。

bytea_output

動態 設定位元組的輸出格式。

check_function_bodies

動態 在 CREATE FUNCTION 期間檢查函數本文。

checkpoint_completion_target

動態 在檢查點期間用於清空已變更緩衝區的時間 (成為檢查點間隔的一小部分)。

checkpoint_segments

動態 設定日誌區段中自動預寫入日誌 WAL 檢查點之間的最大距離。

checkpoint_timeout

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

checkpoint_warning

動態 啟用檢查點區段的填入頻率高於此值時的警告。

client_connection_check_interval

動態 設定執行查詢時檢查是否中斷連線的時間間隔。

client_encoding

動態 設定用戶端的字元集編碼。

client_min_messages

動態 設定傳送給用戶端的訊息層級。

commit_delay

動態 設定在交易認可與將 WAL 清空至磁碟之間的延遲 (以毫秒為單位)。

commit_siblings

動態 設定在執行 commit_delay 之前同時開啟的交易數目下限。

constraint_exclusion

動態 讓規劃器能夠使用限制條件來最佳化查詢。

cpu_index_tuple_cost

動態 設定規劃器對於在索引掃描期間處理每個索引項目的成本估算。

cpu_operator_cost

動態 設定規劃器對於處理每個運算子或函數呼叫的成本估算。

cpu_tuple_cost

動態 設定規劃器對於處理每個 tuple (資料列) 的成本估算。

cursor_tuple_fraction

動態 設定規劃器對於將擷取之游標的資料列部分估算。

datestyle

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

deadlock_timeout

動態 設定在檢查死鎖前等待鎖定的時間。

debug_pretty_print

動態 將剖析和計劃樹狀顯示縮排。

debug_print_parse

動態 記錄每項查詢的剖析樹狀。

debug_print_plan

動態 記錄每項查詢的執行計劃。

debug_print_rewritten

動態 記錄每項查詢的重寫剖析樹狀。

default_statistics_target

動態 設定預設統計資訊目標。

default_tablespace

動態 設定要在其中建立資料表和索引的預設資料表空間。

default_transaction_deferrable

動態 設定新交易的預設可延遲狀態。

default_transaction_isolation

動態 設定每項新交易的交易隔離層級。

default_transaction_read_only

動態 設定新交易的預設唯讀狀態。

default_with_oids

動態 依預設建立內含物件 ID (OID) 的新資料表。

effective_cache_size

動態 設定規劃器對於磁碟快取大小的假設。

effective_io_concurrency

動態 磁碟子系統可以有效處理的同時要求數目。

enable_bitmapscan

動態 讓規劃器能夠使用點陣圖掃描計劃。

enable_hashagg

動態 讓規劃器能夠使用雜湊彙整計劃。

enable_hashjoin

動態 讓規劃器能夠使用雜湊聯結計劃。

enable_indexscan

動態 讓規劃器能夠使用索引掃描計劃。

enable_material

動態 讓規劃器能夠使用實體化。

enable_mergejoin

動態 讓規劃器能夠使用合併聯結計劃。

enable_nestloop

動態 讓規劃器能夠使用巢狀迴圈聯結計劃。

enable_seqscan

動態 讓規劃器能夠使用循序掃描計劃。

enable_sort

動態 讓規劃器能夠使用明確排序步驟。

enable_tidscan

動態 讓規劃器能夠使用 TID 掃描計劃。

escape_string_warning

動態 一般字串常值中反斜線 (\) 逸出的相關警告。

extra_float_digits

動態 設定針對浮點值顯示的位數。

from_collapse_limit

動態 設定 FROM-list 大小,超過此大小就不會收合子查詢。

fsync

動態 強制將更新同步至磁碟。

full_page_writes

動態 在檢查點後第一次修改時,將完整頁面寫入至 WAL。

geqo

動態 啟用基因查詢最佳化。

geqo_effort

動態 GEQO:作業是用於設定其他 GEQO 參數的預設值。

geqo_generations

動態 GEQO:演算法的反覆運算次數。

geqo_pool_size

動態 GEQO:人口中的個體數目。

geqo_seed

動態 GEQO:隨機路徑選取的種子。

geqo_selection_bias

動態 GEQO:人口中的選擇壓力。

geqo_threshold

動態 設定 FROM 項目的閾值,超出此閾值時就會使用 GEQO。

gin_fuzzy_search_limit

動態 設定 GIN 確切搜尋所允許的結果上限。

hot_standby_feedback

動態 決定熱待命是否將意見回饋訊息傳送給主要或上游待命。

intervalstyle

動態 設定間隔值的顯示格式。

join_collapse_limit

動態 設定 FROM-list 大小,超過此大小就不會將 JOIN 結構扁平化。

lc_messages

動態 設定用來顯示訊息的語言。

lc_monetary

動態 設定用於格式化貨幣金額的地區設定。

lc_numeric

動態 設定用於格式化數字的地區設定。

lc_time

動態 設定用於格式化日期和時間值的地區設定。

log_autovacuum_min_duration

動態 設定執行時間下限,超出此時間就會記錄自動資料清理動作。

log_checkpoints

動態 記錄每個檢查點。

log_connections

動態 記錄每個成功連線。

log_disconnections

動態 記錄工作階段的結尾,包括持續時間。

log_duration

動態 記錄每個已完成 SQL 陳述式的持續時間。

log_error_verbosity

動態 設定已記錄訊息的詳細資訊。

log_executor_stats

動態 將執行器效能統計資訊寫入至伺服器日誌。

log_filename

動態 設定日誌檔案的檔案名稱樣式。

log_file_mode

動態 設定日誌檔案的許可。預設值為 0644。

log_hostname

動態 在連線日誌中記錄主機名稱。從 PostgreSQL 12 及更新版本開始,此參數預設為 'off'。開啟時,連線會使用 DNS 反向查詢來取得擷取至連線日誌的主機名稱。如果開啟此參數,您應該監控它對建立連線所需時間的影響。

log_line_prefix

動態 控制每個日誌行前綴的資訊。

log_lock_waits

動態 記錄長鎖定等待。

log_min_duration_statement

動態 設定執行時間下限,超出此時間就會記錄陳述式。

log_min_error_statement

動態 導致所有陳述式在這個層級或以上產生要記錄的錯誤。

log_min_messages

動態 設定所記錄的訊息層級。

log_parser_stats

動態 將剖析器效能統計資訊寫入至伺服器日誌。

log_planner_stats

動態 將規劃器效能統計資訊寫入至伺服器日誌。

log_rotation_age

動態 自動日誌檔案輪換將在 N 分鐘後發生。

log_rotation_size

動態 自動日誌檔案輪換將在 N KB 後發生。

log_statement

動態 設定已記錄的陳述式類型。

log_statement_stats

動態 將累積效能統計資訊寫入至伺服器日誌。

log_temp_files

動態 記錄大於此 KB 數的暫時檔案使用。

log_timezone

動態 設定要在日誌訊息中使用的時區。

log_truncate_on_rotation

動態 在日誌輪換期間截斷名稱相同的現有日誌檔案。

logging_collector

靜態 開始子程序,將 stderr 輸出和/或 csvlog 擷取到日誌檔案中。

maintenance_work_mem

動態 設定要用於維護作業的記憶體上限。

max_connections

靜態 設定同時連線的數目上限。

max_files_per_process

靜態 設定每個伺服器程序的同時開啟檔案數目上限。

max_locks_per_transaction

靜態 設定每項交易的鎖定數目上限。

max_pred_locks_per_transaction

靜態 設定每項交易的述詞鎖定數目上限。

max_prepared_transactions

靜態 設定同時備妥交易的數目上限。

max_stack_depth

動態 設定堆疊深度上限 (以 KB 為單位)。

max_standby_archive_delay

動態 當熱待命伺服器正在處理已封存的 WAL 資料時,設定在取消查詢前的延遲上限。

max_standby_streaming_delay

動態 當熱待命伺服器正在處理已串流的 WAL 資料時,設定在取消查詢前的延遲上限。
max_wal_size 動態 設定觸發檢查點的 WAL 大小 (MB)。對於 RDS for PostgreSQL 10 之後的所有版本,預設值至少為 1 GB (1024 MB)。例如,RDS for PostgreSQL 14 的 max_wal_size 設定為 2 GB (2048 MB)。在 RDS for PostgreSQL 資料庫執行個體上使用 SHOW max_wal_size; 命令,以查看其現行值。
min_wal_size 動態 設定 WAL 縮減到最小的大小。Postgre SQL 9.6 版和更早的版本, min_wal_size 單位是 16 MB。Postgre SQL 10 版和更新版本, min_wal_size 單位是 1 MB。

quote_all_identifiers

動態 在產生 SQL 片段時,將引號 (") 新增至所有識別符。

random_page_cost

動態 設定規劃器對於非循序擷取磁碟頁面的成本估算。除非開啟查詢計劃管理 (QPM),否則此參數並無任何值。開啟 QPM 時,此參數的預設值為 4
rds.adaptive_autovacuum 動態 當交易 ID 閥值超過時,隨時自動調整自動資料清理的參數。
rds.force_ssl 動態 需要使用 SSL 連線。對於 RDS for PostgreSQL 第 15 版,預設值會設定為 1 (開啟)。所有其他 RDS for PostgreSQL 主要版本 14 及更舊版本都會將預設值設定為 0 (關閉)。

rds.local_volume_spill_enabled

靜態 允許將邏輯溢出檔案寫入本機磁碟區。

rds.log_retention_period

動態 設定日誌保留期,像是 Amazon RDS 超過 n 分鐘時刪除 PostgreSQL 日誌。
rds.rds_superuser_reserved_connections 靜態

設定為 rds_superusers 保留的連線槽數。此參數僅適用於版本 15 及更早版本。如需詳細資訊,請參閱保留的 PostgreSQL 文件。

rds.restrict_password_commands 靜態 限制可以管理具有 rds_password 角色之使用者密碼的人員。將此參數設為 1 可啟用密碼限制。預設為 0。

search_path

動態 針對不符合結構描述的名稱設定結構描述搜尋順序。

seq_page_cost

動態 設定規劃器對於循序擷取磁碟頁面的成本估算。

session_replication_role

動態 設定觸發器和重寫規則的工作階段行為。

shared_buffers

靜態 設定伺服器所用的共享記憶體緩衝區數目。

shared_preload_libraries

靜態 列出要預先載入至 RDS for PostgreSQL 資料庫執行個體的共用程式庫。支援的值包括 auto_explain、orafce、pgaudit、pglogical、pg_bigm、pg_cron、pg_hint_plan、pg_prewarm、pg_similarity、pg_stat_statements、pg_tle, pg_transport、plprofiler 及 plrust。

ssl

動態 啟用 SSL 連線。

sql_inheritance

動態 導致子資料表依預設包含在各種命令中。

ssl_renegotiation_limit

動態 設定在重新商談加密金鑰前要傳送和接收的流量。

standard_conforming_strings

動態 導致 ... 字串逐字地處理反斜線。

statement_timeout

動態 設定任何陳述式允許的持續時間上限。

synchronize_seqscans

動態 啟用已同步的循序掃描。

synchronous_commit

動態 設定目前交易的同步層級。

tcp_keepalives_count

動態 TCP 保持連線重新傳輸的數量上限

tcp_keepalives_idle

動態 發出 TCP 保持連線之間的時間。

tcp_keepalives_interval

動態 TCP 保持連線重新傳輸之間的時間。

temp_buffers

動態 設定每個工作階段所用的暫時緩衝區數目上限。
temp_file_limit 動態 設定暫時檔案可以增長的大小上限 (以 KB 為單位)。

temp_tablespaces

動態 設定要用於暫存資料表和排序檔案的資料表空間。

timezone

動態

設定可供顯示和解譯時間戳記的時區。

網際網路號碼分配局 (IANA) 每年會在 https://www.iana.org/time-zones 發布數次新時區。每次 RDS 發布 PostgreSQL 的新次要維護版本時,它都會在發布時隨附最新的時區資料。當您使用最新的 RDS for PostgreSQL 版本時,您會有來自 RDS 的最新時區資料。為確保您的資料庫執行個體擁有最新的時區資料,建議您升級至更高的資料庫引擎版本。您無法手動修改 PostgreSQL 資料庫執行個體中的時區表。RDS 不會修改或重設執行中資料庫執行個體的時區資料。只有在您執行資料庫引擎版本升級時,才會安裝新的時區資料。

track_activities

動態 收集有關執行命令的資訊。

track_activity_query_size

靜態 設定為 pg_stat_activity.current_query 保留的大小 (以位元組為單位)。

track_counts

動態 收集資料庫活動的統計資訊。

track_functions

動態 收集資料庫活動的功能層級統計資訊。

track_io_timing

動態 收集資料庫輸入/輸出活動的計時統計資訊。

transaction_deferrable

動態 指出是否延遲唯讀可序列化交易,直到可加以啟動為止 (沒有可能的序列化失敗)。

transaction_isolation

動態 設定目前交易的隔離層級。

transaction_read_only

動態 設定目前交易的唯讀狀態。

transform_null_equals

動態 將 expr=NULL 視為 expr IS NULL。

update_process_title

動態 更新程序標題以顯示作用中的 SQL 命令。

vacuum_cost_delay

動態 清理成本延遲 (以毫秒為單位)。

vacuum_cost_limit

動態 在小憩前可用的清理成本金額。

vacuum_cost_page_dirty

動態 清理所變更之頁面的清理成本。

vacuum_cost_page_hit

動態 在緩衝區快取中找到之頁面的清理成本。

vacuum_cost_page_miss

動態 在緩衝區快取中找不到之頁面的清理成本。

vacuum_defer_cleanup_age

動態 應延遲清理和熱清理 (如果有的話) 的交易數目。

vacuum_freeze_min_age

動態 清理應凍結資料表列的存留期下限。

vacuum_freeze_table_age

動態 清理應掃描整個資料表以凍結 tuple 的存留期。

wal_buffers

靜態 為 WAL 設定共享記憶體中的磁碟分頁緩衝區數目。

wal_writer_delay

動態 WAL 清空之間的 WAL 寫入器休眠時間。

work_mem

動態 設定要用於查詢工作空間的記憶體上限。

xmlbinary

動態 設定有多少二進位值要在 XML 中編碼。

xmloption

動態 設定要將明確剖析和序列化作業中的 XML 資料視為文件或內容片段。

Amazon RDS 會對所有參數使用預設 PostgreSQL 單位。下表顯示每個參數的 PostgreSQL 預設單位。

參數名稱

單位

archive_timeout

s

authentication_timeout

s

autovacuum_naptime

s

autovacuum_vacuum_cost_delay

ms

bgwriter_delay

ms

checkpoint_timeout

s

checkpoint_warning

s

deadlock_timeout

ms

effective_cache_size

8 KB

lock_timeout

ms

log_autovacuum_min_duration

ms

log_min_duration_statement

ms

log_rotation_age

分鐘

log_rotation_size

KB

log_temp_files

KB

maintenance_work_mem

KB

max_stack_depth

KB

max_standby_archive_delay

ms

max_standby_streaming_delay

ms

post_auth_delay

s

pre_auth_delay

s

segment_size

8 KB

shared_buffers

8 KB

statement_timeout

ms

ssl_renegotiation_limit

KB

tcp_keepalives_idle

s

tcp_keepalives_interval

s

temp_file_limit

KB

work_mem

KB

temp_buffers

8 KB

vacuum_cost_delay

ms

wal_buffers

8 KB

wal_receiver_timeout

ms

wal_segment_size

B

wal_sender_timeout

ms

wal_writer_delay

ms

wal_receiver_status_interval

s