При подготовке к обновлению Sei Giga Sei Labs оценили производительность узлов, используя различные бэкенды для хранения состояния. При сравнении RocksDB и PebbleDB с MVCC для индексируемых исторических запросов RocksDB смог сократить задержку оператора узла на 10–40 раз.
Мы измерили задержку traceBlock на нескольких миллионах блоков — это RPC-запрос, который выполняет обширную итерацию по парам ключ/значение в хранилище состояния. С увеличением истории узла время итерации PebbleDB значительно возрастает, в то время как RocksDB поддерживает гораздо более ровную кривую задержки.
Основная причина этой разницы заключается в дизайне бэкенда. RocksDB поддерживает нативные пользовательские временные метки для MVCC и эффективные семейства колонок. PebbleDB, напротив, не имеет нативного версионирования, что требует добавления суффиксов к ключам и ручной итерации по нескольким версиям.
Это приводит к значительно лучшей эффективности итерации в RocksDB — особенно для узлов с большим историческим состоянием. По мере увеличения хранимой истории разрыв в производительности между PebbleDB и RocksDB становится более заметным.
Хотя RocksDB вводит небольшие компромиссы в сборке, улучшения производительности делают его отличным вариантом для архивных и RPC-узлов, обрабатывающих большие состояния или длинную историю. Мы наблюдали постоянные улучшения в задержке трассировки и скорости итерации в различных настройках.
106,77K