要有好的跑批性能,有哪些参数要注意

首页    知识库    常见问题    要有好的跑批性能,有哪些参数要注意

问题现象

YashanDB在实际使用中有不少用于跑批量任务的场景,经常有用户咨询我们要取的好的跑批性能,有哪些参数要注意?

这里列举对性能有影响,特别是对跑批有影响的参数,供大家参考,更多性能调优,可参考官网 数据库性能基础 | YashanDB Doc

 

问题的风险及影响

影响跑批性能

 

问题影响的版本

YashanDB版本:23.2及以上所有版本

 

解决方法及规避方式

存储过程跑批在多个客户中出现过,在多次实践中,得出相关最佳配置,供参考如下。

 

1、空间划分

评估好提前规划好表空间,一次性把文件扩好,避免在跑批过程扩文件。

挂载多个磁盘,REDO和dbfiles划分不同盘(REDO有大量的读写,和dbfiles在不同的盘,可以充分利用IO)

REDO文件个数及大小:10个REDO文件,每个2G(文件足够大,避免日志追尾)

 

2、后台快照管理

关闭快照,或把快照保留较长时间,在跑批完成之后再修改会常规(默认7天)自动清理,避免在跑批的过程,触发了快照清理,影响性能

 

3、统计信息收集

在跑批之前,收集统计信息,如果历史数据不足或其他原因会造成统计信息在跑批的过程中生效,需要对相应的表做统计信息的锁定。

 

4、参数调整

配置项

参数

最佳值

说明/检查调整方法

 

REDO

REDO_BUFFER_PARTS

32(最大值)

REDO_BUFFER的划分个数,不同session的日志写入不同的REDO_BUFFER段以便减少并发冲突

REDO_BUFFER_SIZE

128M(最大值)

 

 

 

checkpoint

CHECKPOINT_INTERVAL

2G

避免跑批期间触发checkpoint,如果跑批数据量过大, 则不可避免会发生checkpoint,可以忽略此配置

CHECKPOINT_TIMEOUT

3600

DBWR_BUFFER_SIZE

32M(最大值)

DBWR_COUNT

16(最大值)

 

 

IO

REDOFILE_IO_MODE

DSYNC

使用异步, DEFAULT有掉电风险

DATAFILE_IO_MODE

DSYNC

使用异步

COMMIT_LOGGING

BATCH

使用批量

COMMIT_WAIT

NOWAIT

事务提交时无需等待日志落盘即返回成功。发生宕机可能导致数据不一致, 跑批的场景可以使用,因为发生异常可以重跑,在线交易类不可使用

 

 

 

 

 

并行

MAX_SESSIONS

4096

 

OPEN_CURSORS

4096

 

MAX_WORKERS

1024

 

MAX_PARALLEL_WORKERS

1024

 

DEGREE_OF_PARALLEL

CPU核数一半

建议不超过CPU核数的一半,否则会导致性能严重劣化

WORK_AREA_POOL_SIZE

客户端发起并行压测线程数*WORK_AREA_STACK_SIZE

实际application pool中不止线程堆栈, 根据实际使用调整加大

WORK_AREA_STACK_SIZE

64M(最大值)

线程堆栈大小

WORK_AREA_HEAP_SIZE

4M(最大值)

会话内执行内存区(堆方式)大小

PQ_POOL_SIZE

128M

指定并行线程间数据传递使用的内存池大小。

 

 

 

 

 

内存

USE_LARGE_PAGES

TRUE

启用大页内存,需要操作系统启动大页内存, 并关闭透明大页, 配置大页内存页数

VM_BUFFER_SIZE

根据业务数据量配置

排序等操作多,可以适当配搭, 通过观察V$VM,查看是否耗尽

DATA_BUFFER_SIZE

根据业务数据量配置

全部数据加载到内存是最快的,配置过大则浪费了, 如业务数据量只有100G, 配置了200G则用不完, 观察awr报告中的free buffer wait事件,如果出现次数多则配置需要调高

SHARE_POOL_SIZE

sql main + application pool + pl sql pool + dc

查看V$global_mpool核查各项内存的消耗情况做调整, 具体参考

SQL_POOL_SIZE

根据实际情况调整百分比

对应sql main pool 在share pool的占比, 缓存了SQL语句及其执行计划, 如果客户使用的sql语句很多, 特别是没绑定变量, 需要加大该池子

CURSOR_POOL_SIZE

根据实际情况调整大小

取决于用户是否大量使用游标

_PL_POOL_MEMORY_PERCENT

根据实际情况调整百分比

pl sql pool在share pool中占比大小

_PROCEDURE_LOCK_TIMEOUT

100

存储过程编译等待超时的时间,单位为秒。

DICTIONARY_CACHE_SIZE

根据实际情况调整百分比

 

LARGE_POOL_SIZE

根据实际情况调整大小

 

浏览量:0