我使用tikvTxn将键值数据直接写入TiKV,并跳过了TiDB。

db, err := driver.Open("tikv://127.0.0.1:2379?disableGC=true")
txn, _:= db.Begin()
txn.set(key, value)
txn.commit(context.Background())
...


我无法通过删除TiDB中的表来清理TiKV中的数据。

如何删除插入TiKV的所有数据?

最佳答案

要删除通过txnkv API插入的数据,您可以:

db, _ := driver.Open("tikv://127.0.0.1:2379?disableGC=false")
txn, _ := db.Begin()
txn.Delete(key)
txn.Commit(context.Background())
...


Txnkv基于MVCC,因此Delete不会回收磁盘空间。而是插入一个特殊版本,指示密钥已被删除。

如果您的集群中有TiDB,并且它启用了GC,则将在GC间隔后自动物理删除密钥。

否则,您需要运行GC作业才能将其从磁盘中删除。

import "github.com/pingcap/tidb/store/tikv/gcworker"

gcworker.RunGCJob(ctx context.Context, s tikv.Storage, safePoint uint64, identifier string, concurrency int)

关于tidb - 如何直接在TiKV中删除数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50832393/

10-12 06:27