postgresql 性能參數(shù)配置方式
查詢(xún)Linux服務(wù)器配置
在進(jìn)行性能調(diào)優(yōu)之前,需要清楚知道服務(wù)器的配置信息,比如說(shuō) CPU,內(nèi)存,服務(wù)器版本等信息。
查詢(xún)系統(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個(gè)數(shù)、核數(shù)、邏輯CPU個(gè)數(shù)
# 總核數(shù) = 物理CPU個(gè)數(shù) X 每顆物理CPU的核數(shù) # 總邏輯CPU數(shù) = 物理CPU個(gè)數(shù) X 每顆物理CPU的核數(shù) X 超線程數(shù) # 查看物理CPU個(gè)數(shù) cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每個(gè)物理CPU中core的個(gè)數(shù)(即核數(shù)) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看邏輯CPU的個(gè)數(shù) cat /proc/cpuinfo| grep "processor"| wc -l
查詢(xún)內(nèi)存信息
cat /proc/meminfo
PostgreSQL配置參數(shù)查看方式
--查看所有數(shù)據(jù)庫(kù)參數(shù)的值 show all;

PostgreSQL性能調(diào)優(yōu)重要的配置參數(shù)
該表格來(lái)自網(wǎng)上大神整理的:
| 選項(xiàng) | 默認(rèn)值 | 說(shuō)明 | 是否優(yōu)化 | 原因 |
|---|---|---|---|---|
| max_connections | 100 | 允許客戶端連接的最大數(shù)目 | 否 | 因?yàn)樵跍y(cè)試的過(guò)程中,100個(gè)連接已經(jīng)足夠 |
| fsync | on | 強(qiáng)制把數(shù)據(jù)同步更新到磁盤(pán) | 是 | 因?yàn)橄到y(tǒng)的IO壓力很大,為了更好的測(cè)試其他配置的影響,把改參數(shù)改為off |
| shared_buffers | 24MB | 決定有多少內(nèi)存可以被PostgreSQL用于緩存數(shù)據(jù)(推薦內(nèi)存的1/4,不超過(guò)內(nèi)存的1/2) | 是 | 在IO壓力很大的情況下,提高該值可以減少I(mǎi)O |
| work_mem | 1MB | 使內(nèi)部排序和一些復(fù)雜的查詢(xún)都在這個(gè)buffer中完成,不夠要適可而止,每個(gè)連接都要用這么大的 | 是 | 有助提高排序等操作的速度,并且減低IO |
| effective_cache_size | 128MB | 優(yōu)化器假設(shè)一個(gè)查詢(xún)可以用的最大內(nèi)存,和shared_buffers無(wú)關(guān)(推薦內(nèi)存的1/2) | 是 | 設(shè)置稍大,優(yōu)化器更傾向使用索引掃描而不是順序掃描 |
| maintenance_work_mem | 16MB | 這里定義的內(nèi)存只是被VACUUM等耗費(fèi)資源較多的命令調(diào)用時(shí)使用 | 是 | 把該值調(diào)大,能加快命令的執(zhí)行 |
| wal_buffer | 768kB | 日志緩存區(qū)的大小 | 是 | 可以降低IO,如果遇上比較多的并發(fā)短事務(wù),應(yīng)該和commit_delay一起用 |
| checkpoint_segments | 3 | 設(shè)置wal log的最大數(shù)量數(shù)(一個(gè)log的大小為16M) | 是 | 默認(rèn)的48M的緩存是一個(gè)嚴(yán)重的瓶頸,基本上都要設(shè)置為10以上 |
| checkpoint_completion_target | 0.5 | 表示checkpoint的完成時(shí)間要在兩個(gè)checkpoint間隔時(shí)間的N%內(nèi)完成 | 是 | 能降低平均寫(xiě)入的開(kāi)銷(xiāo) |
| commit_delay | 0 | 事務(wù)提交后,日志寫(xiě)到wal log上到wal_buffer寫(xiě)入到磁盤(pán)的時(shí)間間隔。需要配合commit_sibling | 是 | 能夠一次寫(xiě)入多個(gè)事務(wù),減少I(mǎi)O,提高性能 |
| commit_siblings | 5 | 設(shè)置觸發(fā)commit_delay的并發(fā)事務(wù)數(shù),根據(jù)并發(fā)事務(wù)多少來(lái)配置 | 是 | 減少I(mǎi)O,提高性能 |
當(dāng)然我這邊也有一份前面老員工牛人整理的來(lái)看一下怎么配置。
PostgreSQL配置參數(shù)修改的方式
1.修改配置文件
在配置文件C:\PostgreSQL\data\pg96\postgresql.conf 中直接修改,修改前記得備份一下原文件,因?yàn)槟悴恢酪馔夂兔魈觳恢滥膫€(gè)會(huì)先來(lái)。修改完成之后,記得重啟數(shù)據(jù)庫(kù)哦。
2.命令行的修改方式
ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
例如:我們現(xiàn)在要修改 maintenance_work_mem
--參數(shù) show all; show maintenance_work_mem; --注意這里的設(shè)置不會(huì)改變postgresql.conf,只會(huì)改變postgresql.conf ALTER SYSTEM SET maintenance_work_mem= 1048576; --重啟數(shù)據(jù)庫(kù) show maintenance_work_mem; --取消postgresql.auto.conf的參數(shù)設(shè)置 ALTER SYSTEM SET maintenance_work_mem= default;
好的,那我們來(lái)
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
保存和重啟。因?yàn)槲业氖潜镜販y(cè)試的機(jī)器并不是最后線上的,最后線上的一定會(huì)這么用的。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
關(guān)于PostgreSQL 行排序的實(shí)例解析
這篇文章主要介紹了關(guān)于PostgreSQL 行排序的實(shí)例解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
postgresql pg_hba.conf 簡(jiǎn)介及配置詳解
配置文件之pg_hba.conf該文件用于控制訪問(wèn)安全性,管理客戶端對(duì)于PostgreSQL服務(wù)器的訪問(wèn)權(quán)限,本文給大家介紹postgresql pg_hba.conf 簡(jiǎn)介及配置,感興趣的朋友跟隨小編一起看看吧2024-03-03
postgresql高級(jí)應(yīng)用之合并單元格的思路詳解
這篇文章主要介紹了postgresql高級(jí)應(yīng)用之合并單元格,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
PostgreSQL數(shù)據(jù)庫(kù)升級(jí)的完整流程與注意事項(xiàng)
在現(xiàn)代軟件開(kāi)發(fā)和運(yùn)維實(shí)踐中,數(shù)據(jù)庫(kù)作為核心基礎(chǔ)設(shè)施,其穩(wěn)定性和性能至關(guān)重要,PostgreSQL 作為一款功能強(qiáng)大、開(kāi)源且高度可靠的數(shù)據(jù)庫(kù)管理系統(tǒng),持續(xù)推出新版本以增強(qiáng)性能、安全性和功能特性,所以本文將深入探討 PostgreSQL 數(shù)據(jù)庫(kù)升級(jí)的完整流程,需要的朋友可以參考下2026-03-03
PostgreSQL 自定義自動(dòng)類(lèi)型轉(zhuǎn)換操作(CAST)
這篇文章主要介紹了PostgreSQL 自定義自動(dòng)類(lèi)型轉(zhuǎn)換操作(CAST),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL EXPLAIN 的深入解析與應(yīng)用實(shí)例小結(jié)
文章介紹了PostgreSQL的查詢(xún)優(yōu)化器如何為SQL查詢(xún)生成和選擇合適的查詢(xún)計(jì)劃,以及如何使用EXPLAIN命令查看和理解這些計(jì)劃,最后總結(jié)了使用EXPLAIN時(shí)的注意事項(xiàng)和常見(jiàn)誤區(qū),幫助讀者更好地理解和優(yōu)化PostgreSQL查詢(xún)性能,感興趣的朋友跟隨小編一起看看吧2026-03-03
PostgreSQL 中 pg_stat_database 視圖的 tup_re
PostgreSQL的pg_stat_database視圖中的tup_returned字段統(tǒng)計(jì)了數(shù)據(jù)庫(kù)中所有查詢(xún)返回的行數(shù),是數(shù)據(jù)庫(kù)級(jí)別的累計(jì)值,它反映了數(shù)據(jù)庫(kù)的負(fù)載和查詢(xún)效率,本文介紹PostgreSQL中pg_stat_database視圖的tup_returned字段的含義,感興趣的朋友一起看看吧2025-12-12

