TGViewer
Женя Янченко Женя Янченко @jane_yanchenko · 5.51K subscribers
Post #39 1.59K
Сравнение B- и LSM-деревьев

LSM-деревья


➕ Зачастую быстрее при записи
➕ Способны обеспечить бóльшую пропускную способность, поскольку они последовательно записывают компактные файлы SS-таблиц вместо перезаписи нескольких страниц дерева (особенно существенно для HDD, на которых последовательные операции записи
работают намного быстрее, чем произвольные)
➕ Лучше сжимаются, ниже избыточность, а следовательно занимают меньше места на диске

➖ Зачастую медленнее при чтении, потому что приходится просматривать несколько различных структур данных и SS-таблиц, находящихся на разных стадиях уплотнения. Если объемы записи велики, а уплотнение плохо настроено и не успевает за ними, то чтение замедляется ещё сильнее
➖Параллельно работающий процесс уплотнения может сделать время отклика основных запросов менее предсказуемым

B-деревья

➕ Зачастую быстрее при чтении
➕ Удобнее для транзакций: каждый ключ встречается в индексе только в одном месте, в то время как в LSM может быть несколько копий одного ключа в разных сегментах. Во многих реляционных БД изоляция транзакций реализуется с помощью блокировок для диапазонов ключей, и в индексах на основе B-деревьев такие блокировки можно непосредственно привязать к дереву.
➕ Время отклика более предсказуемо

➖Зачастую медленнее при записи: индекс на основе B-дерева должен записывать каждый элемент данных по крайней мере дважды: один раз в WAL и второй — на саму страницу дерева (и, вероятно, снова при разбиении страниц). Кроме того, записывать приходится сразу всю страницу, даже если в ней поменялось лишь несколько байтов.
➖Занимают больше места на диске в силу фрагментации: когда страница разбивается на части или строка не помещается на существующую страницу, некий объем пространства на странице остается незадействованным.

Клепманн подчеркивает, что любые оценки скорости записи и чтения сильно зависят от нюансов конкретной рабочей нагрузки. Не существует быстрого и простого правила, которое бы позволило решить, какой тип индекса лучше в конкретном случае, это приходится проверять опытным путем.

#кабанчик #сисдиз
  • 👍 7
  • 🔥 4
  • ❤ 3
More from @jane_yanchenko
  1. Sep 25, 2026В прошлой жизни, когда я была менеджером проектов, одним из первых мест работы у меня был…
  2. Sep 23, 2026Куда пропало обращение - развязка В прошлом посте у нас загадочно пропало обращение 58122.…
  3. Sep 23, 2026Куда пропало обращение Однажды от руководителя техподдержки пришло письмо, суть которого с…
  4. Sep 21, 2026🔗 Подборка постов про Кафку Как обещала на стриме, собрала посты про Кафку в удобное огла…
  5. Sep 21, 2026🎞 Готова запись стрима про Кафку: https://youtu.be/2aRKsD-MWDA Большое спасибо всем, кто…
  6. Sep 16, 2026Сегодня стрим по Кафке в 19:00 Планируем не в формате доклада, а в формате вопрос-ответ, ч…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →