1.【YashanDB知识库】如何设置yasql客户端的字符编码2.【YashanDB知识库】exp导出csv报错YAS-00218 string conversion failed3.【YashanDB知识库】YAS-00218 string conversion failed.4.【YashanDB知识库】虚拟机重启后启动YMP报错5.【YashanDB知识库】OM仲裁节点故障后手工切换方案和yasom仲裁重新部署后重新纳管数据库集群方案6.【YashanDB知识库】oracle与yashanDB的jdbc返回常量列"0.00"的精度和刻度不一致7.【YashanDB知识库】UNDO表空间膨胀怎么处理8.【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL9.【YashanDB知识库】同样建表语句,大整型数字在Oracle插入成功,在YashanDB插入失败10.【YashanDB知识库】要有好的跑批性能,有哪些参数要注意
11.【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题12.【YashanDB知识库】kettle同步PG至崖山提示no encryption pg_hba.conf记录13.【YashanDB知识库】kettle同步大表提示java内存溢出14.【YashanDB知识库】查看表空间是否加密15.【YashanDB知识库】误配置SYSTEM级别的STATISTICS_LEVEL参数为ALL导致数据库性能下降16.【YashanDB知识库】用yasldr配置Bulkload模式作单线程迁移300G的业务数据到分布式数据库,迁移任务频繁出错17.【YashanDB知识库】YCP单机部署离线升级-rpc升级方式详细步骤18.【YashanDB知识库】YCP高可用部署离线升级-rpc升级详细步骤19.【YashanDB知识库】如何处理yasql输入交互模式下单行字符总量超过限制4000字节20.【YashanDB知识库】IMP跨网络导入慢问题21.【YashanDB知识库】insert语句有编码不识别字,执行卡住问题22.【YashanDB知识库】服务器重启后Yashandb无法启动23.【YashanDB知识库】如何处理no free block in dictionary cache24.【YashanDB知识库】in大量参数时查询性能慢25.【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写26.【YashanDB知识库】update (子查询) set ORG_ID_STAN -ID 改写27.【YashanDB知识库】XMLAGG方法的兼容28.【YashanDB知识库】YMP迁移过程中报错YAS-02143或YAS-0219329.【YashanDB知识库】复合索引下in大量参数查询性能慢30.【YashanDB知识库】jdbc查询st_geometry类型的数据时抛出YAS-00101 cannot allocate 0 bytes for anlHeapMalloc异常31.【YashanDB知识库】JDBC驱动的date类型字段结果集调用getString方法只返回日期,不返回时分秒32.【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页33.【YashanDB知识库】ycm-YashanDB列表有数据库显示故障排除步骤34.【YashanDB知识库】单机部署报错:prohibited operation, please check if the IP and username are correct35.【YashanDB知识库】启动数据库时报错:YAS-02059 control file version 0.2.64 is incompatible with YashanDB version 0.2.6536.【YashanDB知识库】如何处理报错"UDT column batch insert" has not been implemented yet37.【YashanDB知识库】如何解决共享集群部署遇到报错:YAS-05721 invalid input parameter, reason: node name invalid.38.【YashanDB知识库】如何排查YMP报错:”OCI版本为空或OCI的架构和本地系统的架构不符“39.【YashanDB知识库】如何限制用户session连接数40.【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常41.【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading42.【YashanDB知识库】通过触发器复制varchar(4000 char)列的数据导致乱码43.【YashanDB知识库】由于druid中间件配置导致的YAS-04003 maximum number of open cursors is 100044.【YashanDB知识库】exp 导出数据库时,报错YAS-0040245.【YashanDB知识库】YAS-00004 feature "implict table" has not been implemented yet46.【YashanDB知识库】YAS-04003 maximum number of open cursors is xxx47.【YashanDB知识库】YAS-04209 unexpected word ;48.【YashanDB知识库】yasboot集群状态命令登录失败问题49.【YashanDB知识库】YAS-00004 feature "create user" has not been implemented yet50.【YashanDB知识库】yasql / as sysdba无法登录51.【YashanDB知识库】启动yasom时报错:sqlite connection error52.【YashanDB知识库】使用vmware虚拟机安装的YashanDB,本机无法访问53.【YashanDB知识库】安装过程报错: unable to authenticate, attempted methods [none password], no supported methods remain54.【YashanDB知识库】密码带特殊符号登录报错YAS-02143 invalid username/password, login denied55.【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据56.【YashanDB知识库】如何在备机节点上做备份和恢复57.【YashanDB知识库】收集统计信息时报错YAS-00507 date/timestamp value overflow58.【YashanDB知识库】druid连接池查询空间数据报错read time out59.【YashanDB知识库】hive初始化崖山报错YAS-0420960.【YashanDB知识库】imp导入数据库时,报错YAS-0802361.【YashanDB知识库】listagg拼接结果发生溢出62.【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断63.【YashanDB知识库】sys登录提示账户被锁,怎么处理?64.【YashanDB知识库】YAS-00402 failed to connect socket, errno 111, error message "Connection refused"65.【YashanDB知识库】YAS-02287 audit policy cannot be dropped as it is currently enabled66.【YashanDB知识库】YAS-02507 base incremental backup set does not exist67.【YashanDB知识库】YAS-02547 there is a gap in the restored archived logs on instance 1, reason: start of restored archive 35 is greater than database last archive 2168.【YashanDB知识库】YAS-02605 the current instance is not master role69.【YashanDB知识库】YAS-04379 invalid alteration of datatype70.【YashanDB知识库】YAS-05534 unsupport operation: Create sibling files to diskgroups71.【YashanDB知识库】YDC连接数据库报错yasdb return code is zero72.【YashanDB知识库】YMP迁移达梦时,报错:查询出现异常73.【YashanDB知识库】查询空间数据提示This socket has been closed.74.【YashanDB知识库】数据库用户所拥有的权限查询75.【YashanDB知识库】JDBC查询时抛出YAS-02094 current session has been killed or canceled异常76.【YashanDB知识库】YashanDB JDBC驱动查询时抛出io fail:Read timed out异常77.【YashanDB知识库】YCM上CPU负载超过实际核数是怎么回事78.【YashanDB知识库】使用Reverse索引的解决自增序列做索引,插入性能大幅提升79.【YashanDB知识库】YMP从达梦迁移到崖山,报错:不能识别文件路径,没找到csv文件80.【YashanDB知识库】YMP在迁移过程中,遇到报错:failed to open file /qianyi/ymp/ymp_23.3, errno 2, error message "No such file or directory".81.【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错82.【YashanDB知识库】进行load data的时候报找不到动态库liblz4.so83.【YashanDB知识库】如何解决删除分区后索引失效问题84.【YashanDB知识库】如何输入小写表名的函数参数85.【YashanDB知识库】审计表UNIFIED_AUDIT_TRAIL出现YAS-00220 utf8 sequence is wrong86.【YashanDB知识库】kettle做增量同步,出现报错:Unrecognized VM option 'MaxPermSize-256m'87.【YashanDB知识库】YashanDB run.log中有slow log queue is full信息88.【YashanDB知识库】YCM托管YashanDB报错 /home/yashan/.yasboot/.env is not existed89.【YashanDB知识库】使用yasboot查看YashanDB status为unconnected,但是YashanDB运行正常90.【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误91.【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空92.【YashanDB知识库】崖山BIT类型对MYSQL兼容问题93.【YashanDB知识库】YDC无法通过conn切换用户94.【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致95.【YashanDB知识库】并发update报错YAS-02208 lock conflict in consistent write96.【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string97.【YashanDB知识库】druid连接池做断网测试,无法自动重新连接98.【YashanDB知识库】Hive 命令工具insert崖山数据库报错99.【YashanDB知识库】load data一次导入多个文件的数据时报错100.【YashanDB知识库】YAS-02143 invalid username/password, login denied
本文内容来自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 | 根据实际情况调整大小 | |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签