Skip to content

VadimLakt/pg_b_tree_visualization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Postgres. Визуализация B-Tree индексов

simple index

Предыстория

Нам для задачи потребовалось проанализировать поврежденный индекс, чтобы как то упростить себе задачу был написан простенький скрипт для генерации dot файла.

Step-by-step

  1. Получить файл индекса.
    1. Путь до файла индекса можно получить запросом:  select current_setting('data_directory') || '/' || pg_relation_filepath('pg_depend_reference_index'); /var/lib/postgresql/13/main/base/16385/2806156197
  2. С помощью pg_filedump и опций -i -f необходимо получить файл, который потом будет разбираться скриптом.
    1. Пример: pg_filedump -i -f 2806156197 > pgfiledump.txt
  3. С помощью скрипта pg_b_tree_visualization.py получить dot файл result.dot
    1. Пример: python3 pg_b_tree_visualization.py ./txt/pgfiledump.txt
  4. Получить svg файл с помощью graphviz
    1. Пример: dot -Tsvg result.dot > output.svg

Описание вывода

Выводится несколько уровней блоков, слева направо:

  1. Самый левый - это корень
  2. Самый правый(Уровень 0) - это листы дерева

Могут встречаться серые блоки - это блоки, которые помечены как удалённые, но на них, по каким то причинам, всё ещё ссылаются.

Внутри блоков представлена информация о номере блока и элементах индекса. Элементы индекса ссылаются на другие блоки. В последнем уровне(уровень 0) не отображаются элементы т.к. они ссылаются на кортежи и это сильно засоряет вывод.

Соединения бывают 3х видов:

  1. Чёрные стрелки - соединяют элементы индекса с блоками, на которые элемент ссылается
  2. Красные стрелки - ссылка на предыдущий блок(Previous)
  3. Зелёные стрелки - ссылка на следующий блок(Next)

Ограничения

  1. Совсем поломанные индексы не получится визуализацировать. Необходимо проверить, чтобы файл сгенерированный pg_filedump был содержательный
  2. Для работы скрипта требуется pg_filedump и graphviz

About

Postgres. Visualization of B-tree index

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages