前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【YashanDB知识库】要有好的跑批性能,有哪些参数要注意

【YashanDB知识库】要有好的跑批性能,有哪些参数要注意

作者头像
用户10349277
发布2025-02-25 17:36:28
发布2025-02-25 17:36:28
330
举报
文章被收录于专栏:YashanDB知识库YashanDB知识库

问题现象

YashanDB在实际使用中有不少用于跑批量任务的场景,有哪些参数要注意?

问题的风险及影响

影响跑批性能

问题影响的版本

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

根据实际情况调整大小

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档