le0pard / postgresql_book

Book about PostgreSQL (russian)
https://postgresql.leopard.in.ua/
806 stars 71 forks source link

B-Tree is self-balancing #30

Closed avallac closed 7 years ago

avallac commented 7 years ago

B-дерево относиться к классу самобалансируемых деревьев, оно не оптимально, но очень близко (так же как АВЛ дерево и красно-черное). Поэтому оно не может разбалансироваться.

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

le0pard commented 7 years ago

@avallac благодарю.

Понятно, что для механизма транзакции требуется, чтобы индексы хранили ссылки на устаревшие данные, но после автовакума они должны полностью быть удалены из индекса.

К сожалению, индексы подвержены такой же проблеме, как и таблицы - "распухание", когда вакуум не может очистить некоторые участки и только REINDEX может это сделать.

le0pard commented 7 years ago

released https://github.com/le0pard/postgresql_book/releases/tag/v5.0.5