tidb有高水位这个说法吗

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.1。5

请问一下各位大神每天对表delete操作,会像oracle那样产生高水位吗,如果有,有没什么命令清理高水位?

tidb通过mvcc管理数据,删除的数据不会真的清理空间,相当于产生了高水位,有自动gc的任务,gc过之后删除的数据就不会被扫描到了,相当于降低了水位。但是如果真的要回收空间的话,得等集群compact,才会整合数据文件,释放空间。

2 个赞

收到,非常感谢

DELETE 操作并不会立即释放磁盘空间,而是将数据标记为可删除,等待TiDB的GC(Garbage Collection)进程(默认10分钟,可以通过tikv_gc_life_time参数来修改这个时间)来清理这些不再需要的数据。这与Oracle中的高水位(HWM)概念类似,TiDB中的GC进程会定期运行,清理标记为可删除的数据,从而释放空间

会产生的,只不过是标记删除,gc后会把标记删除的释放,kv会自动发起compact,当然也可以手动alter table compact

可以参照这里看看

1 个赞

应该没有

tidb insert delete update都是追加新kv数据操作,需要compact后释放过来gc的key

可以手动执行compact,https://docs.pingcap.com/zh/tidb/stable/tikv-control

1 个赞

TiDB中的GC进程会定期运行,清理标记为可删除的数据,从而释放空间

没有高水位问题,因为Oracle 有tablespace表空间概念,同时表的类型默认是堆表,没有gc的或者说数据页合并的能力,但是tidb不需要,底层是rocksdb引擎【lsmt结构】,自身就带着compaction合并机制

这个操作其实是对rocksdb引擎做了一次全量compaction,资源消耗比较大&耗时也非常长,操作时候许多观察

定期gc,好像是10分钟吧。只做标记不删除,其实就是高水位

这个跟高水位线不是一回事的

其实差不多,就是垃圾数据没有清理

没有的

这个高水位和Oracle的还不是一个概念