Всякий раз, когда я помещаю значение в rocksdb для того же ключа, значение обновляется, и количество также увеличивается - PullRequest
0 голосов
/ 29 марта 2020

Всякий раз, когда я помещаю значение в rocksdb для того же ключа. Значение обновляется. Но счет следующим методом db.getLongProperty (columnFamily, "roadsdb.estimate-num-keys") увеличивается. Почему у меня такое странное поведение?

1 Ответ

1 голос
/ 04 мая 2020

Это ожидаемое поведение в rocksdb. Обратите внимание, что это свойство estimate-num-keys, что означает, что оно даст вам только приблизительную (не точную) оценку количества ключей, присутствующих в БД. Возможно, вам придется запустить full compaction для семейства столбцов, чтобы получить точное количество имеющихся ключей.

Цитирование из WIKI,

Q: Почему GetIntProperty может возвращать только приблизительное количество ключей в базе данных RocksDB?

A: Получение точного числа Ключи в любых базах данных LSM, таких как RocksDB, представляют собой сложную проблему, так как они имеют дублирующиеся ключи и записи удаления (например, надгробные камни), которые потребуют полного уплотнения для получения точного количества ключей. Кроме того, если база данных RocksDB содержит операторы слияния, это также сделает приблизительное число ключей менее точным.

Вы также можете проверить параметрcksdb - inplace_update_support, который обновит ключ, если он существует в самой memtable вместо того, чтобы писать ее снова.

...