注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

PostgreSQL9.5:新增参数设置神器:pg_file_settings 视图  

2015-08-11 11:52:45|  分类: Postgres基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

           9.5 版本新增 pg_file_settings 视图,可谓参数设置的神器,为啥这么说呢? 因为 postgresql.conf 参数值调整后,有些 reload 后就生效了,有些需要重启服务才生效,如果你设置的参数值是非法的, pg_ctl reload 命令也不报错,这时很让人尴尬,reload 后还得连到数据库里去 show 参数值,确认参数值是否生效,9.5 版本新增 pg_file_settings 视图,让这项工作容易很多。
   
一 关于 pg_file_settings 视图

--pg_file_settings 视图
postgres=# \d pg_file_settings
View "pg_catalog.pg_file_settings"
   Column   |  Type   | Modifiers
------------+---------+-----------
 sourcefile | text    |
 sourceline | integer |
 seqno      | integer |
 name       | text    |
 setting    | text    |
 applied    | boolean |
 error      | te
 
postgres=# select * from pg_file_settings limit 3;
               sourcefile               | sourceline | seqno |       name       | setting | applied | error
----------------------------------------+------------+-------+------------------+---------+---------+-------
 /database/pg95/pg_root/postgresql.conf |         59 |     1 | listen_addresses | *       | t       |
 /database/pg95/pg_root/postgresql.conf |         63 |     2 | port             | 1931    | t       |
 /database/pg95/pg_root/postgresql.conf |         64 |     3 | max_connections  | 100     | t       |
(3 rows)

备注:sourcefile: 配置文件名称
            sourceline:配置参数位于配置文件的行数
            seqno:     配置参数的序列号
            name:       参数名称
            setting:   参数当前设置值
            applied:   参数设置成功与否标志,设置成功为 t
            error:      如果非空,表示此参数被 applied 时的报错信息
      
      接下来做两项测试: 测试一: 设置  log_statement 参数成非法值; 测试二: 设置需要重启服务才生效的参数。
 
二 测试一: 设置  log_statement 参数成非法值      
--设置 log_statement 参数成非法值

[pg95@db2 pg_root]$ grep "log_statement =" postgresql.conf
log_statement = 'ddd'                   # none, ddl, mod, all


--reload 配置

[pg95@db2 pg_root]$ pg_ctl reload
server signaled

备注: postgresql.conf 参数调整后,不管设置成功与否, pg_ctl reload 参数是不输出相关信息的,9.5 版本之前要确认参数是否成功有两种方法,一种是查看相关 pg_log , 例如

--查看报错日志

[pg95@db2 pg_log]$ grep "log_statement" postgresql-2015-08-11_000000.csv
2015-08-11 10:36:36.177 CST,,,31634,,55c83dc1.7b92,9,,2015-08-10 13:59:29 CST,,0,LOG,22023,"invalid value for parameter ""log_statement"": ""ddd""",,"Available values: none, ddl, mod, all.",,,,,,,""
2015-08-11 10:43:25.063 CST,,,31634,,55c83dc1.7b92,12,,2015-08-10 13:59:29 CST,,0,LOG,22023,"invalid value for parameter ""log_statement"": ""ddd""",,"Available values: none, ddl, mod, all.",,,,,,,""


--另一种方式是连接到数据库中查看

[pg95@db2 pg_log]$ psql -c "show log_statement"
 log_statement
---------------
 none
(1 row)

备注:可见 log_statement 参数设置无效。 9.5 版本之后,可以通过 pg_file_settings 视图查看。

--查看 pg_file_settings 中的错误信息

postgres=# select * from pg_file_settings where error is not null;
-[ RECORD 1 ]--------------------------------------
sourcefile | /database/pg95/pg_root/postgresql.conf
sourceline | 441
seqno      | 32
name       | log_statement
setting    | ddd
applied    | f
error      | setting could not be applied

备注:错误信息简单明了。


三 测试二: 设置需要重启服务才生效的参数
--修改 max_connections 参数

[pg95@db2 pg_root]$ grep "max_connections =" postgresql.conf
max_connections = 100                   # (change requires restart)

备注: max_connections 参数默认为 100,这个参数设置后需要重启才生效,我们把它设置成 200。

[pg95@db2 pg_root]$ grep "max_connections =" postgresql.conf
max_connections = 200                   # (change requires restart)

[pg95@db2 pg_root]$ pg_ctl reload
server signaled


--数据库查看

postgres=# select * from pg_file_settings where name='max_connections';
-[ RECORD 1 ]--------------------------------------
sourcefile | /database/pg95/pg_root/postgresql.conf
sourceline | 64
seqno      | 3
name       | max_connections
setting    | 200
applied    | f
error      | setting could not be applied

备注:max_connections 参数的 ERROR 信息很明显了,新增这个视图将让参数设置这项工作变得容易 。

四 参考
  评论这张
 
阅读(958)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016