4

我使用 tikvTxn 直接将 key-value 数据写入 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 的所有数据?

4

1 回答 1

2

要删除通过 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 间隔后,key 将被物理自动删除。

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

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

gcworker.RunGCJob(ctx context.Context, s tikv.Storage, safePoint uint64, identifier string, concurrency int)
于 2018-07-16T05:18:43.593 回答