KES V9环境修改静态参数,过程疑问及解决记录一下。
1.为啥查视图setting值和show 输出值不一样?
2.再次修改参数后,pending_restart显示还是f,难道不需要重启参数就能生效?
再次修改shared_buffers为900MB;查看提示不需要重启;
```
test=# ALTER SYSTEM SET shared_buffers TO '900MB';
ALTER SYSTEM
test=# SELECT name,setting,unit,source,pending_restart FROM sys_settings WHERE name='shared_buffers';
name | setting | unit | source | pending_restart
----------------+---------+------+--------------------+-----------------
shared_buffers | 243200 | 8kB | configuration file | f
(1 row)
test=# SHOW shared_buffers
test-# ;
shared_buffers
----------------
1900MB
(1 row)
```
重新加载参数,pending_restart提示需要重启;
```
test=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
test=# SELECT name,setting,unit,source,pending_restart FROM sys_settings WHERE name='shared_buffers';
name | setting | unit | source | pending_restart
----------------+---------+------+--------------------+-----------------
shared_buffers | 243200 | 8kB | configuration file | t
(1 row)
```
查看kingbase.auto.conf文件,新参数已写入参数文件。
```
[kingbase@kesv9 data]$ cat kingbase.auto.conf
shared_buffers = '900MB'
```
重启数据库后,参数生效:
```
[kingbase@kesv9 data]$ sys_ctl restart
test=# SHOW shared_buffers;
shared_buffers
----------------
900MB
(1 row)
test=# SELECT name,setting,unit,source,pending_restart FROM sys_settings WHERE name='shared_buffers';
name | setting | unit | source | pending_restart
----------------+---------+------+--------------------+-----------------
shared_buffers | 115200 | 8kB | configuration file | f
(1 row)
```
解释:
1. 参数单位与视图显示不一致的原因: SHOW shared_buffers 的输出是自动转换为人类易读的单位(如 MB),而 sys_settings 视图的 setting 字段 的值始终以 unit 列指定的最小单位(如 8kB)为基准存储。
2. pending_restart值为f的原因;ALTER SYSTEM SET 仅将新参数值写入 postgresql.auto.conf,但不会自动加载到当前运行的实例中。必须执行 SELECT pg_reload_conf();(或 sys_reload_conf(),具体取决于你的环境)才能重新加载配置文件。此时,PostgreSQL 会检查新参数是否需要重启,并更新 pending_restart 的状态。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作