From 4e03100b3e3f4bc039c7249e5a10a2c397a86a0d Mon Sep 17 00:00:00 2001 From: Petr Petrenko Date: Sat, 25 Mar 2017 18:14:01 +0700 Subject: [PATCH] B-Tree is self-balancing --- postgresql_indexes.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgresql_indexes.tex b/postgresql_indexes.tex index 850fdd81..7c7bd793 100644 --- a/postgresql_indexes.tex +++ b/postgresql_indexes.tex @@ -48,14 +48,14 @@ \subsection{B-Tree} \item сохраняют сортированность данных; \item поддерживают поиск по унарным и бинарным предикатам (\lstinline!c and f!) за O($\log_m{N}$), где m~--- количество записей в блоке, N~--- количество элементов; \item позволяют не сканируя последовательность данных целиком оценить cardinality (количество записей) для всего индекса (а следовательно таблицы), диапазона, причём с произвольной точностью. Посмотрели корневую страницу~--- получили одну точность. Посмотрели следующий уровень дерева~--- получили точность получше. Просмотрели дерево до корня~--- получили точное число записей; + \item самобалансируемый, для внесения изменения не требуется полного перестроения, происходит не более O($\log_m{N}$) дейстий, , где m~--- количество записей в блоке, N~--- количество элементов; \end{itemize} Слабые стороны B-Tree индексов: \begin{itemize} - \item для их построения требуется выполнить полную сортировку пар (Значение, RowId); \item занимают много места на диске. Индекс по уникальным Integer-ам к примеру весит в два раза больше аналогичной колонки (т.к. храняться ещё и RowId); - \item при постоянной записи дерево разбалансируется, а также начинает хранить данные разреженно (сразу после построения они могут лежать очень плотно), и время доступа увеличивается за счёт увеличения объёма дисковой информации. Поэтому B-Tree индексы требуют присмотра и периодического перепостроения (REBUILD); + \item при постоянной записи дерево начинает хранить данные разреженно (сразу после построения они могут лежать очень плотно), и время доступа увеличивается за счёт увеличения объёма дисковой информации. Поэтому B-Tree индексы требуют присмотра и периодического перепостроения (REBUILD); \end{itemize}