【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】5.7
【遇到的问题】如题,单个TiDB连续执行同一条sql多次执行(计划一样)时间差距较大(有时10ms,有时100-200μs),多次执行过程中有几条差距较小。我想做查询计划的调优,但是这样差异很大的执行时间让我难以评估我的调优效果……想知道是因为缓存的原因吗?不知有什么办法可以得到较为稳定的执行时间(多次执行同一条sql时间相差不大)
【复现路径】执行完analyze table后连续多次执行同一条sql
【问题现象及影响】
【附件】
请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。
h5n1
(H5n1)
2
应该是首次执行产生的磁盘读多些,可以看下dashboard里慢sql记录的执行信息
1 个赞
有没有办法让tidb不使用缓存呀,或者每次都走磁盘
试一下 SQL_CACHE
、 SQL_NO_CACHE
是否把请求结果缓存到 TiKV (RocksDB) 的 BlockCache
中。对于一次性的大数据量的查询,比如 count(*)
查询,为了避免冲掉 BlockCache
中用户的热点数据,建议填上 SQL_NO_CACHE
1 个赞
xfworld
(魔幻之翼)
7
最好的办法就是使用缓存~
看下执行计划 explain sql 和 实际执行结果 explain analyze sql 之间的差距,再来做一些调整
1 个赞
查询的完整语句是什么呢?如果输出结果内存可完全容纳按说只有第一次会走磁盘读
zqk_zqk
(Ti D Ber 1 G6m Nmhp)
10
我想问一下,我每次都是走的同一个sql,但是每次的参数不一样,每次都回去kv里面去取数据撒,对吗?不会因为是同一个sql,条件不同(eg:时间条件:第一次是2021-01-01到2021-01-01 23:59:59 第二次是2021-01-02 到2021-01-02 23:59:59,这样每次都是回去kv取数据撒)