Как погрузиться в оптимизатор PostgreSQL и проследить каждый шаг, необходимый для оптимизации запроса?

8

Как и структура MEMO в SQL Server, которая является своего рода «бумажным следом» шагов, которые оптимизатор предпринимает для оптимизации запроса. Имеет ли PostgreSQL аналогичную структуру, которая записывает шаги, которые выполняет оптимизатор?

zli89
источник

Ответы:

3

Нет, детального оптимизатора аудита / структуры или функции отчетности.

Ваш лучший инструмент - это "GDB". В отличие от MS SQL Server, PostgreSQL является открытым исходным кодом; Вы можете просто построить с включенными символами отладки, присоединить отладчик и точно отслеживать, что он делает.

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

gdbТочки трассировки, или точки perfтрассировки пользовательского пространства, будут очень полезны для вас.

Вы также можете включить подробное ведение журнала отладки и некоторые параметры трассировки, а postgresql.confзатем изучить полученные подробные файлы журналов.

В FAQ часто задаваемых вопросов для разработчиков PostgreSQL есть некоторая документация (к которой я добавил информацию о деревьях планов и т. Д.): Https://wiki.postgresql.org/wiki/Developer_FAQ . Это может быть полезно. Вы также должны прочитать основные документы для разработчиков.

Крейг Рингер
источник