1 概述
1.1什么是性能
性能是一种指标,表明软件系统的数据处理效率与及时性,一般及时性用响应时间或吞吐量来衡量。
响应时间是对请求做出响应所需要的时间。对于单个事务可以是事务完成所需要的时间;对于用户任务,则是端对端的时间。系统的吞吐量是指特定的时间内能够处理的请求的数量。响应性是系统实现其响应时间或吞吐量目标的能力。可拓展性则是系统在增加其软件功能的情况下,继续实现其响应时间或吞吐量目标端能力。
1.2 比对服务的性能指标
全量比对的响应时间:即完成一次指定的两张表的全量数据比对的时间。
同步修复的的响应时间:即完成一次指定的两张表的数据修复的时间。
2 数据比对原理概述
数据比对任务执行时主要包括四个环节:查询排序、读取转换、数据比对、结果入库,流程如下:
比对任务
源端
查询排序 读取转换 数据比对 结果入库 元数据库
目标端
查询排序:连接源端目标端数据库,执行查询语句,查询语句中包含排序指令。
读取转换:将查询排序的结果集中的数据读取出来,并转换为统一格式的对象。
比对数据:对源目标端数据库中读取到的数据逐行进行每个字段的详细比对。
结果入库:将比对结果信息写入到元数据库中。
其中,查询排序是一个阻塞操作,该环节会连接数据库并执行查询语句,只有查询成功,才会进入到下一步的读取转换环节;
读取转换环节和数据比对环节是异步的,通过一个队列传递数据,读取转换环节是数据生产者,数据比对环节是数据消费者,关系是一写一读;
数据比对环节和结果写入环节也是异步的,通过一个队列传递数据,数据比对环节是生产者,结果写入是消费者,关系是一写多读。
数据写入是多个线程向元数据库写入结果,每个线程中是批量写数据。
3 性能诊断
3.1性能诊断方法
3.1.1 日志分析
比对任务执行的各环节都增加了日志打印及耗时统计,通过分析日志可以获取比对任务的进展、比对任务执行各环节的耗时情况。通过日志分析比对各环节的耗时情况,可以定位出性能瓶颈,进而实施优化措施。
日志路径:compare服务安装目录中的log文件夹中;
日志分类:
比对任务开始 | Compare schedule: *** , task begins running... job *** begins running... |
该表比对开始 | *** -> *** is comparing... |
该表查询排序耗时 | TABLE: *** , Execute master query spend time is 4ms |
该表读取转换耗时 | TABLE: *** , Read data spend time is 0ms |
该表数据比对耗时 | TABLE: *** -> ***, Execute compare spend time is: 13ms |
该表完成比对总耗时 | ***->*** has completed, total: 2414ms |
比对任务结束,总耗时 | job *** has completed. total: 6114ms
|
比对任务执行失败 | The job compare failed |
日志样例: