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

本文内容来自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

根据实际情况调整大小

安装 YashanDB 数据库涉及多个步骤,包括环境准备、软件包获取、配置调整以及初始化数据库实例等关键操作。以下是详细的安装指南: ### 环境准备 在开始安装之前,需要确保操作系统环境满足 YashanDB 的最低要求。通常支持的操作系统包括主流的 Linux 发行版(如 CentOS、Red Hat、Ubuntu)和 Windows Server。硬件方面,建议至少配备 4GB 内存、100GB 可用磁盘空间和双核 CPU 以上配置。 系统依赖库需要提前安装,例如在 Linux 环境下需安装 `libaio`、`numactl`、`gcc` 等常用库文件。此外,还需配置系统参数,如打开文件数限制、内核参数优化等,以提升数据库性能[^4]。 ### 获取安装包 从 YashanDB 官方网站或授权渠道下载适用于目标平台的安装包。安装包通常以 `.tar.gz` 或 `.zip` 格式提供,包含数据库服务器、客户端工具及文档资料。 ### 解压与安装 #### Linux 系统安装步骤: ```bash # 解压安装包 tar -zxvf yashandb-<version>-linux-x86_64.tar.gz -C /opt/ # 进入安装目录 cd /opt/yashandb-<version>/ # 执行安装脚本 ./install.sh ``` 安装脚本会引导用户完成路径选择、用户组配置、服务注册等操作。默认情况下,YashanDB 会安装在 `/opt/yashandb/` 目录下,并创建专用用户 `yashandb` 用于运行数据库服务[^4]。 ### 初始化数据库实例 安装完成后,需要使用 `initdb` 工具初始化数据库实例: ```bash # 切换至 yashandb 用户 su - yashandb # 初始化数据库 initdb -D /data/yashandb/data ``` 其中 `-D` 参数指定数据存储目录,需确保该目录具备足够的磁盘空间及正确的权限设置。 ### 启动与连接数据库 初始化完成后,启动 YashanDB 服务: ```bash # 启动数据库 pg_ctl -D /data/yashandb/data -l /data/yashandb/logfile start ``` 随后可使用 `ysql` 命令行工具连接数据库: ```bash ysql -U yashandb -d postgres ``` ### 配置与优化 安装完成后,建议根据实际业务需求调整数据库配置文件 `postgresql.conf` 和 `pg_hba.conf`,包括内存分配、并发连接数限制、访问控制规则等。这些配置直接影响数据库性能和安全性[^2]。 ### 验证安装 执行以下 SQL 验证数据库是否正常运行: ```sql SELECT version(); ``` 若返回版本信息,则表示安装成功。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值