當(dāng)前位置:首頁 >  站長 >  數(shù)據(jù)庫 >  正文

postgresql 性能參數(shù)配置方式

 2021-06-05 17:08  來源: 腳本之家   我來投稿 撤稿糾錯

  域名預(yù)訂/競價,好“米”不錯過

查詢Linux服務(wù)器配置

在進行性能調(diào)優(yōu)之前,需要清楚知道服務(wù)器的配置信息,比如說 CPU,內(nèi)存,服務(wù)器版本等信息。

查詢系統(tǒng)版本信息

root@ubuntu160:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty

 

Linux查看物理CPU個數(shù)、核數(shù)、邏輯CPU個數(shù)

# 總核數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù)
# 總邏輯CPU數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù) X 超線程數(shù)
 
# 查看物理CPU個數(shù)
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每個物理CPU中core的個數(shù)(即核數(shù))
cat /proc/cpuinfo| grep "cpu cores"| uniq
 
# 查看邏輯CPU的個數(shù)
cat /proc/cpuinfo| grep "processor"| wc -l

 

查詢內(nèi)存信息

1cat /proc/meminfo

PostgreSQL配置參數(shù)查看方式

--查看所有數(shù)據(jù)庫參數(shù)的值show all;

PostgreSQL性能調(diào)優(yōu)重要的配置參數(shù)

該表格來自網(wǎng)上大神整理的:

選項默認值說明是否優(yōu)化原因

max_connections100允許客戶端連接的最大數(shù)目否因為在測試的過程中,100個連接已經(jīng)足夠

fsyncon強制把數(shù)據(jù)同步更新到磁盤是因為系統(tǒng)的IO壓力很大,為了更好的測試其他配置的影響,把改參數(shù)改為off

shared_buffers24MB決定有多少內(nèi)存可以被PostgreSQL用于緩存數(shù)據(jù)(推薦內(nèi)存的1/4,不超過內(nèi)存的1/2)是在IO壓力很大的情況下,提高該值可以減少IO

work_mem1MB使內(nèi)部排序和一些復(fù)雜的查詢都在這個buffer中完成,不夠要適可而止,每個連接都要用這么大的是有助提高排序等操作的速度,并且減低IO

effective_cache_size128MB優(yōu)化器假設(shè)一個查詢可以用的最大內(nèi)存,和shared_buffers無關(guān)(推薦內(nèi)存的1/2)是設(shè)置稍大,優(yōu)化器更傾向使用索引掃描而不是順序掃描

maintenance_work_mem16MB這里定義的內(nèi)存只是被VACUUM等耗費資源較多的命令調(diào)用時使用是把該值調(diào)大,能加快命令的執(zhí)行

wal_buffer768kB日志緩存區(qū)的大小是可以降低IO,如果遇上比較多的并發(fā)短事務(wù),應(yīng)該和commit_delay一起用

checkpoint_segments3設(shè)置wal log的最大數(shù)量數(shù)(一個log的大小為16M)是默認的48M的緩存是一個嚴(yán)重的瓶頸,基本上都要設(shè)置為10以上

checkpoint_completion_target0.5表示checkpoint的完成時間要在兩個checkpoint間隔時間的N%內(nèi)完成是能降低平均寫入的開銷

commit_delay0事務(wù)提交后,日志寫到wal log上到wal_buffer寫入到磁盤的時間間隔。需要配合commit_sibling是能夠一次寫入多個事務(wù),減少IO,提高性能

commit_siblings5設(shè)置觸發(fā)commit_delay的并發(fā)事務(wù)數(shù),根據(jù)并發(fā)事務(wù)多少來配置是減少IO,提高性能

當(dāng)然我這邊也有一份前面老員工牛人整理的來看一下怎么配置。

PostgreSQL配置參數(shù)修改的方式

1.修改配置文件

在配置文件C:\PostgreSQL\data\pg96\postgresql.conf 中直接修改,修改前記得備份一下原文件,因為你不知道意外和明天不知道哪個會先來。修改完成之后,記得重啟數(shù)據(jù)庫哦。

2.命令行的修改方式

1ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }

例如:我們現(xiàn)在要修改 maintenance_work_mem

--參數(shù)
show all;
 
show maintenance_work_mem;
--注意這里的設(shè)置不會改變postgresql.conf,只會改變postgresql.conf
ALTER SYSTEM SET maintenance_work_mem= 1048576;
 
--重啟數(shù)據(jù)庫
show maintenance_work_mem;
 
--取消postgresql.auto.conf的參數(shù)設(shè)置
ALTER SYSTEM SET maintenance_work_mem= default;

 

好的,那我們來

cd /home/postgres/pgsql/data
cat postgresql.conf

 

superuser_reserved_connections = 3
unix_socket_directory = '/var/lib/pgsql/current/data/unix_socket'
unix_socket_permissions = 0700
log_min_duration_statement = 10000ms
 
deadlock_timeout = 5s
track_activity_query_size = 10000
stats_temp_directory = 'pg_stat_tmp'
 
autovacuum = on
log_autovacuum_min_duration = 0
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
 
track_activities = on
track_counts = on
track_io_timing = on
 
#log parameter
log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB
log_checkpoints = on
log_lock_waits = on
 
#性能參數(shù)調(diào)整
 
shared_buffers = 16384MB
temp_buffers = 1024MB
work_mem = 2048MB
maintenance_work_mem = 4096MB

保存和重啟。因為我的是本地測試的機器并不是最后線上的,最后線上的一定會這么用的。

文章來源:腳本之家

來源地址:https://www.jb51.net/article/204215.htm

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關(guān)文章

熱門排行

信息推薦