我使用 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 的所有数据?
要删除通过 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)