【TiDB 高性能比赛队伍打卡】 Week 2020/10/26~2020/11/1 队伍 v587

独自空忆成欢 提交于 2020-11-01 14:26:38

参赛信息

  • 队伍: v587
  • 目标: 优化 ycsb workloade

本周汇报

本周主要工作

  • ycsb 压力测试,调整参数并比对不同场景下的性能区别
  • 学习高性能课程相关的内容 (planner 和 coprocessor 为主),阅读 TiDB 源码博客,熟悉 query 处理流程

压力测试

本周通过脚本压力测试了 TiDB,跑 60 遍指定的 workloade,并用 gpof 分析 CPU 消耗。使用的脚本命令为:

i=60; while [ "$i" -ne "0" ]; do ./go-ycsb run mysql -P ./workloads/workloade -p recordcount=5000000 -p mysql.host=127.0.0.1 -p mysql.port=4000 -p mysql.user=root -p mysql.db=test done && i=$(($i -1 )); done;

火焰图如下:

通过观察火焰图,我们发现,copIteratorWorker 占用了很大一部分时间,反推可以得到:

  • 计算下推给 TiKV 后,等待结果返回时间较长
  • TiDB 在对查询优化过程中,采取了不是最优的计划,导致 worker 消耗时间长

从开发的反馈来看,我们现在的解释和可能的优化方向是比较正确的。在大家的讨论中提到了 workloade 在不同测试场景下的性能可能有区别,所以下来进行了比对测试。

小结

本周主要进行了比较系统的压力测试,希望可以找到优化方向。

遇到的问题

无法很好定位能够触发 planner 得出非优化 plan 的具体场景(数据库大小,测试线程etc),导致无法根据代码层面提出解决方案。

下一步规划

根据目前已经定位的组件 copIteratorWorker,跟踪调试 workloade 的查询语句。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!