金仓数据库KingbaseES参数设置介绍 |
您所在的位置:网站首页 › cass80地籍参数设置命令 › 金仓数据库KingbaseES参数设置介绍 |
参数级别介绍 KingbaseES配置参数共包括以下七个级别(由低到高),其中参数属于sighup及其后续级别的可由用户设置: 参数级别 级别说明 internal 仅支持内部使用 kingbase 仅支持启动时设置 sighup 支持修改配置文件后通过SIGHUP信号更新参数 superuser-backend 超级用户的后台级参数 backend 普通用户的后台级参数 superuser 支持超级用户在线修改的参数 user 支持普通用户在线修改的参数 查看参数以与所属级别的命令如下: kingbase=# SELECT name,context,short_desc FROM sys_settings ORDER BY context,name; server_version_num | internal | Shows the server version as an integer. ssl_library | internal | Name of the SSL library. wal_block_size | internal | Shows the block size in the write ahead log. wal_segment_size | internal | Shows the size of write ahead log segments. allow_system_table_mods | kingbase | Allows modifications of the structure of system tables. archive_mode | kingbase | Allows archiving of WAL files using archive_command. autovacuum_freeze_max_age | kingbase | Age at which to autovacuum a table to prevent transaction ID wraparound. autovacuum_max_workers | kingbase | Sets the maximum number of simultaneously running autovacuum worker processes. autovacuum_multixact_freeze_max_age | kingbase | Multixact age at which to autovacuum a table to prevent multixact wraparound. bonjour | kingbase | Enables advertising the server via Bonjour. bonjour_name | kingbase | Sets the Bonjour service name. cluster_name | kingbase | Sets the name of the cluster, which is included in the process title. config_file | kingbase | Sets the server’s main configuration file. data_directory | kingbase | Sets the server’s data directory. data_sync_retry | kingbase | Whether to continue running after a failure to sync data files. dynamic_shared_memory_type | kingbase | Selects the dynamic shared memory implementation used. event_source | kingbase | Sets the application name used to identify KingbaseES messages in the event log. external_pid_file | kingbase | Writes the kingbase PID to the specified file. hba_file | kingbase | Sets the server’s “hba” configuration file. hot_standby | kingbase | Allows connections and queries during recovery. huge_pages | kingbase | Use of huge pages on Linux or Windows. ident_file | kingbase | Sets the server’s “ident” configuration file. jit_provider | kingbase | JIT provider to use. listen_addresses | kingbase | Sets the host name or IP address(es) to listen to. –More– 参数优先级别 KingbaseES 参数配置的方式可以使用配置文件 、数据库服务启动命令、系统命令等方式进行配置,不同的配置方式具备不同的优先级。 下文将按照优先级(数值越大,优先级别越高)从低到高进行介绍参数的10种设置方式。在线配置参数时,具备权限的用户只支持对"sighup"级别及以后的参数进行设置。 1 配置文件 操作方式: 通过编辑器直接操作配置文件kingbase.conf,实现新增、修改、删除配置参数 生效方式: 重启服务生效;通过调用函数sys_reload_conf()重新加载配置文件的方式。 示例: 1)编辑配置文件kingbase.conf,新增如下配置: work_mem = 6MB 2)在命令行工具ksql下重新加载配置文件,然后查询如下: kingbase=# show work_mem; work_mem4MB (1 row) kingbase=# select sys_reload_conf(); sys_reload_conft (1 row) kingbase=# show work_mem; work_mem6MB (1 row) 2 ALTER SYSTEM命令 操作方式: alter system reset all –-删除kingbase.auto.conf中全部的参数配置 alter system reset … –-删除kingbase.auto.conf中给定的参数配置 alter system set … = default–-删除kingbase.auto.conf中给定的参数配置 alter system set … = value –-新增给定的参数配置到kingbase.auto.conf 生效方式: 重启服务生效;通过调用函数sys_reload_conf()重新加载配置文件的方式。 示例: kingbase=# alter system set work_mem = ‘7MB’; ALTER SYSTEM kingbase=# select sys_reload_conf(); sys_reload_conft (1 row) kingbase=# show work_mem; work_mem7MB (1 row) 3 启动数据库服务时指定参数 操作方式: sys_ctl start启动数据库服务时应用-o选项指定参数的配置 生效方式: 重启服务生效 示例: 1)在Linux终端启动服务:sys_ctl start -o “-c work_mem=‘8MB’” 2)启动成功后,在命令行工具ksql下查询参数如下: kingbase=# show work_mem; work_mem8MB (1 row) 4 ALTER ALL ROLE命令 操作方式: ALTER ROLE ALL SET … = value 生效方式: 重启服务生效;打开新的连接会话时配置参数生效。 示例: 1)在命令行工具ksql下执行如下命令: kingbase=# alter role all set work_mem=‘9MB’; ALTER ROLE kingbase=# show work_mem; work_mem 8MB (1 row) 2)退出ksql当前连接,重新连接后执行查询语句,显示如下: kingbase=# show work_mem; work_mem9MB (1 row) 5 ALTER DATABASE … SET命令 操作方式: ALTER DATABASE db SET … = value 生效方式: 重启服务生效;打开新的连接会话时配置参数生效。 示例: 1)在命令行工具ksql下执行如下命令: kingbase=# alter database test set work_mem=‘10MB’; ALTER DATABASE kingbase=# show work_mem; work_mem 9MB (1 row) 2)退出ksql当前连接,重新连接后执行查询语句,显示如下: kingbase=# show work_mem; work_mem10MB (1 row) 6 ALTER ROLE … SET命令 操作方式: ALTER ROLE role SET … = value 生效方式: 重启服务生效;打开新的连接会话时配置参数生效。 示例: 1)在命令行工具ksql下执行如下命令: kingbase=# alter role kingdb set work_mem=‘11MB’; ALTER ROLE kingbase=# show work_mem; work_mem 10MB (1 row) 2)退出ksql当前连接,重新连接后执行查询语句,显示如下: kingbase=# show work_mem; work_mem11MB (1 row) 7 会话级参数设置 操作方式: SET [SESSION|LOCAL] … = value 生效方式: 立即生效。 示例: kingbase=# set work_mem =‘12MB’; SET kingbase=# show work_mem; work_mem12MB (1 row) 8 事务中会话级参数设置 操作方式: 在事务语句中使用会话级参数设置命令。 生效方式: 立即生效。 示例: kingbase=# set work_mem=‘13MB’; SET kingbase=# begin; BEGIN kingbase=# show work_mem; work_mem13MB (1 row) kingbase=# set work_mem=‘14MB’; SET kingbase=# show work_mem; work_mem14MB (1 row) kingbase=# rollback; ROLLBACK kingbase=# show work_mem; work_mem13MB (1 row) 9 函数中会话级参数设置 操作方式: 在函数中使用会话级参数设置语句 生效方式: 参数在函数内有效,函数调用完成后失效 示例: kingbase=# create or replace function kdb_func() returns void as KaTeX parse error: Can't use function '$' in math mode at position 12: kingbase$̲# declare ki… language plsql strict set work_mem=‘15MB’; CREATE FUNCTION kingbase=# select kdb_func(); NOTICE: 15MB kdb_func (1 row) kingbase=# show work_mem; work_mem13MB (1 row) 10 语句中的暗示性设置 操作方式: 在SQL语句中使用hint设置参数 生效方式: 参数在语句内有效,语句结束后失效 示例: kingbase=# /+Set(enable_bitmapscan off)/ explain select id from tb where id > 1; 参数设置总结 从上文的参数优先级别介绍与示例中,我们可以得出KingbaseES的各种优先级的参数设置方式具备如下的特性: 优先级 影响范围 是否操作语句(Y/N) 参数可在线更新(Y/N) 持久化(Y/N) 1 整个系统 N N Y 2 整个系统 Y Y Y 3 整个系统 N N N(服务运行时有效) 4 整个系统 Y N Y 5 数据库 Y N Y 6 角色 Y N Y 7 会话 Y Y N(会话重启后复位) 8 事务 Y Y N 9 函数 Y Y Y(函数定义持久化) 10 语句 Y Y N 从上表与上文的描述,我们可以得出以下结论: 参数影响的范围越小,优先级往往越高。 一些参数配置方式可持久化参数的配置,一些配置方式不可持久化,用户需要按需使用。 仅ALTER SYSTEM SET+sys_reload_conf()组合命令与SET命令可实现参数的在线更新。 一般而言,一旦数据库服务启动,用户多采用可支持在线更新的“操作语句”来设置配置参数。其中的SET属于会话级别语句,修改后参数立即生效,支持在线更新;ALTER SYSTEM SET命令仅仅能够修改配置文件kingbase.auto.conf,它与函数sys_reload_conf()配合可实现参数在线更新。用户在应用ALTER SYSTEM SET与SET命令时,特别是同时配置同一个参数是需要注意几种场景。它们的关系是: 会话级参数设置命令SET仅仅影响自身会话而不影响其它会话,ALTER SYSTEM SET+sys_reload_conf()组合命令影响所有的会话。 先被SET命令设置过的参数,再被ALTER SYSTEM SET+sys_reload_conf()组合命令修改时,不会更改该参数在本会话的设置。 ALTER SYSTEM SET+sys_reload_conf()组合命令修改过的参数,会被优先级高的SET命令覆盖在本会话的设置。 场景一、用户同时开启多个(假设3个)连接会话,用户在其中一个会话中使用ALTER SYSTEM SET+sys_reload_conf()组合命令配置参数param,其它会话未进行该参数的配置,则参数param完成对所有会话的设置。示例如下: 会话A:(参数work_mem由4MB修改为10MB) kingbase=# show work_mem; work_mem4MB (1 row) kingbase=# alter system set work_mem=‘10MB’; ALTER SYSTEM kingbase=# select sys_reload_conf(); sys_reload_conft (1 row) kingbase=# show work_mem; work_mem10MB (1 row) 会话B:(参数work_mem被A会话同步修改为10MB) kingbase=# show work_mem; work_mem10MB (1 row) 会话C:(参数work_mem被A会话同步修改为10MB) kingbase=# show work_mem; work_mem10MB (1 row) 场景二、用户同时开启多个(假设3个)连接会话,用户在其中一个会话中使用ALTER SYSTEM SET+sys_reload_conf()组合命令配置参数param,并在本会话使用了SET命令配置参数param,其它会话未进行该参数的配置,则ALTER SYSTEM SET+sys_reload_conf()组合命令完成对除本会话之外的所有会话的param参数设置,SET命令完成对本会话的param参数设置。示例如下: 会话A:(参数work_mem由4MB修改为10MB,最后再被SET修改为12MB) kingbase=# show work_mem; work_mem4MB (1 row) kingbase=# alter system set work_mem=‘10MB’; ALTER SYSTEM kingbase=# select sys_reload_conf(); sys_reload_conft (1 row) kingbase=# show work_mem; work_mem10MB (1 row) kingbase=# set work_mem =‘12MB’; SET kingbase=# show work_mem; work_mem12MB (1 row) 会话B:(参数work_mem被A会话同步修改为10MB,不受会话A的SET命令影响) kingbase=# show work_mem; work_mem10MB (1 row) 会话C:(参数work_mem被A会话同步修改为10MB,不受会话A的SET命令影响) kingbase=# show work_mem; work_mem10MB (1 row) 场景三、用户同时开启多个(假设3个)连接会话,用户先并在一个会话使用了SET命令配置参数param,然后再在该会话中使用ALTER SYSTEM SET+sys_reload_conf()组合命令配置参数param,其它会话未进行该参数的配置,则ALTER SYSTEM SET+sys_reload_conf()组合命令完成对除本会话之外的所有会话的param参数设置,SET命令完成对本会话的param参数设置。示例如下: 会话A:(参数work_mem使用SET由4MB修改为10MB,最后再被ALTER SYSTEM修改为12MB,由于ALTER SYSTEM优先级低于SET命令所以值仍然为10MB) kingbase=# set work_mem =‘10MB’; SET kingbase=# show work_mem; work_mem10MB (1 row) kingbase=# alter system set work_mem=‘12MB’; ALTER SYSTEM kingbase=# select sys_reload_conf(); sys_reload_conft (1 row) kingbase=# show work_mem; work_mem10MB (1 row) 会话B:(参数work_mem被A会话同步修改为12MB,不受会话A的SET命令影响) kingbase=# show work_mem; work_mem12MB (1 row) 会话C:(参数work_mem被A会话同步修改为12MB,不受会话A的SET命令影响) kingbase=# show work_mem; work_mem12MB (1 row) 场景四、用户同时开启多个(假设3个)连接会话,用户在其中一个会话中使用ALTER SYSTEM SET+sys_reload_conf()组合命令配置参数param,并在另外一个会话使用了SET命令配置参数param,其它会话未进行该参数的配置,则ALTER SYSTEM SET+sys_reload_conf()组合命令完成对除另外会话之外的所有会话的param参数设置,SET命令完成对另外会话的param参数设置。示例如下: 会话A:(参数work_mem被ALTER SYSTEM修改为14MB) kingbase=# show work_mem; work_mem4MB (1 row) kingbase=# alter system set work_mem=‘14MB’; ALTER SYSTEM kingbase=# select sys_reload_conf(); sys_reload_conft (1 row) kingbase=# show work_mem; work_mem14MB (1 row) 会话B:(参数work_mem被A会话同步修改为14MB,使用SET命令后设置为10MB) kingbase=# show work_mem; work_mem14MB (1 row) kingbase=# set work_mem =‘10MB’; SET kingbase=# show work_mem; work_mem10MB (1 row) 会话C:(参数work_mem被A会话同步修改为14MB,不受会话B的SET命令影响) kingbase=# show work_mem; work_mem14MB (1 row) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |