postgresql 中的参数查看和修改方式

postgresql 中的参数查看和修改方式

这篇文章主要介绍了一种数据库系统中的参数查看和修改方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1.查看参数文件的位置

使用显示命令查看,比较常用的显示配置文件。此还可以查看pg _设置数据字典。

test=# show配置文件

配置文件

-

/data/pgdata/postgresql.conf

(1行)

测试=#显示hba _文件

测试-#;

hba _文件

-

/data/pgdata/pg_hba.conf

(1行)

测试=# show ident _ file

识别文件

-

/data/pgdata/pg_ident.conf

2.查看当前会话的参数值

可以使用显示命令或者查看pg _设置字典。

使用全部显示可以查看全部的参数值。显示参数名查看指定参数

test=#显示全部

- - -

allow_system_table_mods | off |允许修改系统表结构。

应用程序名称| psql |设置要在统计和日志中报告的应用程序名称。

存档命令|测试!-f/data/archive/% f CP % p/data/archive/% f |设置将被调用来存档塞拉利昂文件的壳命令。

存档模式|开启|允许使用存档命令归档塞拉利昂文件。

存档超时| 0 |如果新文件在普通秒内未启动,则强制切换到下一个塞拉利昂文件。

array_nulls | on |允许在数组中输入空元素。

.

测试=# show work _ mem

工作记忆

-

4MB

(1行)

测试=# x

扩展显示已打开。

test=# select * from pg _ settings where name in( work _ mem )

测试-#;

-[记录1 ] - -

名称|工作记忆

设置| 4096

单位| kB

类别|资源使用/内存

肖特_desc |设置用于查询工作区的最大内存。

额外_desc |在切换到临时磁盘文件之前,每个内部排序操作和哈希表都可以使用这么多内存。

上下文|用户

变量类型|整数

源|默认

最小值| 64

max_val | 2147483647

enumvals |

boot_val | 4096

重置值| 4096

源文件|

sourceline |

挂起_重新启动| f

3.修改pg的参数值

1.全局修改pg的参数.

有些参数只有当程序制导服务重启的时候才生效,典型的例子就是共享缓冲区,定义了共享内存的大小。

许多参数在程序制导服务运行的时候就能修改。再更改之后像服务器执行一个再装操作,强制程序制导重新读取postgresql.conf,因此你只需要编辑postgresql.conf文件,再执行pg_ctl重新加载即可。对于需要重启的,在修改完一种数据库系统后需要执行pg_ctl重启

对于9.5以后的版本,可以通过查看pg _文件_设置查看你设置的参数是否生效。例如如果你设置了一个参数需要重启数据库才能生效或者设置错误,那么在此字典中会出现报错。

测试=# select *从pg _文件_设置其中错误不为空

源文件|源代码行|序列号|名称|设置|应用|错误

- - - - - - -

/data/pg data/PostgreSQL。自动。会议| 4 | 22 |最大连接数| 10000 | f |无法应用设置

(1行)

对于9.4以后的版本,您还可以使用alter system命令来修改参数。使用alter system命令会修改postgresql.auto.conf文件而不是postgresql.conf,这样可以很好地保护postgresql.conf文件。添加了很多alter system命令后,你搞得一塌糊涂,那么你只需要删除postgresql.auto.conf,重新加载即可。

test=# show work _ mem

工作记忆

-

4MB

(1行)

test=# alter system set work _ mem= 8MB ;

改变系统

test=# show work _ mem

工作记忆

-

4MB

(1行)

检查postgresql.auto.conf:

[postgres @ PostgreSQL 1 pg data]$ cat PostgreSQL . auto . conf

#不要手动编辑此文件!

#它将被ALTER SYSTEM命令覆盖。

work_mem=8MB

使用pg_ctl load重新加载配置文件,然后检查参数值:

test=# show work _ mem

工作记忆

-

8MB

(1行)

2.直接使用set命令,在会话层修改,修改之后将被用于未来的每一个事务,只对当前会话有效:

测试=#

test=# set work _ mem= 16MB

设置

test=# show work _ mem

工作记忆

-

16MB

(1行)

我们再打开一个会话,检查work_mem参数,可以发现work_mem还是4MB。

postgres=# show work _ mem

工作记忆

-

4MB

(1行)

3.set命令后添加 local关键字, 只在当前事务中修改,只在当前事务内有效:

test=# show work _ mem

工作记忆

-

16MB

(1行)

test=# begin

开始

test=# set local work _ mem= 8MB

设置

test=# show work _ mem

工作记忆

-

8MB

(1行)

test=# commit

犯罪

test=# show work _ mem

工作记忆

-

16MB

4.使用 reset恢复参数的默认值

pg_settings字典的reset_val字段指示如果使用reset,该参数的默认值是什么。

使用“重置参数名”恢复参数的默认值,使用“全部重置”恢复所有参数值。

test=# show work _ mem

工作记忆

-

16MB

(1行)

test=# reset work _ mem

重置

test=# show work _ mem

工作记忆

-

4MB

(1行)

test=# reset all

重置

5.为特定的用户组设置参数

一.为特定的数据库里的所有的用户设置参数,例如为test数据库所有的连接设置work_mem为16MB:

test=# alter database测试集work _ mem= 16MB

改变数据库

二.为数据库中的某个特定用户设置参数.例如为brent用户,设置work_mem为2MB:

postgres=# alter role Brent set work _ mem= 2MB ;

改变角色

经过测试发现,如果你为数据库和用户都设置了特定的参数,那么以用户为准。例如,如果我用brent用户连接到测试数据库,那么我的work_mem应该是2MB:

postgres=# c测试布伦特

您现在以用户“brent”的身份连接到数据库“test”。

测试=

测试=

test=show work _ mem

工作记忆

-

2MB

三.为某个特定用户连接到特定的数据库设置参数.例如为用户brent在数据库test中设置work_mem为8MB

test=# alter role brent in database测试集work _ mem= 8MB

改变角色

以上三个设置优先级递增,也就是说,如果设置了1、2、3,则以第三个为准,如果设置了1、2,则以2为准,以此类推。

pg的实现方法和用户连接数据库时立即手动执行set命令完全一样。

检查指定当前参数值的位置,该值可以通过查询pg _ setttings中的source字段获得。例如,如果设置了数据库级别参数,查询结果应该如下所示:

test=# select name,setting,source from pg_settings其中name= work _ mem

名称|设置|来源

- - -

work_mem | 16384 |数据库

其他的,比如第三个:

test=# c测试布伦特

您现在以用户“brent”的身份连接到数据库“test”。

test=select name,setting,source from pg_settings其中name= work _ mem

名称|设置|来源

- - -

work_mem | 8192 |数据库用户

补充:postgresql重要参数解析及优化

1,max_connections 200

最大客户端连接数。后端的每个连接都会对应相应的进程,消耗一定的内存资源。如果有数千个连接,您需要使用连接池工具。

2,shared_buffers 25% of total memory

用于缓存数据的数据库的内存大小。这个参数的默认值很低(考虑到不同的系统平台),需要调整。它不应该太大。很多实践表明,大于1/3的内存会降低性能。

3,effective_cache_size 50%-75% of total memory

这是操作系统和PostgreSQL缓冲区缓存中预期可用内存量的指南,而不是分配!此参数仅在查询优化器选择时使用,它不是实际分配的内存。该参数越大,查询优化器就越倾向于选择索引扫描。

4,checkpoint_segments 256 checkpoint_completion_target 0.9

checkponit_segments的数量是多少?Checkponit,还有一个参数checkponit_timeout,控制最长的检查点。对于写入大型数据库,该值越大越好。但是,该值越大,执行恢复所需的时间就越长。

Checkpoint_completion_target控制checkponit write的分散写入,值越大越分散。默认值0.5和0.9是一个合适的值。

5,work_mem

用于排序,默认值就可以了。每个连接都会分配一定量的work_mem,也就是实际分配的内存。不要太大,默认值就够了。如果要使用的语句中有大型排序操作,可以在会话级设置这个参数,setwork _ men= 2GB ,提高执行速度。

6,maintanance_work_mem

用于维护操作的内存。例如:清空、创建索引、更改表、添加外键、恢复数据库转储。在执行这些操作时,可以临时设置该值以加快执行速度。set session maintenance _ work _ mem= 2GB ;

7,random_page_cost (默认值 4) seq_page_cost(默认值 1)

将优化器设置为获取随机页面的开销,与下一个顺序扫描的页面的开销1进行比较。5%.

使用raid阵列、scsi和ssd等快速存储时,可以适当降低该值。这有利于优化器的悬挂索引扫描。Ssd,可以设置为2。

8,autovacuum

—维护_工作_内存1-2GB

—自动真空_最大_工作人员

如果有多个小表,则分配更多的workers和更少的mem。

大桌子,更多的人,更少的工人。

以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。如有错误或不足之处,请不吝赐教。

postgresql 中的参数查看和修改方式