#参数配置

# 参数初始化配置

YashanDB的所有系统参数都存在一个默认值,允许在产品安装后不做任何处理也能启动实例。默认值一般基于在个人PC也能运行的最小配置给出,可能并不适用于生产环境,因此建议在安装YashanDB时也进行参数的初始化配置工作。

参数的初始化通过在产品安装过程中配置安装参数完成。

需进行初始化配置的参数范围和值应结合企业的自身业务、资源环境来确定,同时,在调优手册数据库配置调优中所列出的性能相关参数应该重点关注。

若系统中使用了过时参数,启动时会产生运行日志告警但不影响启动,可根据配置参数中具体的参数描述和告警内容,判断该参数是否因改名而过时,并且是否需要将该过时参数调整为对应的新参数。若新参数未配置,则过时参数的配置值将自动转换为新参数值。

示例

// 当配置文件配置了过时参数BROADCAST_GTS_TIME时,run.log打印情况如下:
2024-03-15 17:10:37.606 21615 [WARN] [PARAM] parameter BROADCAST_GTS_TIME is deprecated, it will obsolete in later version

# 参数自适应配置

数据库的参数配置直接影响性能表现,对参数值的初始化和后续调整依赖于专业的DBA,为协助DBA快速决策和减少运维难度,YashanDB提供参数自适应功能,依据环境信息给出针对当前负载的调参配置推荐。

# 基本原理

1.可在数据库NOMOUNT、MOUNT或OPEN状态下运行,区分HEAP/TAC/LSC不同表类型。

2.获取CPU核数、内存总数、空闲内存数等环境信息。

3.结合用户指定的CPU和内存限制,计算数据库可用的资源。

4.依据数据库可用资源计算内存相关参数。

5.测试数据文件和日志文件所在磁盘性能。

6.依据磁盘性能结果计算IO相关参数。

# 操作步骤

1.选择无业务运行的时间,并清理其他进程,避免干扰对资源的计算和测试。

2.运行参数配置推荐程序,该程序存在可输入的参数,请查看开发手册DBMS_PARAM详细了解后再操作。

-- 使用默认参数生成推荐参数,不写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE();

-- 使用TAC表类型,分配80%的内存,100%的CPU,生成推荐参数后,写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(True, 'TAC', 80);

-- 使用默认的HEAP表类型,分配100%的内存,100%的CPU,生成推荐参数后,不写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(NULL, NULL, 100, 100);

-- 使用LSC表类型,分配100%的内存,100%的CPU,指定datafile和redofile的路径,生成推荐参数后,不写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(NULL, 'LSC', NULL, NULL, '/home/yashan/data', '/home/yashan/redo');

3.查看最新的推荐参数信息。

SELECT DBMS_PARAM.SHOW_RECOMMEND() FROM dual;

4.将推荐的参数配置写入yasdb.ini文件,此过程并不会生效参数。

EXEC DBMS_PARAM.APPLY_RECOMMEND();

5.重启数据库,生效参数。

# 修改参数配置

在系统运行过程中,可能会由于应用变化、资源扩充、性能调优等需求,手工调整某个参数的值。此时应该根据参考手册配置参数文档里对该参数的描述,评估调整参数是否对在线业务造成影响,确定执行操作的合适时机。

# 使用SQL命令修改参数

# 命令格式

参考开发手册ALTER SYSTEMALTER SESSION文档说明。

# 参数说明

alter system和alter session分别用于修改系统级别和会话级别的配置参数,而alter session修改方式默认只写到内存,对当前会话生效。

param_name和value分别为配置参数名称和值,其中值需满足系统指定的取值范围,详见参考手册配置参数描述。

scope用于设定对配置参数修改后的生效方式,默认为both。

  • spfile:将参数值写入参数文件,需重启才能生效。
  • memory:将参数值写入内存,立即生效,但重启后失效。
  • both:将参数值同时写入内存和参数文件,立即生效,重启后也生效。

Note

  • 过时参数仍支持修改,并且修改时将在运行日志打印告警,告警内容同参数初始化配置示例内容。

  • 立即生效时,若为因改名而过时的参数且对应的新参数未配置,则过时参数修改后的值将自动转换为新参数值。

  • 重启生效的过时参数在修改后重启数据库时,运行日志也将打印告警,告警内容同上。

# 查看配置参数

修改后通过show命令或查询parameter相关参数视图来查看配置参数是否生效。

Note

过时参数仍支持查询,查询结果与正常参数区别在于查询parameter相关参数视图时过时参数的IS_DEPRECATED字段为TRUE。

show parameter param_name;

示例

-- 修改日期格式参数
-- 1.查看当前参数值
SHOW PARAMETER date_format;
NAME              VALUE        
----------------- --------------
DATE_FORMAT       yyyy-mm-dd   
 
 
-- 2.修改参数值,date_format为需重启生效参数
ALTER SYSTEM SET date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;    
 
-- 3.重启数据库
-- 4.登录后查看参数值
SHOW PARAMETER date_format;
NAME            VALUE                  
--------------- ------------------------
DATE_FORMAT     yyyy-mm-dd hh24:mi:ss

SELECT name,value,default_value,is_deprecated FROM V$PARAMETER WHERE name = 'DATE_FORMAT';

NAME                                                             VALUE                                                            DEFAULT_VALUE                                                    IS_DEPRECATED 
---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------- 
DATE_FORMAT                                                      yyyy-mm-dd hh24:mi:ss                                            yyyy-mm-dd                                                       FALSE   


-- 查看过时参数
SELECT name,value,default_value,is_deprecated FROM V$PARAMETER WHERE IS_DEPRECATED = TRUE;

NAME                                                             VALUE                                                            DEFAULT_VALUE                                                    IS_DEPRECATED 
---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------- 
DIN_RECONNECT_TIME                                               5000                                                             5000                                                             TRUE         
CGROUP_FLAG                                                      0                                                                0                                                                TRUE         
BROADCAST_GTS_TIME                                               16                                                               5                                                                TRUE         

SELECT name,value,default_value,is_deprecated FROM V$PARAMETER WHERE name = 'BROADCAST_GTS_TIME';

NAME                                                             VALUE                                                            DEFAULT_VALUE                                                    IS_DEPRECATED 
---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------- 
BROADCAST_GTS_TIME                                               16                                                               5                                                                TRUE    

Note

  • 无法对只读参数执行ALTER SYSTEM,只读参数只能在安装时进行配置或使用默认值。
  • 通常情况下,建议一直使用SQL命令修改配置参数,修改后的参数值将持久化到yasdb.ini配置文件,不建议直接编辑该配置文件。
  • 分布式部署中,上述命令将修改分布式集群中本地节点的对应配置,依据开发手册ALTER SYSTEM中type和node所描述内容可以实现多节点配置,但仍建议使用YCM图形化界面或者yasboot命令行方式来进行多节点统一的参数配置。