TIKV的client.go客户端调用Delete方法删除一个key ("$uat-zmc-xxxxxx")
func (txn *KVTxn) Delete(k []byte) error {
return txn.us.GetMemBuffer().Delete(k)
}
然后通过scan方法查 prefix 为 “$” 的数据还是可以查到刚刚删除的key。
func scanKeys(prefix []byte, tx *tikv.KVTxn) [][]byte {
it, err := tx.Iter(prefix, nextKey(prefix))
if err != nil {
panic(err)
}
defer it.Close()
var ret [][]byte
for it.Valid() {
ret = append(ret, it.Key())
if err = it.Next(); err != nil {
panic(err)
}
}
return ret
}
delete的时候已经commit了事务:
if !tx.IsReadOnly() {
tx.SetEnable1PC(true)
tx.SetEnableAsyncCommit(true)
err = tx.Commit(context.Background())
}
请问下这种情况是为什么?是只删除了MVCC里面的最新版本?
需要怎么才能完全删除这个key?