查看更新语句的详细执行计划

更新语句无法查看详细的执行计划,这里想了解一下。
遇到问题如下:
在更新某一列值的时候,发现如果对这里列建立索引的话,会较大的影响更新的时间,这里想知道更新的详细执行计划,方便优化,还有就是更新的列在索引中,对于查询时间的影响。

问题 1:更新语句查看执行计划
同样可以使用 explain 和 explain analyze
需要注意的是 explain analyze 会真实的去执行语句,再收集对应的信息。所以 DML 语句会真实生效。
问题 2:online DDL 是否会影响数据写入
需要说明,会有一定的影响,只是在延迟层面的,但并不会有非常大的影响。并可通过调整对应参数减小延迟层面的影响
https://book.tidb.io/session1/chapter7/tidb-ddl-status.html
问题 3:延伸资料学习
以下 2 个资源包含了 执行计划、慢语句等解读,和TiDB 读流程解读与写流程解读
读慢文档:读性能慢-总纲
写慢文档:TiDB 写入慢流程排查系列(一)— 前言

我说错了,我这个是dml语言
这里是表的索引


数据库会执行大量的更新语句,只更新max_image列的值,包含这一列的有两个索引,发现在索引中去掉max_image后速度提升,所以想知道这个更新的内部计划,和索引中更新时间影响的一个理论值。
表的结构

先就现有的情况回复原理问题
TiDB 的 数据更新包括索引更新都是使用的MVCC 版本控制与两阶段提交来保证事物的一致性的

MVCC 在更新时候的表现是 增加一个新的可见层。
两阶段提交及是把事物看作提交前确认和提交两个阶段,如果表上的行越宽 ,索引越多。两阶段提交需要复制和确认的内容越大,时长也会越高
以上理论知识可以详细参考如下文档
https://book.tidb.io/session1/chapter2/tidb-storage.html

至于说的 更新代价和理论值其实并不是一个绝对值。如果之前有建立过 性能基线可以参考官方在推荐配置下的一个 sysbench 测试报告
https://docs.pingcap.com/zh/tidb/stable/benchmark-tidb-using-sysbench#oltp_update_index

如果是需要进行理论的学习建议配合 tidb 性能地图和 写慢文档进行

写慢文档之前恢复已提供

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。