1、数据库参数优化

1.1 数据库参数获取

通过v$dm_ini获取dm.ini参数信息

通过dm性能监视工具获取

1.2 资源类参数配置建议

参数

调整范围说明

BUFFER

内存足够的情况下,可根据数据文件的大小调整,内存不充足的情况下,可调整为可用物理内存的 60%~80%

BUFFER_POOLS

高并发 OLTP 场景下,可根据客户端的并发连接数或者中间件连接池的大小进行调整

MAX_BUFFER

系统最大缓冲区大小,以兆为单位。通常设置为与 BUFFER 相同

RECYCLE

当排序缓冲区及哈希缓冲区不足的情况下,系统会优先使用 RECYCLE 缓冲区,RECYCLE 缓冲区不够,再刷临时表空间。在 OLAP 场景下,如果存在大表之间的关联查询,可以将值调大,尽可能不要使用临时表空间

SORT_BUF_SIZE

排序缓存区最大值。可以适当调大,如果在动态性能视图 v​SORT_HIST0RY 和 vMTAB_USED_HISTORY 中监控到外排序,则适当调大建索引时可调大。通常不超过 20 MB

DICT_BUF_SIZE

字典缓冲区大小。如果数据库中对象数量较多,或者存在大量分区表,可适当调大

HJ_BUF_GL0BAL_SIZE

HASH 连接操作符的数据总缓存大小 (>= HJ_BUF_SIZE)。内存足够的情况下,可以适当调大。实际使用大小,由包含 HASH JOIN 操作符的 SQL 并发数决定

HJ_BUF_SIZE

单个 HASH 连接操作符的数据总缓存大小。在 OLTP 环境中,建议采用默认值。在 OLAP 环境下,可以根据参与 HASH JOIN 的数据量调大

HJ_BLK_SIZE

默认 1 即可,如果 HJ_BUE_SIZE 很大也可适当调大

HAGR_BUF_GLOBAL_SIZE

HAGR、DIST、集合操作、SPL2、NTTS2 以及 HTAB 操作符的数据总缓存大小 (>=HAGR_BUF_SIZE),系统级参数,以兆为单位

HAGR_BUF_SIZE

单个 HAGR、DIST、集合操作、SPL2、NTTS2 以及 HTAB 操作符的数据总缓存大小。监控 V$SORT_HISTORY,判断是否需要调整

OLAP_FLAG

用联机分析处理,0:不启用;1:启用;2:不启用,同时倾向于使用索引范围扫描。该参数会影响到计划的生成。在 OLTP 环境下,通常保持默认值 2

MAX_PARALLEL_DEGREE

设置最大并行任务个数。建议设置为 6~8

PARALLEL_POLICY

用来设置并行策略。0 表示不支持并行;1 表示自动配置并行工作线程个数(与物理 CPU 核数相同);2 表示手动设置并行工作线程数。建议设置为 2 手动并行

IO_THR_GROUPS

表示 IO 线程组个数。建议值>=8,提升 IO 效率

HIO_THR_GROUPS

HUGE 缓冲区 I0 线程组数目。使用 HUGE 表的业务场景,建议值>=8,提升 HUGE 表的 I0 效率

2、统计信息

统计信息主要是描述数据库中表和索引的大小数以及数据分布状况等的一类信息。比如:表的行数、块数、平均每行的大小、索引的高度、叶子节点数以及索引字段的行数等。

统计信息对于 CBO(基于代价的优化器)生成执行计划具有直接影响。例如在嵌套循环中需要选择小表作为驱动表,两个关联表哪个是小表完全取决于统计信息中记录的数据量信息。此外,访问一个表是否要走索引,关联查询能否采用其它关联方式等都是 CBO 基于统计信息确定的。因此,统计信息的准确是生成最优执行计划的必要前提。

2.1 统计信息收集方法

--收集指定用户下所有表所有列的统计信息:

DBMS_STATS.GATHER_SCHEMA_STATS('username',100,TRUE,'FOR ALL COLUMNS SIZE AUTO',4);

--收集指定用户下所有索引的统计信息:

DBMS_STATS.GATHER_SCHEMA_STATS('usename',1.0,TRUE,'FOR ALL INDEXED SIZE AUTO');

--或 收集单个索引统计信息:

DBMS_STATS.GATHER_INDEX_STATS('username','IDX_T2_X');

--收集指定用户下某表统计信息:

DBMS_STATS.GATHER_TABLE_STATS('username','table_name',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

--收集某表某列的统计信息:

STAT 100 ON table_name(column_name);

STAT <统计信息采样率百分比> [SIZE <直方图桶数>] ON <统计对象> [GLOBAL]

<统计对象>::=

[<模式名>.] <表名> (<列名>{,<列名>}) |

INDEX [<模式名>.]<索引名>

STAT ON [<模式名>.]<表名> [GLOBAL];

GLOBAL 用于MPP环境下各节点数据收集后统一生成统计信息.

2.2 自动收集统计信息

--打开表数据量监控开关,参数值为 1 时监控所有表,2 时仅监控配置表

SP_SET_PARA_VALUE(1,'AUTO_STAT_OBJ',2);

--设置 SYSDBA.T 表数据变化率超过 15% 时触发自动更新统计信息

DBMS_STATS.SET_TABLE_PREFS('SYSDBA','T','STALE_PERCENT',15);

--配置自动收集统计信息触发时机

SP_CREATE_AUTO_STAT_TRIGGER(1, 1, 1, 1,'14:36', '2020/3/31',60,1);

--函数各参数介绍

SP_CREATE_AUTO_STAT_TRIGGER(

    TYPE                    INT,    --间隔类型,默认为天

    FREQ_INTERVAL           INT,    --间隔频率,默认 1

    FREQ_SUB_INTERVAL       INT,    --间隔频率,与 FREQ_INTERVAL 配合使用

    FREQ_MINUTE_INTERVAL    INT,    --间隔分钟,默认为 1440

    STARTTIME               VARCHAR(128), --开始时间,默认为 22:00

    DURING_START_DATE       VARCHAR(128), --重复执行的起始时间,默认 1900/1/1

    MAX_RUN_DURATION        INT,    --允许的最长执行时间(秒),默认不限制

    ENABLE                  INT     --0 关闭,1 启用  --默认为 1

);

3、聚集索引和非聚集索引

聚集索引

定义:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。

非聚集索引

定义:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐