TIDB读性能请教

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】4.0.11

【问题描述】近几周同事反应tidb读性能显著下降,我们排查了几处情况,有问题请教下。
首先是disk-performance这个监控,这个监控监察的磁盘整体的读性能吗,我们发现其中一个节点上的bandwidth异常的高,但是和同事求证后,每天读取数据量应该不会有那么大,tidb有没有什么方法可以定位到这快盘哪些表被读取过?或者是做下追踪


第二个问题是观察到tidb节点的部分指标似乎有点高 ,我们的tidb节点是和tikv混合部署的,这一方面对性能有过大影响吗?谢谢大佬帮助


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1.首先不建议 tidb 和 tikv 混合部署,资源上会有相互争用,最好是独立部署;
2.读取性能问题可以参考下这个帖子里的文章进行排查:
https://asktug.com/c/newcomer/trouble-shooting

  1. 我们已经排查完了物理环境,服务器运转正常
  2. 上午我们关闭了缓存和readpool.coprocessor.use-unified-pool 但是没有效果
  3. 我们刚刚在另外一个tidb集群上部署了同样的数据,两个集群的流量现在基本一致,并做了测试进行了对比
    执行同样的语句
    SELECT
    QUALITY_TYPE,
    QUALITY_INDICATOR,
    REGION,
    COUNTRY AS Category,
    sum(NUM_OF_PARTICIPANTS) AS Participants,
    sum(NUM_OF_MINUTES) AS Minutes
    FROM
    Test
    WHERE
    1 = 1
    AND DAY >= date_format(trim(‘2020-12-01’), ‘%Y-%m-%d’)
    AND date_format(trim(‘2021-03-27’), ‘%Y-%m-%d’) >= DAY
    AND HGSSITEID = ‘500073559’
    AND CATEGORY = ‘ALL’
    AND CATEGORY_VALUE = ‘ALL’
    GROUP BY
    QUALITY_TYPE,
    QUALITY_INDICATOR,
    REGION,
    COUNTRY
    ORDER BY
    Participants,
    Minutes DESC;
    在老集群上要比新的集群慢主要体现在Coprocessor Executor Time上 有啥办法可以降低Coprocessor Executor Time吗,谢谢
1 个赞

建议针对系统里主要的慢 SQL 先进行一轮优化,然后再看下效果

1 个赞

看SQL,您是要查询指定日期段的数据,对于日期数据,我们的实践是定义成CHAR(8),可以省却timestamp类型的一堆麻烦,我们应用中定义的timestamp,一般仅仅用作显示用途,不会在这个字段上进行比较操作。
建议您把day>=? and day <=? 改为Between ,Mysql的手册说是这样更好,不知道TiDB是不是也这样。
还有是不是在Order by字段上有没有相应的索引?如果有可能,建议加上Limit限制返回的条数。