@Dubrovin

Как функция index scan в postgresql понимает тип индекса?

Здравствуйте, пытаюсь понять как работают индексы в postgresql под капотом.
Как функция index scan в postgresql понимает тип индекса?
Где можно почитать подробнее про то, как конкретно работает эта функция под капотом — какие аргументы принимает, что с ними делает (ну или если она принимает в качестве аргумента только имя созданного индекса, то какие параметры она парсит из этого индекса и что с ними дальше делает — ведь, насколько я понимаю, функция должна работать по-разному для разных типов индексов, вызывая на этих индексах (структурах) разные алгоритмы).
  • Вопрос задан
  • 184 просмотра
Решения вопроса 2
Melkij
@Melkij
PostgreSQL DBA
Весь раздел https://www.postgresql.org/docs/current/internals.html
за исключением разве что System Catalogs

Узел Index Scan в плане запроса - это далеко не одна функция, а целый отдельный src/backend/executor/nodeIndexscan.c
Ну и кучка поддерживающих конструкций, чтобы от этого был толк. Большая кучка конструкций. Очень.

Как функция index scan в postgresql понимает тип индекса?

А ему и не надо.
Если планировщик выбрал index scan - значит этот index access method предоставляет совместимый интерфейс. Далее index scan согласно контракту index access method дёргает методы этого конкретного AM, и уже сам AM решает, где у него что лежит и как доставать требуемые TID по заданным условиям.

и как именно Postgre понимает, какую функцию следует применять

postgresql или postgres. Базы postgre не существует.
А муками выбора о плане запроса страдает планировщик, работающий перед executor'ом. И там настоящая чёрная магия (и костыли)
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Где можно почитать подробнее про то, как конкретно работает эта функция под капотом

https://github.com/postgres/postgres
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы