powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как заставить postgres 9.5 использовать общий план выполнения
7 сообщений из 7, страница 1 из 1
как заставить postgres 9.5 использовать общий план выполнения
    #40097219
psm666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

postgres 9.5.
Необходимо оптимизировать выполнение запроса.

проверил explain analyze : выяснилось что подавляющее время уходить на планирование запроса, а само время выполнение очень небольшое.

сделал подготовленный запрос с помощью prepare .
но сколько не выполняю explain execute (и одинаковые, и разные) - все равно используется частный план выполнения.

Подскажите пожалуйста как заставить postgres 9.5 использовать общий план выполнения .

миграция на postgres 12 не рассматривается
...
Рейтинг: 0 / 0
как заставить postgres 9.5 использовать общий план выполнения
    #40097348
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psm666
Здравствуйте.

postgres 9.5.
Необходимо оптимизировать выполнение запроса.

проверил explain analyze : выяснилось что подавляющее время уходить на планирование запроса, а само время выполнение очень небольшое.

сделал подготовленный запрос с помощью prepare .
но сколько не выполняю explain execute (и одинаковые, и разные) - все равно используется частный план выполнения.

Подскажите пожалуйста как заставить postgres 9.5 использовать общий план выполнения .

миграция на postgres 12 не рассматривается


Никак... база сама решит как лучше.
Но вообще не очень понятна постановка вопроса и зачем вам это надо вообще.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
как заставить postgres 9.5 использовать общий план выполнения
    #40097467
psm666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно ускорить работу запроса.

добавил в 9.5 опцию plan_cache_mode из 12-го .

понял почему используется частный план вместо общего.

частный план - время планирования 50мс, время выполнения - 2мс
общий план - время выполнения 30мс .

т.е. частный план действительно сильно быстрей. но даже при неоптимальном плане общий план оказываться быстрей

в общем плане используется на одной из таблиц seq scan, а в частном index scan.

подскажите, есть ли какой способ принудительно заставить использовать индекс для доступа к конкретно таблице ?
может есть патчи добавляющее поддержку хинтов в postgres ( аналогично index из mssql ) ?
может есть какой способ сильно уменьшить время расчета плана ?
...
Рейтинг: 0 / 0
как заставить postgres 9.5 использовать общий план выполнения
    #40097474
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psm666
Нужно ускорить работу запроса.

добавил в 9.5 опцию plan_cache_mode из 12-го .

понял почему используется частный план вместо общего.

частный план - время планирования 50мс, время выполнения - 2мс
общий план - время выполнения 30мс .

т.е. частный план действительно сильно быстрей. но даже при неоптимальном плане общий план оказываться быстрей

в общем плане используется на одной из таблиц seq scan, а в частном index scan.

подскажите, есть ли какой способ принудительно заставить использовать индекс для доступа к конкретно таблице ?
может есть патчи добавляющее поддержку хинтов в postgres ( аналогично index из mssql ) ?
может есть какой способ сильно уменьшить время расчета плана ?

А чем тебя 50мс не устраивает? Сколько надо-то?
...
Рейтинг: 0 / 0
как заставить postgres 9.5 использовать общий план выполнения
    #40097477
psm666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mefman

А чем тебя 50мс не устраивает? Сколько надо-то?

есть обращение извне по протоколу , данные тащатся очень не оптимально - по одному значению за раз, много запросов. переделать это возможности нет.
переделываю структуру БД в результате вылезло что скорость вытаскивания данных увеличилась 2,5 раза. что заметят, и будут вопросы.
нужно что бы скорость осталось хотя бы прежней - а это нужно уменьшить время выполнения запроса хотя бы до 20мс.
...
Рейтинг: 0 / 0
как заставить postgres 9.5 использовать общий план выполнения
    #40097479
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psm666
mefman

А чем тебя 50мс не устраивает? Сколько надо-то?

есть обращение извне по протоколу , данные тащатся очень не оптимально - по одному значению за раз, много запросов. переделать это возможности нет.
переделываю структуру БД в результате вылезло что скорость вытаскивания данных увеличилась 2,5 раза. что заметят, и будут вопросы.
нужно что бы скорость осталось хотя бы прежней - а это нужно уменьшить время выполнения запроса хотя бы до 20мс.


Hm засунуть этот запрос в хранимку и пусть спланируется 1 раз вариант не подходит?

PS: при использовании prepared запросов планирование вообще не должно занимать много времени.
Так как оно 1 раз произведётся что для общего что для частного плана.
Если у вас не так - надо вникать что у вас конкретно происходит с запросом и временами.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
как заставить postgres 9.5 использовать общий план выполнения
    #40097497
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
при использовании prepared запросов планирование вообще не должно занимать много времени.
Так как оно 1 раз произведётся что для общего что для частного плана.

Ну, нет.
Опуская скучные подробности откуда сюда пришли, интересующее место здесь: https://github.com/postgres/postgres/blob/REL_13_STABLE/src/backend/utils/cache/plancache.c#L1017 (для 9.5 там же) плюс сам GetCachedPlan чуть ниже
откуда можно узнать, что в нормальных условиях на каждый из 5 первых execute запрос будет планироваться заново с custom планом, затем будет сгенерирован generic план, на последующих вызовах будем выбирать, какой из планов получился дешевле: generic или среднее среди custom планов. custom план - это планируем запрос заново с нуля. В pg_stat_statements начиная с pg13 будет видно как разница plans и calls
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как заставить postgres 9.5 использовать общий план выполнения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]