主配置文件/KingbaseES/V8/data/kingbase.conf
# 可通过find查找 [默认存储在database cluseter目录中]
find / -name kingbase.conf
辅助参数文件kingbase.auto.conf
# 可通过find查找 [默认存储在database cluseter目录中]
find / -name kingbase.auto.conf
查看当前会话的参数值
select * from sys_settings where name="参数"
sys_settings参数
字段 | 描述 |
---|---|
name | 运行时配置参数名 |
setting | 参数当前值 |
unit | 参数的隐式单位(8KB 16MB s min kb ms) |
category | 参数的逻辑分类 |
short_dec | 参数的简短描述 |
extra_desc | 附加参数的详细描述 |
context | 要求设置此参数值的上下文 |
min_val | 参数的最小允许值(仅非数字值有效) |
max_val | 参数的最大允许值(仅非数字值有效) |
enumvals | 一个枚举参数的允许值(仅非数字值有效) |
reset_val | 当前会话中,RESET将会设置的参数值 |
sourcefile | 当前值所在配置文件 在配置文件中使用include指令时有用 |
sourceline | 当前值在配置文件中的行号 |
pending_restart | 参数修改后是否需要重启才能生效(t:重启 f:不需要重启) |
kingabase.conf全局修改参数
- 编辑kingbase.conf文件,修改相关参数的值
- 通过以下方法控制KES重新读取kingbase.conf文件并让参数修改值生效
- 不需要重启的参数,修改完kingbase后需要执行
sys_ctl reload
重载 - 需要重启的参数,在修改完kingbase后需要执行
sys_ctl restart
重启服务
- 不需要重启的参数,修改完kingbase后需要执行
ALTER SYSTEM全局修改参数
只会删除辅助参数文件中配置,不会删除主配置文件中配置
语法 | 说明 |
---|---|
ALTER SYSTEM SET parameter = value ; | 将某参数修改成某值(值为数字不需要引号) |
ALTER SYSTEM SET parameter = ‘value’; | 将某参数修改成某值(值为非数字需要引号) |
ALTER SYSTEM SET parameter T0 DEFAYLT; | 还原指定参数到初始值 |
ALTER SYSTEM SET parameter; | 还原指定参数到初始值 |
ALTER SYSTEM SET ALL; | 还原所有参数到初始值 |
示例
使用ALTER SYSTEM全局修改参数
ksql test system # 使用system用户登陆test数据库
# 进入数据库对话
show shared_buffers; # 查看shared_buffers参数值
alter system set shared_buffers='1024MB'; # 修改shared_buffers值
show shared_buffers; # 再次查看参数值
cat /data/kingbase.auto.conf # 查看辅助参数文件
# 查看主配置文件
cat /data/kingbase.conf
会话级别修改参数
# 只在当前会话生效
set work_mem='8MB'; # 在当前会话中修改
事务级别修改参数
begin; # 开启事务
set local work_mem='8MB'; # 修改
commit; # 提交事务
限制参数在局部范围生效
以下三种设置参数的方式,优先级分别为低、中、高,优先级递增
为特定数据库的所有用户设置参数
# 为test数据库所有连接设置work_mem为16mb [针对数据库覆盖其全局配置]
ALTER DATABASE test SET work_mem='16MB';
为数据库中的某个特定用户设置参数
# 为system用户设置work_mem为32mb [为用户指定一个值来覆盖全局设置和数据库设置]
ALTER USER system SET work_mem='16MB';
为某个特定用户连接到特定的数据库设置参数
# 为用户system在数据库test中设置work_mem为8mb
ALTER ROLE user01 IN DATABASE test SET work_mem='8MB';
查看当前生效参数值的设置方式
SELECT source FROM sys_settings WHERE name="work_mem";
- user:用户级别
- database:数据库级别
- database user:数据库级别和用户级别
判断修改参数后需要重启还是重载
查看配置文件中对应参数的备注
grep ~port /data/kingbase.conf
# restart:重启 reload:重载
通过pending_restart字段
SELECT name,pending_restart FROM sys_settings WHERE name='port';
# pending_restart = t :修改参数后需要重启实例才能生效
通过context字段
SELECT name,context FROM sys_settings WHERE name='port';
主辅参数配置文件区别
文件默认内容不同
kingbase.conf
文件创建成功之后,里面有kingbase依赖的默认配置文件参数,如最大连接数、共享缓存区等kingbase.conf
文件的内容默认为空
文件修改方式不同
kingbase.conf
中的内容只能使用文本编辑修改kingbase.auto.conf
中的内容可以有ALTER SYSTEM
命令修改
生效方式
两个文件中的参数都需重启实例或重载参数生效
主配置文件优先级低于辅助参数文件
- 同一个参数在两个文件中都存在时,最终以
kingbase.auto.conf
中的设置为准 - 使用
alter system reset
设置参数恢复到默认值,kingbase.auto.conf
文件中的该参数配置会被删除,重新引用kingbase.conf
文件中的参数设置