如何直接删除TiKV中的数据?

时间:2018-06-13 08:21:39

标签: tidb tikv

我使用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的所有数据?

1 个答案:

答案 0 :(得分:1)

要删除通过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)