【Infra Meetup No.84】如何在三分钟内跑完千万测试 case & 硬核 Paper Reading

谈谈 TiDB 背后的效率工程:如何在三分钟内跑完千万测试 case

殷成文 | PingCAP

殷成文 | PingCAP

殷成文老师首先介绍了我们在保证 TiDB 正确性以及稳定性上做的一些事情,以及目前遇到的效率的问题, 然后逐个分析目前 CI 慢的原因以及分享我们是如何去解决这些问题的,并介绍了在优化过程中遇到一些坑。 

流程上我们结合已有的基础架构选择了 Jenkins with Kubernetes 的方式来解决之前出现的资源调度以及并发上的问题。殷成文老师分享了在使用的过程中遇到的一些坑,以及我们在网络结构上做的调整,提高与 GitHub 交互的速度和稳定性。此外,我们为了减少网络 io 做的两层 cache,减少重复的下载上传操作。最后介绍了我们如何去优化具体 case 以及在优化 TiDB unit test 上用了哪些黑魔法。

Paper Reading

谢海滨 | PingCAP

谢海滨 | PingCAP

此次分享谢海滨老师首先介绍了查询优化的相关背景知识,并简单的分析了估算查询代价不准的几个原因。接下来,该分享介绍了三种在查询误差存在情况下的优化方法:

  • 在执行结束后,我们可以根据查询时得到的真实信息去更新统计信息,以减少之后查询的估算误差。

  • 在执行过程中,可以物化中间结果,并根据真实的信息重新优化执行计划;或者对于某些查询计划,可以直接调整而不会丢失中间结果。

  • 在执行开始前,通过考虑估算结果的概率分布,或者执行计划的对估算误差的敏感度,选择更健壮的执行计划。