PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Из программы на C# с помощью Entity выполняется запрос к базе. В логе PostgreSql-я вижу
Цитата: Запрос выполняется 3 с половиной секунды. А если этот же запрос запустить в DBeaver-е, он показывает: Цитата: Т.е. запрос выполняется на порядок быстрее. Вопрос - почему? Какая разница PostgreSQL-ю, откуда прилетел запрос (из бобра или из c#-ной программы)? Может проблема в кэше? Перезапускаю службу Postgres-а (postgresql-10), выполняю запрос из DBeaver - быстро, запускаю программу - несколько секунд. Господа, что посоветуете? В какую сторону копать? Может, надо в c#-пе какие то параметры подкрутить, или свойства драйвера настроить? P.S. А что означает (+248ms)? Исправлено 4 раз(а). Последнее : S-type, 19.09.19 12:19 |
Re: PostgreSQL - время запроса | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Пример запросов в студию, плюс планы выполнения, но похоже на параметр сниффинг.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
|
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Что за параметр? Где и как он устанавливает? Можно ссылку на почитать? |
Re: PostgreSQL - время запроса | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Это не параметр, это "прослушивание параметров". Гугли по "parameter sniffing". ------------------ Лень - это неосознанная мудрость. |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Погуглил. Что то все ссылки ведут к Ms Sql-ю.
|
Re: PostgreSQL - время запроса | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
1. Теперь давай select и план из твоей проги.
2. У тебя половина времени от ВСЕГО запроса тратится на сортировку, скорее всего для UserGroups.ID индекс есть, а для
3. Индексы на таблицы приведи. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 19.09.19 14:26 |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
В программе Entity код, который генерит селект. Посмотрел select - он один в один, как в логе. Из LINQ to Entities можно получить план выполнения запроса? Как его получить? |
Re: PostgreSQL - время запроса | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Нет, соединение из проги и соединение из бобра имеют разные настройки SET, вот их для начала сравни.
Ммм, планы создаются и сохраняются на сервере, надо очистить кеш планов на сервере, выполнить запрос из проги, а затем посмотреть (вытащить) план на сервере, он там должен быть один. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
И, пусть тратит. В DBeaver даже с таким планом выполняется за 350 мс - нет смысла оптимизировать запрос с такой скоростью выполнения. Вопрос в другом - почему этот запрос, вызванный из под C# выполняется на порядок дольше. |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Посмотреть настройки в бобре можно открыв бобёр и указав: Цитата: А посмотреть из программы - это в программе выполнить этот код и посмотреть - что выведет? |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Спасибо, гляну! |
Re: PostgreSQL - время запроса | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Ну да, это же настройки конкретного соединения.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Нарыл habr.com там ссылка на postgrespro.ru - планы можно выводить прямо в лог, попробую.
|
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
В postgresql.conf установил:
Т.е. отслеживать запросы, выполняющиеся более секунды, подключить вывод плана. Получилось вот так - что то взрывающее мозг Попробую получить что то более приемлемое. |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Установил в конфиге, как в статье
получил план:
Исправлено 2 раз(а). Последнее : S-type, 20.09.19 11:48 |
Re: PostgreSQL - время запроса | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Глядя на всё это не могу понять, из каких цифр складывается 3177.924 ms.
Исправлено 1 раз(а). Последнее : S-type, 20.09.19 12:02 |
Re: PostgreSQL - время запроса | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Всё остальное время потрачено на конвертацию ответа перед отправкой клиенту. Очень широкая таблица, высотой 24506 строк - не мудрено. Возможно стоит попробовать другой драйвер. Возможно, стоит установить в драйвере кодовую страницу, соответствующую кодовой странице БД. |
Re: PostgreSQL - время запроса | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
1. Планы совпадают, как по стоимости, так и по времени.
2. Настораживает duration: 3177.924, смотри открытые транзакции, блокировки в своей проге. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: PostgreSQL - время запроса | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Он 20 мегабайт на клиента тащит. Даже простая перекодировка UTF8->ANSI может отожрать 2 секунды спокойно. А если там ещё что-то сериализуется под драйвер, то и того больше. |
© 2000-2024 Fox Club  |