背景介绍
2020年6月,商品系统从SAP、中间层等接入的商品数据越来越多且更新频繁,商品数据库主从更新数据量大,约每分钟54万多条更新,约八分钟就会产生大于1G的Binlog文件,在数据库IO能力一定的情况下,发生数据同步延迟,影响写入与读出的及时性,进而影响到商品基础系统的可用性。
如果仅是从翻阅代码的角度去分析,会花费大量人力。抛开系统本身,当商品多个应用都在读写商品库,并在数据库层起到数据汇总和集中反馈的情况下,分析这个点是一个较好的方向。
分析模型
把Binlog解析成Sql 纯文本,解析出来的Sql文本 样例如下:
观察解析出来的文本,判断是否是有效更新,关键在于找到实际更新的是哪些字段。即: WHERE块中 和SET块 中 哪些字段上有值的更新。
通过对比发现:
实际只更新了 第 7 和 8 号 的时间字段,如果没有刷新其他值,只是刷新了时间,估计这条更新语句没什么意义&