感谢。我说下之前的规划:
- 比较结果集:采集时记录行数、结果集的 checksum,然后在测试集群比对。问题是本来就很难保证结果一致,所以会产生很多误报。
- 比较性能:采集时记录 SQL 延迟,在测试集群比对。
- 比较执行计划:采集流量后,建两个测试集群,分别对应两个版本,TiProxy 在 SQL 前面加上 explain 去比对两个集群的计划,这样能比较所有 SQL 的所有参数,但是操作链路太长。
对比 STATEMENTS_SUMMARY_HISTORY 确实是个很好的方案,能比较的维度很多,尤其是扫描行数。缺点是比较不全面,例如 COMMIT 语句区分不出是哪个事务的,但问题也不大。