KingbaseES数据库的配置参数都在kingbase.conf文件中,这些参数有些是直接修改就可以生效,有些需要重启数据库才能生效,而有些根本就不能修改。数据库把这些参数分为以下几类:

  • internal:这类参数为只读参数。有些是程序写死的,有些是在安装数据库时intdb时设置好的。
  • kingbase:这类参数需要重启数据库服务才能生效。
  • sighup:无需重启数据库,但要向kingbase进程发送sighup信号,即需要操作系统命令sys_ctl reload或进入ksql中, select sys_reload_conf();重新加载配置文件。
  • backend:无需重启数据库,只需向kingbase进程发送sighup信号。但新的配置参数只能在之后的新连接中生效,已有连接中这些参数值不会改变。
  • superuser:这类参数可以由超级用户使用set命令修改。参数设置后只会影响超级用户自身的session配置,不会影响其他用户。
  • user:普通用户使用set命令修改,这类参数修改后和superuser类参数一样,也是只影响自身session。

我们可以通过查询sys_settings表的context字段值来查看参数是否需要重启数据库生效。如下:

  1. test=# select name,context,pending_restart from sys_settings where name like 'bgwriter%';
  2. name | context | pending_restart
  3. -------------------------+---------+-----------------
  4. bgwriter_delay | sighup | f
  5. bgwriter_flush_after | sighup | f
  6. bgwriter_lru_maxpages | sighup | f
  7. bgwriter_lru_multiplier | sighup | f

可以通过查看sys_file_settings查看你设置的参数是否生效。例如如果你设置了⼀个参数需要重启数据库才能生效或者设置错误,那么在此字典中会出现报错。

1.全局参数修改:

使用alter system 命令修改参数.使用alter system命令将修改kingbase.auto.conf文件,而不是kingbase.conf文件,这样可以很好的保护kingbase.conf文件,不要手工对kingbase.auto.conf文件进行修改。该文件保存最新的配置,当数据库服务重启时,kingbase.auto.conf 里的修建项配置优先。当 kingbase.conf 和kingbase.auto.conf两个文件中都存在相同参数,kingbase.conf文件修改无效。

查看kingbase.auto.conf文件

  1. [kingbase@localhost data]$ cat kingbase.auto.conf |grep 'work'
  2. work_mem = '8MB'

使用sys_ctl reload命令重载配置文件,再查看参数值:

  1. test=# show work_mem;
  2. work_mem
  3. ----------
  4. 8MB
  5. (1 row)

2.使用set命令,在会话层修改,修改之后将被用于未来的每个事务,但只对当前会话有效。

  1. test=# set work_mem='20MB';
  2. SET
  3. test=#
  4. test=# show work_mem;
  5. work_mem
  6. ----------
  7. 20MB
  8. (1 row)

这时候再打开一个会话看到work_mem还是4MB,因为只对当前会话有效。

3.set命令后添加 local关键字, 只在当前事务中修改,只在当前事务内有效:

  1. test=# show work_mem;
  2. work_mem
  3. ----------
  4. 20MB
  5. (1 row)
  6. test=#
  7. test=# begin;
  8. BEGIN
  9. test=# set local work_mem='10MB';
  10. SET
  11. test=#
  12. test=# show work_mem;
  13. work_mem
  14. ----------
  15. 10MB
  16. (1 row)
  17. test=# commit;
  18. COMMIT
  19. test=# show work_mem;
  20. work_mem
  21. ----------
  22. 20MB
  23. (1 row)

4.使用 reset恢复参数的默认值

可以通过视图sys_settings里的字段reset_val字段中的值了解此参数恢复默认值的大小。使用reset all可以恢复所有参数值。

  1. test=# select name , reset_val from sys_settings where name like 'work%';
  2. name | reset_val
  3. ----------+-----------
  4. work_mem | 8192
  5. (1 row)
  6. test=# show work_mem;
  7. work_mem
  8. ----------
  9. 20MB
  10. (1 row)
  11. test=# reset work_mem;
  12. RESET
  13. test=# show work_mem;
  14. work_mem
  15. ----------
  16. 8MB
  17. (1 row)

5.为特定的用户设置参数

5.1.为特定的数据库的所有用户设置参数.

单独为test数据库所有的连接设置work_mem为16MB:

  1. test=# alter database test set work_mem='16MB';
  2. ALTER DATABASE
  3. test=#

5.2.为数据库中的某个用户设置参数.

例如为bob用户,设置work_mem为4MB:

  1. test=# alter role bob set work_mem='4MB';
  2. ALTER ROLE

经过测试发现,如果你同时为数据库和用户设置了特定参数,那么以用户参数为准.例如上面,如果我用bob用户连接到test数据库,那么我的work_mem应该为4MB:

  1. test=# \c test bob
  2. You are now connected to database "test" as user "brent".
  3. test=>
  4. test=# show work_mem;
  5. work_mem
  6. ----------
  7. 4MB
  8. (1 row)

5.3.为某个用户连接到特定的数据库设置参数.

例如为用户ttname在数据库test中设置work_mem为8MB

  1. test=> alter role ttname in database test set work_mem='8MB';
  2. ALTER ROLE

上面说的三种设置,优先级递增,例如,如果1,2,3全部设置了那么就以第3个为准,如果设置了1,2那么就是以2为准。

KingbaseES对此的实现方法和当用户连接数据库的时候,手动执行set命令的效果完全相同

查看你当前的参数值是从何处指定,可以通过查询sys_setttings中的source字段获取,例如如果设置了database级别的参数.那么查询结果如下:source为database

  1. test=# select name,setting,source from sys_settings where name='work_mem';
  2. name | setting | source
  3. ----------+---------+----------
  4. work_mem | 16384 | database

例如设置了第三种:source为databae user

  1. test=> \c test ttname
  2. You are now connected to database "test" as user "ttname".
  3. test=> select name,setting,source from sys_settings where name='work_mem';
  4. name | setting | source
  5. ----------+---------+---------------
  6. work_mem | 8192 | database user
  7. (1 row)

总结:综上所述,如果通过数据字典视图查看参数生效条件。可从全局或session级更改参数等。

KingbaseES中的参数查看与修改的更多相关文章

  1. ORACLE隐藏参数查看及修改

    查看隐藏参数 select x.ksppinm name, y.ksppstvl value, y.ksppstdf isdefault, decode(bitand(y.ksppstvf,7),1, ...

  2. Linux中文件权限查看和修改

    权限定义 linux文件权限分为:r读权限(4).w写权限(2).x执行权限(1) linux权限对象分为:拥有者.组用户.其他用户 权限修改: chown user:group /usr/local ...

  3. 如何修改myeclipse 内存?eclipse.ini中各个参数的作用。

    修改MyEclipse/eclipse文件夹中配置文件eclipse.ini中的内存分配就哦了 =================================== 一般的ini文件设置主要包括以下 ...

  4. 如何修改myeclipse 内存,eclipse.ini中各个参数的作用。

    修改MyEclipse/eclipse文件夹中配置文件eclipse.ini中的内存分配就哦了 =================================== 一般的ini文件设置主要包括以下 ...

  5. 如何在cmd命令行中查看、修改、删除与添加环境变量,语法格式例子:set path;echo %APPDATA%

    如何在cmd命令行中查看.修改.删除与添加环境变量 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修 ...

  6. oracle隐含参数的查看与修改

    v$parameter视图中查询参数的时候其实都是通过x$ksppi和x$ksppcv这两个内部视图中得到的. 1.   可以通过如下方式查询当前实例的所有隐含参数: col name for a30 ...

  7. centos linux中怎么查看和修改计算机名/etc/sysconfig/network

    centos linux中怎么查看和修改计算机名 查看计算机名:在终端输入hostname 修改的话 hostname +计算机名(重启后失效)要永久修改的话要修改配置文件/etc/sysconfig ...

  8. js 获取url中的参数 修改url 参数 移除url参数

    js 获取url中的参数 修改url 参数 移除url参数 var jsUrlHelper = { getUrlParam : function(url, ref) { var str = " ...

  9. JavaWeb 学习006-4个页面,5条sql语句(添加、查看、修改、删除)

    今天遇到的问题: 1. 在list页面上添加信息时候,跳转到doAdd页面后,点击保存按钮,能够跳转回list页面,但是新增的信息不能显示出来,就像是没有执行添加操作一样. 这是什么问题? ①是不是到 ...

随机推荐

  1. 实现领域驱动设计 - 使用ABP框架 - 解决方案概览

    .NET解决方案的分层 下图显示了使用ABP的 应用启动模板 创建的Visual Studio解决方案: 解决方案名称为问题跟踪,它由多个项目组成.通过考虑DDD原则以及开发和部署实践,该解决方案是分 ...

  2. ssh-配置及使用

    ssh配置文件 SSH的配置文件在/etc/ssh/目录下     openssh-client安装后,生成的配置文件为ssh_config,主要用于连接其他linux主机时,加载此文件     op ...

  3. Codeforces Round #779 (Div. 2)

    A 题目连接 题目大意 给一个01串,其中每一个长度大于等于2的子区间中0的数量不大于1的数量,最少插入多少1 思路 寻找 00 和 010 00 -->0110     加2 010 --&g ...

  4. 没想到吧,Spring中还有一招集合注入的写法

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了.bean的注入相信大家都比较熟 ...

  5. 初始化二维列表时使用[ [0]* N ] * K会出现的问题

    声明二维列表使用[ [0]* N ] * K会出现的问题 初始化二维列表时使用[ [0]* N ] * K创建,外层列表的每一个元素地址相同: 创造了一个二维列表: 修改其中的一个元素a[1][1], ...

  6. Re:用webpack从零开始的vue-cli搭建'生活'

    有了vue-cli的帮助,我们创建vue的项目非常的方便,使用vue create然后选择些需要的配置项就能自动帮我们创建配置好的webpack项目脚手架了,实在是'居家旅行'必备良药.这次借着学习w ...

  7. c++小游戏———扫雷

    大家好,我是芝麻狐! 这是我自制的小游戏,目前仅支持devc++. 如果你没有c++软件, 请打开网站GDB online Debugger | Compiler - Code, Compile, R ...

  8. 第一天python3 封装和解构

    封装 将多个值使用逗号分割,组合在一起:本质上,返回一个元组,只是省略了小括号:python特有语法,被很多语言学习和借鉴;比如javascript:t1=(1,2) 定义为元组:t2=1,2 将1和 ...

  9. Cayley 公式的另一种证明

    Cayley 公式的一些广为人知的证法: Prufer 序列 Matrix-Tree 定理 然而我都不会 233,所以下面说一个生成函数角度的证法 . 我们知道 \(n\) 个节点的有标号无根树有 \ ...

  10. php和js的不定参

    function my_func() { $args = func_get_args(); print_r($args); } my_func('php','java','node.js'); jav ...