【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】3.1.4 CE
【问题描述】oceanbase底层不支持原地更新,每次更新实际是在memtable中插入一条副本。之前发现如果对oceanbase进行update操作但实际字段并没有改变时,时间戳不会变化。那么这次无效的更新有没有在memtable中生成新的副本?还是说实际生成了新副本,只是在查询中ob优化掉了这条无效更新?
【复现路径】
【附件及日志】
lsm tree架构不是inplace update,如果没有发生实际更新会忽略
我理解这个,我这边想了解的是这个忽略是什么层面上的,是直接不会在memtable里生成新副本,还是实际会生成新副本在后续查询中才给忽略掉的
可以验证一下:找一个有一定数据量的表 (10万左右),然后反复的全表更新(update t1 set c1=c1; 自动提交)。跑过几十次后观察租户的memtable active 内存是否会变大。