CockroachDB: почему они отказались от RocksDB — ЭП5
Sorted Runs
0:00 / 0:00
CockroachDB: почему они отказались от RocksDB — ЭП5
737 просмотров · 5 дн. назад
Sorted Runs
78 подписчиков
737 просмотров · 5 дн. назад
Февраль 2016 года. Бенчмарк CockroachDB записывает около 1944 строк в секунду. Через минуту скорость снижается до 105. Профайлер почти ничего не показывает: время находится внутри RocksDB, за пределами области действия cgo.
Обычно говорят, что RocksDB переписали на Go, потому что Go лучше. Обе реальные причины уже описаны в этом баге: в LSM удаление — это запись, а данные покидают базу данных только во время компакции; и каждый вызов из Go в C++ обходится дорого. Четыре года спустя CockroachDB выпустила собственный движок, Pebble.
Полная статья с диаграммами и всеми источниками:
https://blog.renatocron.com/why-cockr...
Исправления (подробности в начале статьи):
• Пороговое значение Compactor составляет 256 МиБ или 10% от используемых логических байтов (или 10% доступного пространства), а не 10% диска.
• Функция "удаления диапазонов" была включена в 2022 году только в ветке разработки. В версии 22.2 она была удалена. Начиная с версии 23.1, она включена постоянно.
• В сообщении 2019 года обходные пути cgo названы управляемыми, а не стоимостью копирования значений.
• 200 нс на вызов — это показатель 2016 года. При 52 нс, показанных ранее, миллион вызовов стоит около 0,05 с, а не 0,2 с.
ВРЕМЕННЫЕ МЕТКИ -
0:00 1944 строки в секунду, затем 105
0:15 Профайлер ничего не обнаружил
0:52 Удаление — это запись
1:26 Надгробия стоят операций чтения
1:52 Каждая запись — это версия
2:28 Ошибка 2016 года, шаг за шагом
3:21 Удаление целого диапазона
3:52 Выборщик, который не смотрел, и Компактор
4:36 Чтение MVCC — это цикл
4:59 Мост cgo: плата в 100 раз больше
5:33 2018: перенести цикл в C++
6:22 Дом горит
6:37 Начинаем заново: Pebble
6:54 Обходной путь GIMP
7:45 Компактирование только для удаления
8:33 Включение по умолчанию, затем по умолчанию
8:55 Ключи диапазона: удалить, сохранить историю
9:53 Кто управляет Pebble, а кто нет до
10:47 Генеалогическое древо
Плейлист серии: • LSM tree
Предыдущая серия: EP4 Как RocksDB стала SQLite среди систем хранения данных
#lsmtree #cockroachdb #pebble #rocksdb #database