:: Не фоксом единым
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
PaulWist
смотри открытые транзакции, блокировки в своей проге.

При чём тут моя прога, если я лог постгреса смотрю?
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
pasha_usue
Он 20 мегабайт на клиента тащит.

DBeaver выполняет точно такой же запрос, точно так же тащит. И что?



Исправлено 1 раз(а). Последнее : S-type, 20.09.19 12:56
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
S-type
pasha_usue
Он 20 мегабайт на клиента тащит.

DBeaver выполняет точно такой же запрос, точно так же тащит. И что?
Ему, значит, не надо конвертировать результат запроса. Ему только сам запрос, и непосредственно передача. А передача 20 мегабайт сейчас вообще не считается за нагрузку (и не учитывается в duration).



Исправлено 1 раз(а). Последнее : pasha_usue, 20.09.19 13:01
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
pasha_usue
Ему, значит, не надо конвертировать результат запроса.

Что значит "конвертировать результат запроса"? Кто из чего во что конвертирует?
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
PaulWist
смотри открытые транзакции, блокировки в своей проге.
Нее... Он бы показал задержку в Actual Time.
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
S-type
pasha_usue
Ему, значит, не надо конвертировать результат запроса.

Что значит "конвертировать результат запроса"? Кто из чего во что конвертирует?
Postgres конвертирует результат запроса для клиента, в зависимости от настроек, переданных клиентом. Самое простое, это когда client_encoding не совпадает с db_encoding.
Чуть сложнее это какой-нибудь дурной драйвер, который просит сервак блобы возвращать в MIME64.
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
pasha_usue
не совпадает с db_encoding.

PostgreSql ни чего про db_encoding не знает.

[attachment 31952 s2_.png]



Исправлено 1 раз(а). Последнее : S-type, 20.09.19 14:26
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
postgrespro.ru
Конкретно: ENCODING. LC_COLLATE и LC_TYPE тоже рекомендую почитать.

PS: Можно не про. Я первую попавшуюся ссылку взял.



Исправлено 2 раз(а). Последнее : pasha_usue, 20.09.19 14:47
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
pasha_usue
PaulWist
2. Настораживает duration: 3177.924, смотри открытые транзакции, блокировки в своей проге.
Он 20 мегабайт на клиента тащит. Даже простая перекодировка UTF8->ANSI может отожрать 2 секунды спокойно. А если там ещё что-то сериализуется под драйвер, то и того больше.

Драйвер тут не причем (ну в смысле играет роль очень большую), duration отображает затраты сервера на выполнение запроса, а куда затем отправлять результат и с какой скоростью, сервер об этом не знает, его в коде об этом прямо не просили.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
S-type
PaulWist
смотри открытые транзакции, блокировки в своей проге.

При чём тут моя прога, если я лог постгреса смотрю?

Нам неизвестно, как из проги вызывается тормознутый селект, с параметрами или же просто строкой?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
PaulWist
duration отображает затраты сервера на выполнение запроса

Т.е. это всё таки сервер так долго чего то делает... И осталось понять - чего и как.
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
PaulWist
S-type
PaulWist
смотри открытые транзакции, блокировки в своей проге.

При чём тут моя прога, если я лог постгреса смотрю?

Нам неизвестно, как из проги вызывается тормознутый селект, с параметрами или же просто строкой?

Это LINQ to Entities:


return DbContext.UserGroups
.Include(x=>x.Users)
.Include(x => x.Users.Select(z => z.Region))
.Where(query).ToList();

Тут Query = x=>x.isActual;

Entity генерит select строкой, без параметров.
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
PaulWist
pasha_usue
PaulWist
2. Настораживает duration: 3177.924, смотри открытые транзакции, блокировки в своей проге.
Он 20 мегабайт на клиента тащит. Даже простая перекодировка UTF8->ANSI может отожрать 2 секунды спокойно. А если там ещё что-то сериализуется под драйвер, то и того больше.

Драйвер тут не причем (ну в смысле играет роль очень большую), duration отображает затраты сервера на выполнение запроса, а куда затем отправлять результат и с какой скоростью, сервер об этом не знает, его в коде об этом прямо не просили.
Просили. И сервер занимается следующим:
1. Клиент говорит серверу, в каком формате отправлять результаты (text/binary). Пруф:
2. Если формат текстовый, то клиент так же сообщает серверу предпочтительный формат даты, времени, bytea и ещё кучи всего;
3. И, наконец, client_encoding, который работает и для бинарника, и для текстовика.

И все эти преобразования постгрес делает именно на стороне сервера, после получения результата запроса, и перед отправкой клиенту. И либо клиент его об этом попросил, либо забыл попросить, и тогда сервер работает на дефолтных установках.

PS. Убрал пруф, он какой-то не пруф ))



Исправлено 1 раз(а). Последнее : pasha_usue, 20.09.19 16:16
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
S-type
PaulWist
duration отображает затраты сервера на выполнение запроса

Т.е. это всё таки сервер так долго чего то делает... И осталось понять - чего и как.

Если есть проофайлер (а народ говорит, что есть), то запускай его и смотри куда тратиться время.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
PaulWist
S-type
PaulWist
duration отображает затраты сервера на выполнение запроса

Т.е. это всё таки сервер так долго чего то делает... И осталось понять - чего и как.

Если есть проофайлер (а народ говорит, что есть), то запускай его и смотри куда тратиться время.

Интересно, какой народ это говорит? На сколько понимаю, все пользуются логами, который PostgreSql выдаёт, отдельного профайлера (как у MsSql-я) в постгресе нет.
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
В сгенерированном select-е выводятся колонки, которые не нужны. Можно как то повлиять на entity, что бы запрос генерировался только с нужными полями?
Ratings: 0 negative/0 positive
Re: PostgreSQL - время запроса
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Что значит "не нужны"? Кому не нужны? Есть такое свойство в модели - значит должно быть извлечено и записано в материализуемый объект
Перестрой модель - сделай специальную lite версию только с "нужными" свойствами - чисто для чтения. Или банально используй проекцию
.Select(ug => new {Id = ug.Id, Some = ug.Some, Region = x.Users.Region})
Возможно тебе не нужны вообще .Include (они больше для подтягивания коллекций применяются), а достаточно вычитки нужных свойств по "пути". Правда там могут быть нюансы в зависимости от версии EF - опять же ты не сообщаешь какой именно пользуешься - EF 5, EF 6, или EF Core...

Плюс к тому, когда тащишь 100500 объектов, то рассмотри возможность отключения отслеживания состояния объектов в EF - .AsNoTracking() - забивать память объектами отслеживания, плюс замедлять (если он есть) процесс явного внесения изменений в отслеживаемые контекстом сущности (cкажем .Add() какие в рамках того же контекста) - не есть хорошо.


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 9 (Гостей: 9)

© 2000-2024 Fox Club 
Яндекс.Метрика