某客户报表系统数据库跑批时间过长,超出源主库较多,故对其进行了分析调优,目前状态如下:
1、业务连接的rac的scanip,因为负载均衡将跑批的连接连接到了多个计算节点导致节点间通讯成本较高,故速率缓慢,后经过调整到使用vip,减少了应为负载均衡导致的GC等待,性能得到的显著提升。
2、目前优化后的跑批时间超过源主库慢50%,故需要进行进一步分析和调优。
诊断分析
1、INTELCAS分析
新库Intelcase状态如下图:
原主库:
从原主库和新库的命中率来看,新库的命中率目前为46%左右,而老库在94%左右,有较大的差距,结合现场情况以及分析目前数据库环境由于仅用于跑批,无正常业务运行,导致intelcas未能全面的缓存有效热数据,故命中率相较主库更低,致使整体速率相较主库更低,随着时间的推移命中率正在逐渐提升,预计在介入生产后会有较大的提升,并且加速业务相应时间。
2、数据库AWR分析
从10月15到10月16日的AWR中有以下信息:
1)数据库整体负载分析:
从DBTIME以及Elapsed分析结合56个逻辑cpu发现DBTIME/ELAPSED*cpu≈0.3,故数据库整体负载较低。
从负载信息中可以获知,数据库每秒产生的redo量为33M,物理读占总体的10%左右,故数据库会大量从硬盘读取数据,硬解析较低,整体负载情况良好。
2)等待事件分析:
3)IO延迟分析
从IO延迟中可以看到UNDO表空间数据文件延迟情况较高,在高并发的环境中UNDO文件的使用频率较大,故建议对其进行转移到直接高效存储上。
数据库的主要消耗在IO,其中等待事件log file sync的延迟较高达到57ms(建议控制在10ms以下),log file sync的延迟主要消耗在redo条目落盘,主要为写操作且不存在重复数据,故建议放置在直接高效的存储上。
3)TOP SQL分析
从TOP SQL中可以看到主要消耗资源SQL消耗在一些插入和查询语句,且在业务高峰期还存在数据库自动化任务(如统计信息收集、sql tuning任务)消耗了大量系统资源,建议将tmp相关文件转移到直接高效存储中提高SQL执行效率,并调整数据库自动任务的执行情况。
分析总结
1)随着生产业务介入,缓存足够准确的热数据会提升缓存的命中率,从而较大的提升系统运行效率。
2)由于跑批涉及到数据的大量修改,目前日志落盘和undo表空间的延迟较高,在缓存稳定之前建议将redo文件、undo表空间数据文件以及temp文件放在剩余的闪存上面提高速度。
3)调整数据库自动化任务,关闭sql tuning等任务,修改自动收集任务时间到非业务高峰期。