沈陽男科醫(yī)院哪家好醫(yī)關(guān)于進(jìn)一步優(yōu)化 廣州
一 相關(guān)參數(shù)介紹
1.1 內(nèi)存參數(shù)-shared_buffers
shared_buffers:共享緩存區(qū)的大小,相當(dāng)于oracle數(shù)據(jù)庫中的SGA.
一般推薦為內(nèi)存的四分之一,不超過總內(nèi)存的二分之一。
該值默認(rèn)是128M。
1.2 cpu并行參數(shù)-max_parallel_workers
max_parallel_workers 定義了數(shù)據(jù)庫可以使用的并行查詢工作者的最大數(shù)量。每個并行工作者都可以在不同的CPU核心上執(zhí)行查詢操作,從而加速查詢處理。通過適當(dāng)配置這個參數(shù),可以根據(jù)系統(tǒng)的硬件資源來控制并行查詢的規(guī)模。可以在某種程度上控制數(shù)據(jù)庫的整體CPU使用。
默認(rèn)情況下,max_parallel_workers 的值為 8。這意味著 PostgreSQL 允許同時使用最多 8 個并行工作者來執(zhí)行查詢。
1.3 慢sql參數(shù)-log_min_duration_statement
log_min_duration_statement:從log找出執(zhí)行超過一定時間的SQL。這個參數(shù)是設(shè)置執(zhí)行最小多長時間的SQL輸出到log,例如輸出執(zhí)行超過2秒的SQL。
啟用查詢?nèi)罩?#xff1a;
首先,確保 PostgreSQL 的查詢?nèi)罩疽褑⒂?。您可以編?PostgreSQL 的配置文件(通常是 postgresql.conf)并設(shè)置以下參數(shù):
log_statement = 'ddl'
log_min_duration_statement = 2000
log_statement:該參數(shù)值為 "all"表示記錄所有查詢類型(SELECT、INSERT、UPDATE、DELETE),比較占用空間,且性能會降低,因此建議將其設(shè)置為ddl,只記錄修改表結(jié)構(gòu)的sql。
log_min_duration_statement:設(shè)置查詢的最小持續(xù)時間,以毫秒為單位。在上面的示例中,它設(shè)置為 2000 毫秒(2秒)。
二 優(yōu)化該參數(shù)
2.1 查看參數(shù)文件位置
show config_file;
2.2 修改參數(shù)值
修改以下參數(shù):
shared_buffers=80GB
max_parallel_workers=20
log_statement = 'ddl'
log_min_duration_statement = 2000
2.3 重啟數(shù)據(jù)庫
配置以systemctl方式啟動postgre,并配置開機(jī)自啟。
2.3.1 新建service文件
systemctl restart postgresql
2.3.4 設(shè)置開機(jī)自啟動
systemctl enable postgresql
2.4 檢查確認(rèn)
show max_parallel_workers;
show shared_buffers;
select pg_sleep(3);
觀察日志,看是否能看到慢sql。