tidb内部update是如何实现的?

mvcc实现主要有两个派:
以oracle,mysql,db2,dm为代表的基于undo实现的undo派;
以pgsql,kingbase,opengauss,tidb为代表的基于行复制的行复制派。
undo派适应性更广泛; 而行复制派在特定场景效率会更高(只是场景普适性稍差),不仅update只要是dml,tidb都会新写行进去,本质上是空间换效率的策略,因此产生了很多垃圾(过期的)数据,如何高效回收垃圾及回收过程避免与应用需求间的冲突是个持续迭代优化过程。

目前有部分数据库提供了两种mvcc的实现方式可供选配,如opengauss,在原本pg系的行复制实现的基础上,增加了类似oracle的undo的新的实现方式。