Print

【MVS】Kingbase V9 修改静态参数实验

问题描述

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 的状态。