запрос (который выполняется за 50мс) порождает жирный seq scan в системной таблице pg_catalog.pg_class ? Нагрузка процессора 100%, в топе гора idle процессов.
Хорошая книжка.👆
давайте без файлов тут, есть же ссылки
очень уж бесформенно, а чего-то более конкретного с описанием анализа производительности и применяемых инструментов нет ?
Начните с нашэго закрепа: https://t.me/pgsql/303899
1. pg 15.4 2. SELECT * FROM docs.vw_docs_service_references 3. https://pastebin.com/6MPpLbny 4. https://pastebin.com/PreLNGvR при этом в autoexplain логе такое в этом момент появляется https://pastebin.com/HFqwxyWB
1. Это не то, что возвращает SELECT version();. 2. OK. 3. Я вполне уверен, что показанное — не результат \d+. 4. OK, но этот план не показывает проблемы, зато: > при этом в autoexplain логе такое в этом момент появляется Она явно вот тут. Разберитесь, что и зачем выдаёт вот это вот — вполне возможно, что этот запрос можно устранить целиком.
Она явно вот тут. Разберитесь, что и зачем выдаёт вот это вот — вполне возможно, что этот запрос можно устранить целиком. решительно непонятно что порождает этот запрос. явный вызов системных таблиц не делается.
Ну а лог недвусмысленно говорит, что делается. Так что ищите.
3. Можно было догадаться, что у view потребуется что-нибудь ещё... \d+ , например. Впрочем, тут это неважно. ЭТОТ запрос выполняется достаточно быстро. Проблемы у вас где-то ещё (у какого-то фреймворка, который выдаёт вон те информацыонные запросы, которые видны в auto_explain).
Ну pg тож иногда чудит )
PostgreSQL никогда не выдаёт запросов сам себе (по собственной инициативе) по client-server protocol, так что... о чём это Вы?
Так это server-side и там выдает
Почему Вы решили, что это server side?
А почему вы решили обратное?))))
По очевидным причинам (Вы бы хоть в лог внимательно посмотрели). И почему Вы отвечаете вопросом на вопрос? ;)
Так я только вам;)
Ладно, я не прав, понятно что это npgsql ) но Postgres тож любит походить по таблицам)
Нет, не любит. Ещё раз, PostgreSQL никогда не выдаёт себе запросов по собственной инициативе. А те "хождения", которые выполняются для обработки обычных SELECT, в логах не видны.
В логах или в statement? Давайте уж до конца посмотрим куда что пишет pg?
> В логах или в statement? Эээ... что?! > Давайте уж до конца посмотрим куда что пишет pg? Посмотрите, что ж.
Я смотрел) нормальные select по fk;) и тд
В нормальных SELECT (а не UPDATE/INSERT/DELETE) по FK нет дополнительных запросов. И да, я написал именно "по собственной инициативе", зачем переходить на обсуждение каких-то других тем?
Нет перехода коллега. Это был очевидный пример.
Есть. И не был. Если хотите спорить не с тем, что я написал — исключите меня из этого диалога, пожалуйста. ;) > что при выполнении select не будет в полной мере затронут словарь? Ещё раз: А те "хождения", которые выполняются для обработки обычных SELECT, в логах не видны. И да, они выполняются без запросов, на более низком уровне.
Ну про низкий уровень спорить не буду, там и код был такой же )
Обсуждают сегодня