关于TiKV行存储实现列的疑问

抱歉,我之前的描述有问题。其实是要问update的sql执行流程

TiDB 源码阅读系列文章(十)Chunk 和执行框架简介 | PingCAP 大致逻辑应该没啥大变化。。。吧

update过程较为复杂,如果只针对最普通的update a set name=“val” where id=xx来说(假设name不是主键,假设id=xx的name原来值并不是“val”,假设不考虑binlog,二级索引的维护,不考虑update的是多张表等等),那么大体查找和修改流程如下:
1、先通过SQL查找到符合条件的记录(类似于select * from a where id=xx,把所有字段都拿到tidb层)和该行的handle(可以理解为rowid)。
2、针对每一行进行修改(重新组织),将set 里面的字段和值替换当前查找到的行,组织成新行。
3、调用tikv的Set接口写入key=handle,value=新组织行数据。

1 个赞

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