#参数配置
# 参数初始化配置
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 SYSTEM和ALTER 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命令行方式来进行多节点统一的参数配置。