postgresql 性能參數配置方式
查詢Linux服務器配置
在進行性能調優(yōu)之前,需要清楚知道服務器的配置信息,比如說 CPU,內存,服務器版本等信息。
查詢系統(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個數、核數、邏輯CPU個數
# 總核數 = 物理CPU個數 X 每顆物理CPU的核數 # 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數 # 查看物理CPU個數 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每個物理CPU中core的個數(即核數) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看邏輯CPU的個數 cat /proc/cpuinfo| grep "processor"| wc -l
查詢內存信息
cat /proc/meminfo
PostgreSQL配置參數查看方式
--查看所有數據庫參數的值 show all;
PostgreSQL性能調優(yōu)重要的配置參數
該表格來自網上大神整理的:
選項 | 默認值 | 說明 | 是否優(yōu)化 | 原因 |
---|---|---|---|---|
max_connections | 100 | 允許客戶端連接的最大數目 | 否 | 因為在測試的過程中,100個連接已經足夠 |
fsync | on | 強制把數據同步更新到磁盤 | 是 | 因為系統(tǒng)的IO壓力很大,為了更好的測試其他配置的影響,把改參數改為off |
shared_buffers | 24MB | 決定有多少內存可以被PostgreSQL用于緩存數據(推薦內存的1/4,不超過內存的1/2) | 是 | 在IO壓力很大的情況下,提高該值可以減少IO |
work_mem | 1MB | 使內部排序和一些復雜的查詢都在這個buffer中完成,不夠要適可而止,每個連接都要用這么大的 | 是 | 有助提高排序等操作的速度,并且減低IO |
effective_cache_size | 128MB | 優(yōu)化器假設一個查詢可以用的最大內存,和shared_buffers無關(推薦內存的1/2) | 是 | 設置稍大,優(yōu)化器更傾向使用索引掃描而不是順序掃描 |
maintenance_work_mem | 16MB | 這里定義的內存只是被VACUUM等耗費資源較多的命令調用時使用 | 是 | 把該值調大,能加快命令的執(zhí)行 |
wal_buffer | 768kB | 日志緩存區(qū)的大小 | 是 | 可以降低IO,如果遇上比較多的并發(fā)短事務,應該和commit_delay一起用 |
checkpoint_segments | 3 | 設置wal log的最大數量數(一個log的大小為16M) | 是 | 默認的48M的緩存是一個嚴重的瓶頸,基本上都要設置為10以上 |
checkpoint_completion_target | 0.5 | 表示checkpoint的完成時間要在兩個checkpoint間隔時間的N%內完成 | 是 | 能降低平均寫入的開銷 |
commit_delay | 0 | 事務提交后,日志寫到wal log上到wal_buffer寫入到磁盤的時間間隔。需要配合commit_sibling | 是 | 能夠一次寫入多個事務,減少IO,提高性能 |
commit_siblings | 5 | 設置觸發(fā)commit_delay的并發(fā)事務數,根據并發(fā)事務多少來配置 | 是 | 減少IO,提高性能 |
當然我這邊也有一份前面老員工牛人整理的來看一下怎么配置。
PostgreSQL配置參數修改的方式
1.修改配置文件
在配置文件C:\PostgreSQL\data\pg96\postgresql.conf 中直接修改,修改前記得備份一下原文件,因為你不知道意外和明天不知道哪個會先來。修改完成之后,記得重啟數據庫哦。
2.命令行的修改方式
ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
例如:我們現(xiàn)在要修改 maintenance_work_mem
--參數 show all; show maintenance_work_mem; --注意這里的設置不會改變postgresql.conf,只會改變postgresql.conf ALTER SYSTEM SET maintenance_work_mem= 1048576; --重啟數據庫 show maintenance_work_mem; --取消postgresql.auto.conf的參數設置 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 #性能參數調整 shared_buffers = 16384MB temp_buffers = 1024MB work_mem = 2048MB maintenance_work_mem = 4096MB
保存和重啟。因為我的是本地測試的機器并不是最后線上的,最后線上的一定會這么用的。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
PostgreSQL怎么創(chuàng)建分區(qū)表詳解
數據庫表分區(qū)把一個大的物理表分成若干個小的物理表,并使得這些小物理表在邏輯上可以被當成一張表來使用,下面這篇文章主要給大家介紹了關于PostgreSQL怎么創(chuàng)建分區(qū)表的相關資料,需要的朋友可以參考下2022-06-06PGSQL 實現(xiàn)查詢今天,昨天的數據,一個月之內的數據
這篇文章主要介紹了PGSQL 實現(xiàn)查詢今天,昨天的數據,一個月之內的數據,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01PostgreSql觸發(fā)器創(chuàng)建、使用以及刪除示例詳解
在PostgreSQL中觸發(fā)器函數是一個沒有參數并且返回trigger類型的函數,這篇文章主要給大家介紹了關于PostgreSql觸發(fā)器創(chuàng)建、使用以及刪除的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-03-03postgresql insert into select無法使用并行查詢的解決
這篇文章主要介紹了postgresql insert into select無法使用并行查詢的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01