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

简介: 本文来自YashanDB官网,主要探讨了在使用YashanDB进行批量任务时如何优化性能。文章列举了影响跑批性能的关键参数,并提供了最佳配置建议,涵盖空间划分、快照管理、统计信息收集及参数调整等方面。适用版本为YashanDB 23.2及以上。通过合理配置如REDO参数、IO模式、并行度和内存设置等,可显著提升批量任务的执行效率。更多性能调优内容可参考官方文档。

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7610114.html?templateId=1718516

问题现象

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

根据实际情况调整大小

相关文章
|
24天前
|
SQL 存储 关系型数据库
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
|
7天前
|
SQL 测试技术 数据库
【YashanDB知识库】IMP跨网络导入慢问题
问题现象:290M数据,本地导入2分钟,跨机导入耗时显著增加(最高30分钟)。 原因分析:`imp`逐条SQL通过网络传输至yashanDB执行,交互频繁导致性能下降。 影响版本:客户测试环境22.2.8.3。 解决方法:将导入文件上传至与yashanDB同机后使用`imp`,减少网络延迟。 经验总结:优化`imp`工具,支持直接上传文件至服务器端执行,降低网络依赖。
|
7天前
|
监控 数据库
【YashanDB 知识库】ycm 托管数据库时报错 OM host ip:127.0.0.1 is not support join to YCM
在托管数据库时,若 OM 的 IP 被设置为 127.0.0.1,将导致无法托管至 YCM,并使数据库失去监控。此问题源于安装时修改了 OM 的监听 IP。解决方法包括:将 OM 的 IP 修改为本机实际 IP 或 0.0.0.0,同时更新 env 文件及 yasom 后台数据库中的相关配置。经验总结指出,应避免非必要的后台 IP 修改,且数据库安装需遵循规范,不使用仅限本机访问的 IP(如 127.0.0.1)。
|
7天前
|
监控 网络安全 数据库
YashanDB 知识库:ycm 纳管主机安装 YCM-AGENT 时报错 “任务提交失败,无法连接主机”
在安装 ycm-agent 纳管主机时,可能出现因端口未开放导致的报错问题。此问题会阻止 YCM 对主机和数据库的监控功能,影响版本为 `yashandb-cloud-manager-23.2.1.100-linux-aarch64.tar`。原因是目标主机(如 10.149.223.121)未开放 9070 或 9071 端口。解决方法包括关闭防火墙、添加白名单或开放指定端口,需与管理员确认操作。处理过程涉及网络检查、端口测试等步骤。端口问题解决后,若再次安装报唯一键错误,需先移除失败主机再重试。
|
7天前
|
监控 Java Shell
【YashanDB 知识库】ycm 托管数据库时,数据库非 OM 安装无法托管
本文主要介绍了因数据库未按规范使用 yasboot 安装导致的问题及解决方法。问题表现为无 yasom 和 yasagent 进程,且目录结构缺失,致使 ycm 无法托管与监控。分析发现可能是数据库版本旧或安装不规范引起。解决方法为先生成配置文件,安装 yasom 和 yasagent,再生成并修改托管配置模板,最终通过命令完成托管至 yasom 和 ycm。总结强调了按规范安装数据库的重要性以避免类似问题。
|
24天前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】MySQL field 函数的改写方法
|
24天前
|
数据库
【YashanDB知识库】服务器重启后启动yasom和yasagent进程时有告警
【YashanDB知识库】服务器重启后启动yasom和yasagent进程时有告警
|
24天前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
26天前
|
数据库
【YashanDB知识库】服务器重启后启动yasom和yasagent进程时有告警
本文介绍了YashanDB在特定场景下的问题分析与解决方法。当使用yasboot重启数据库后,yasom和yasagent进程虽启动成功但出现告警,原因是缺少libnsl.so.1库文件或环境变量配置错误。解决步骤包括:检查系统中是否存在该库文件,若不存在则根据操作系统类型安装(有外网时通过yum或apt,无外网时创建符号链接),若存在则调整环境变量配置,并重新启动相关进程验证问题是否解决。
|
26天前
|
存储 关系型数据库 MySQL
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
本文介绍了MySQL中`CONTINUE HANDLER FOR NOT FOUND`的用法及其在YashanDB中的改写方法。通过一个示例存储过程,展示了如何使用游标和异常处理机制来应对“未找到数据”的情况。在MySQL中,`CONTINUE HANDLER`用于捕获此类异常;而在YashanDB中,则需改用游标的`%NOTFOUND`属性和`NO_DATA_FOUND`异常处理。文章对比了两者的执行效果,帮助用户顺利完成从MySQL到YashanDB的业务迁移。

热门文章

最新文章