关键字:
GUC、配置方法、作用范围
一、GUC参数介绍
GUC(Grand Unify Configuration)是金仓数据库管理系统KingbaseES 的参数管理机制, KES的参数均通由此管理, 故也常常称配置参数为GUC参数。
根据配置条件(配置时机、配置权限等)的不同,GUC 参数可以划分成多种类型,例如系统启动时、内部进程设定、超级用户设定、普通用户设定等。
相同的GUC参数还可以多种方法配置,根据配置方法的不同参数值的作用范围不同,例如会话级别、数据库级别等。
二、常见配置方法
1.1 通过文件配置
通过文件配置是最常见的参数配置方法。例如搭建数据库集群时,我们常常通过修改配置文件kingbase.conf来修改数据库的默认端口。我们在修改端口后,可以重启数据库来应用新的参数配置。
除了需要重启方能生效的配置,一些允许在线修改的参数也能通过配置文件修改,修改后通过sys_ctl 或者sys_relocal_conf函数使之生效。如下图,我们在kingbase.conf中修改了checkpoint_timeout的默认值(5min), 然后通过sys_relocal_conf函数更改了其默认值。
通过配置文件修改的参数作用域为整个数据库系统。我们待函数生效后重新登陆会话,发现查询到的仍为修改后的值。
1.2 通过SQL配置
KES提供了多条SQL配置GUC参数,不同SQL的作用范围不同,用户可以根据需求选择对应的语法。
1.2.1 ALTER SYSTEM
该语句等同于修改配置文件,会修改参数的默认值,在整个系统范围内生效。
1.2.2 ALTER DATABASE/ ALTER ROLE
该语句会修改配置文件的默认值,设置后会在后续登陆的会话中生效。当数据库重启时,该值仍然有效。
我们选择一个可以在线修改的参数commit_delay来测试该语法的作用。首先修改配置文件,修改默认值为10。
重启数据库,发现默认值已变更。
通过ALTER DATABASE 语法修改值为50(此时配置文件仍为10),登陆新会话发现该值已变更。且重启后仍然生效。
ALTER ROLE 作用范围类似,此处不展开介绍。
1.2.3 SET
通过SET 语法设置的参数值只能在当前会话中生效,其他会话不会看到此变更,当会话退出时该值失效。
三、总结
1、通过修改配置文件或者ALTER SYSTEM可以修改参数的默认值。
2、ALTER DATABASE和ALTER ROLE可以覆盖配置文件中指定的默认值,而且重启后仍会生效。
3、SET设置的参数仅在当前会话中有效,会话断开则修改失效。
参考文档:
《KingbaseES SQL语言参考手册》