PostgreSQL的ALTER SYSTEM只能修改postgresql.conf中的參數,不能修改其他設定檔案。
ALTER SYSTEM的範圍
ALTER SYSTEM只影響一個檔案:
- ✅ postgresql.conf 中的參數
- ❌ 不能修改:pg_hba.conf、pg_ident.conf等其他設定檔
ALTER SYSTEM可修改的參數分類
根據資料中的資訊,PostgreSQL參數可以按照修改方式分為:
1. 立即生效的參數(不需重啟)
-- 記憶體相關
ALTER SYSTEM SET shared_buffers = '256MB'; -- 需重啟
ALTER SYSTEM SET work_mem = '4MB'; -- 立即生效
ALTER SYSTEM SET maintenance_work_mem = '64MB'; -- 立即生效
-- 連線相關
ALTER SYSTEM SET max_connections = '200'; -- 需重啟
ALTER SYSTEM SET listen_addresses = '*'; -- 需重啟
-- WAL相關(多數需重啟)
ALTER SYSTEM SET wal_level = 'replica'; -- 需重啟
ALTER SYSTEM SET max_wal_size = '1GB'; -- 立即生效
ALTER SYSTEM SET wal_keep_size = '500MB'; -- 立即生效2. 需要重啟的參數(postmaster parameters)
-- 這些修改後必須重啟
ALTER SYSTEM SET wal_level = 'replica';
ALTER SYSTEM SET max_connections = '100';
ALTER SYSTEM SET shared_buffers = '128MB';
ALTER SYSTEM SET listen_addresses = '*';
ALTER SYSTEM SET port = '5432';查看參數可修改性
-- 查看所有參數的修改特性
SELECT name, context, pending_restart
FROM pg_settings
WHERE name LIKE '%wal%'
ORDER BY name;
-- context欄位說明:
-- 'internal' - 編譯時設定,無法修改
-- 'postmaster' - 需要重啟
-- 'sighup' - 重新載入設定檔即可
-- 'superuser' - superuser可隨時修改
-- 'user' - 一般用戶可修改ALTER SYSTEM儲存位置
ALTER SYSTEM修改的參數會寫入:
postgresql.auto.conf
該檔案位於data目錄下,優先級高於postgresql.conf。
無法用ALTER SYSTEM修改的設定檔
pg_hba.conf(認證設定)
# 必須手動編輯
host all all 192.168.1.0/24 md5pg_ident.conf(身份對應)
# 必須手動編輯
mapname system-username pg-usernamepostgresql.conf中的某些特殊項目
# 這些通常需要手動編輯
include = 'other.conf'
include_dir = 'conf.d'與Oracle的比較
Oracle:
- 可用
ALTER SYSTEM修改spfile中的參數 - 需要重啟的參數會標示
SCOPE=SPFILE - 有些參數可以
SCOPE=BOTH立即生效
PostgreSQL:
ALTER SYSTEM只能修改postgresql.conf相關參數- 參數按context分類決定是否需重啟
- 認證相關設定必須手動編輯其他設定檔
總的來說,PostgreSQL的ALTER SYSTEM功能比Oracle相對有限,主要專注在postgresql.conf的參數管理上。