開發與維運

PostgreSQL 參數優先級講解

PostgreSQL 參數優先級講解

作者

digoal

日期

2019-01-30

標籤

PostgreSQL , 參數 , 優先級 , 配置文件 , alter system , 命令行 , 用戶 , 數據庫 , 所有用戶 , 會話 , 事務 , 函數 , 表


背景

PostgreSQL 參數配置包羅萬象,可以在配置文件 , alter system , 命令行 , 用戶 , 數據庫 , 所有用戶 , 會話 , 事務 , 函數 , 表 等層面進行配置,非常的靈活。

靈活是好,但是可配置的入口太多了,優先級如何?如果在多個入口配置了同一個參數的不同值,最後會以哪個為準?

參數優先級

優先級如下,數值越大,優先級越高。

1 postgresql.conf

work_mem=1MB  

2 postgresql.auto.conf

work_mem=2MB  

3 command line options

work_mem=3MB  
  
pg_ctl start -o "-c work_mem='3MB'"  

4 all role

work_mem=4MB  
  
alter role all set work_mem='4MB';  

5 database

work_mem=5MB  
  
alter database postgres set work_mem='5MB';  

6 role

work_mem=6MB  
  
alter role digoal set work_mem='6MB';  

7 session (客戶端參數)

work_mem=7MB  
  
set work_mem ='7MB';  

8 事務

work_mem=8MB  
  
postgres=# begin;  
BEGIN  
postgres=# set local work_mem='8MB';  
SET  

9 function

(參數在函數內有效,函數調用完成後依舊使用其他最高優先級參數值)

work_mem=9MB  
  
postgres=# create or replace function f_test() returns void as $$  
declare   
  res text;  
begin  
  show work_mem into res;  
  raise notice '%', res;                            
end;  
$$ language plpgsql strict set work_mem='9MB';  
CREATE FUNCTION  
  
postgres=# select f_test();  
NOTICE:  9MB  
 f_test   
--------  
   
(1 row)  

10 table

TABLE相關參數(垃圾回收相關)

https://www.postgresql.org/docs/11/sql-createtable.html

autovacuum_enabled  
  
toast.autovacuum_enabled  
  
... ...   
  
autovacuum_vacuum_threshold  
  
toast.autovacuum_vacuum_threshold  
  
... ...  

小結

PostgreSQL 支持的配置入口:

配置文件(postgresql.conf) ,   
  
alter system(postgresql.auto.conf) ,   
  
命令行(postgres -o, pg_ctl -o) ,   
  
所有用戶(alter role all set) ,   
  
數據庫(alter database xxx set) ,   
  
用戶(alter role 用戶名 set)  ,   
  
會話(set xxx) ,   
  
事務(set local xxx;) ,   
  
函數(create or replace function .... set par=val;) ,   
  
表(表級垃圾回收相關參數)    

如果一個參數在所有入口都配置過,優先級如上,從上到下,優先級越來越大。

參考

《PostgreSQL GUC 參數級別介紹》

《連接PostgreSQL時,如何指定參數》

https://www.postgresql.org/docs/11/sql-createtable.html

免費領取阿里雲RDS PostgreSQL實例、ECS虛擬機

大量阿里雲PG解決方案: 任意維度實時圈人; 時序數據實時處理; 時間、空間、業務 多維數據實時透視; 獨立事件相關性分析; 海量關係實時圖式搜索; 社交業務案例; 流式數據實時處理案例; 物聯網; 全文檢索; 模糊、正則查詢案例; 圖像識別; 向量相似檢索; 數據清洗、採樣、脫敏、批處理、合併; GIS 地理信息空間數據應用; 金融業務; 異步消息應用案例; 海量數據 冷熱分離; 倒排索引案例; 海量數據OLAP處理應用;

德哥的 / digoal's PostgreSQL文章入口 - 努力做成PG資源最豐富的個人blog

德哥的微信 / digoal's wechat

Leave a Reply

Your email address will not be published. Required fields are marked *