#rocksdb
#rocksdb
Вопрос:
В Rocksdb есть LRU для кэширования блоков. Но почему он не кэширует пару ключ-значение напрямую, чтобы ускорить чтение одного ключа? Для получения ключа с помощью блочного кэша нужно найти блок (O (1)), а затем, возможно, выполнить двоичный поиск внутри блока, чтобы найти ключ. Но если кэшировать ключи напрямую, можно получить ключ за O (1) раз.
Ответ №1:
Легче справиться с недействительностью блока, чем с недействительностью ключа. По истечении срока действия блока может быть затронуто много совмещенных ключей, поэтому вам нужно удалить и добавить эти новые ключи в кеш.
В то время как при блочном подходе это единственная запись для замены.
Кроме того, имейте в виду тот факт, что rocksdb упорядочен, и многие операции будут вставлять / удалять / обновлять ключи, которые будут совмещены.