Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode

Микро-бенчмарк RocksDB server

В полноценном смысле то, что я тут хочу написать, конечно, бенчмарком не является. Но вполне способно дать понимание области применения RocksDB.

RocksDB — это довольно крутое хранилище, являющееся (на данный момент) встраиваемым решением. Главной фишкой RocksDB является то, что она рассчитана на использование на flash-накопителях, то есть на SSD-дисках.

Лично я давно ждал появления таких решений. Поскольку память всё ещё дорогая, а жёсткие диски медленные, использование SSD для хранения данных — очень логичный шаг.

Как я уже говорил, RocksDB — встраиваемое решение и не является сервером. Я честно ждал почти год, когда кто-нибудь напишет или хотя бы начнёт писать серверную обёртку над ней. Но то, что появилось за это время, по разным причинам категорически меня не устраивает.

Поэтому я написал собственную серверную обёртку: https://github.com/valmat/RocksServer. В настоящее время она вполне функциональна, протестирована и готова к работе. Но есть ещё моменты, требующие улучшения. Эти моменты никак не связаны с её пригодностью к использованию, поэтому ничто не мешает уже сейчас произвести замеры производительности.

Замеры я осуществлял с помощью идущего в комплекте с сервером драйвера для PHP. Во-первых, мне так было удобнее, а во-вторых, использовать я его в ближайшее время буду именно из PHP.

Итак, табличка.

MultiGet со случайными ключами.

Условия проведения эксперимента:

  • В базе данных 1 000 000 ключей.
  • Выбирается набор случайных ключей в случайном порядке.
  • Кэш не используется. Прямо перед экспериментом я перезагрузил компьютер, чтобы полностью исключить возможность использования файлового кэша.
  • Хранимые значения имеют длину 50 ±5 байт.
Количество ключей в выборке SSD HDD
50 4.7 ms 131.3 ms
300 12.6 ms 2371.4 ms (~2s)
1000 29.5 ms 7918.4 ms (~8s)
10 000 124.6 ms 45229.5 ms (~45s)
100 000 2346.6 ms 51855.8 ms (~56s)

Следует отметить, что после попадания ключей в кэш скорость выборки на HDD возрастает и приближается к скорости выборки на SSD.

Какие выводы можно сделать из таблички? RocksDB действительно очень быстрое хранилище и подходит для использования на SSD-дисках.


P.S. Сама RocksDB обладает очень богатыми возможностями. В настоящий момент я реализовал лишь базовый необходимый мне функционал. В дальнейшем, постепенно, я планирую наращивать функциональные возможности RocksServer.