Как я могу удалить данные в TiKV напрямую? - PullRequest
0 голосов
/ 13 июня 2018

Я использовал 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())
...

Я не могу очистить данные в TiKV, отбросив таблицы в TiDB.

Как я могу удалить все данные, которые я вставил в TiKV?

1 Ответ

0 голосов
/ 16 июля 2018

Чтобы удалить данные, вставленные через API txnkv, вы можете:

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)
...