【TiDB 使用环境】生产环境
【TiDB 版本】5.4
【集群数据量】80T
【集群节点数】33
【遇到的问题:问题现象及影响】
业务仅使用了tikv集群,直接向tikv写入数据,无tidb-server节点。但在清理数据库时,磁盘没有降低。
通过什么方式写入,事务 KV 还是 Raw KV?
如果是事务 KV,需要部署 TiDB 来触发 GC
或者自己跑一个 GC 的程序。参考 https://github.com/tikv/client-go/tree/master/examples/gcworker
1 个赞
TiKV 使用的是基于 LSM Tree(Log-Structured Merge-Tree)结构的 RocksDB 引擎,删除操作本质上是一个“标记删除”(Delete Marker / Tombstone)。
临时部署一个 TiDB Server 来推进 GC
1 个赞
tidb server也只是定期发起gc ,gc是标记事务数据基于 tikc_gc_safe_point 时间节点之前的数据可以删除,标记为删除,tombstone 但是数据并为实际开始删除释放tikv磁盘空间吧,
tikv 使用RocksDB, 实际释放磁盘大小是不是取决于 RocksDB的 底层文件 Compaction合并操作吧?
不知道我的理解对不对
理解的对,释放掉没用的kv需要Compaction,这个Compaction可以手工调用 ,非常吃资源