172 похожих чатов

Я внимательно не читал это длинное обсуждение, но мне любопытно...

на основании чего были сделаны все эти выводы?

17 ответов

17 просмотров

Про то, что параллельных воркеров отрубает при Execute с "maximum number of rows" отличным от FETCH_ALL (в любом смысле) -- в исходнике в общем написано. src/backend/postgres.c: exec_execute_message(const char *portal_name, long max_rows) ... if (max_rows <= 0) max_rows = FETCH_ALL; completed = PortalRun(portal, max_rows, true, /* always top level */ !execute_is_fetch && max_rows == FETCH_ALL, receiver, receiver, &qc); src/backend/pquery.c: PortalRun(Portal portal, long count, bool isTopLevel, bool run_once, DestReceiver *dest, DestReceiver *altdest, QueryCompletion *qc) ... portal->run_once = run_once; ... nprocessed = PortalRunSelect(portal, true, count, dest); ... PortalRunSelect(Portal portal, bool forward, long count, DestReceiver *dest) ... ExecutorRun(queryDesc, direction, (uint64) count, portal->run_once); src/backend/executor/execMain.c: ExecutorRun(QueryDesc *queryDesc, ScanDirection direction, uint64 count, bool execute_once) ... standard_ExecutorRun(queryDesc, direction, count, execute_once); ... standard_ExecutorRun(QueryDesc *queryDesc, ScanDirection direction, uint64 count, bool execute_once) ... ExecutePlan(estate, queryDesc->planstate, queryDesc->plannedstmt->parallelModeNeeded, operation, sendTuples, count, direction, dest, execute_once); ... ExecutePlan(EState *estate, PlanState *planstate, bool use_parallel_mode, CmdType operation, bool sendTuples, uint64 numberTuples, ScanDirection direction, DestReceiver *dest, bool execute_once) ... if (!execute_once) use_parallel_mode = false;

Yaroslav-Schekin Автор вопроса
Ilya Anfimov
Про то, что параллельных воркеров отрубает при Exe...

Про этот вывод ясно, спасибо! А что из них передавало не FETCH_ALL в EXECUTE / использовало не simple query protocol?

Yaroslav Schekin
Про этот вывод ясно, спасибо! А что из них передав...

JDBC (оно испокон века не simple), и галочка в настройках ... IDE кажэтся -- Limit page size to https://t.me/pgsql/322693

Yaroslav-Schekin Автор вопроса
Ilya Anfimov
JDBC (оно испокон века не simple), и галочка в нас...

Понятно. То, что это происходит, можно было непосредственно увидеть только с помощью auto_explain, наверное.

Yaroslav Schekin
Понятно. То, что это происходит, можно было непос...

И да, в JDBC postgresql это, очевидно, будут параметры preferQueryMode extended | extendedForPrepared | extendedCacheEverything | simple The default is extended и defaultRowFetchSize The default is zero, meaning that in ResultSet will be fetch all rows at once.

Yaroslav Schekin
Понятно. То, что это происходит, можно было непос...

Меня сейчас дажэ большэ интересует -- откуда у него была разница в pgadmin между explain и запросом. Запрос выполнялся быстро, explain -- медленно. Но я пока думаю, как можно что-то сымитировать.

Yaroslav-Schekin Автор вопроса
Ilya Anfimov
Меня сейчас дажэ большэ интересует -- откуда у нег...

Возможно, overhead на timing. Кто его знает, какая это OS и т.п.

Yaroslav Schekin
Возможно, overhead на timing. Кто его знает, какая...

Как-то очень точно соответствовало по времени.

Yaroslav-Schekin Автор вопроса
Ilya Anfimov
Как-то очень точно соответствовало по времени.

Соответствовало чему (опять-таки, я всё обсуждение внимательно не читал)?

Yaroslav Schekin
Соответствовало чему (опять-таки, я всё обсуждение...

Запросы с explain, во всех вариантах, соответствовали таймингу JDBC с fetchLimit=500 (притом установка параметра JDBC на тйминг с explain никак не влияла). Там у него на разных данных два запроса было -- один выполнялся 6-8 секунд в быстром случае и 20-22 в медленном. Другой -- 15-20 секунд в быстром случае и 1:15 в медленном.

Ilya Anfimov
Запросы с explain, во всех вариантах, соответствов...

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

Ilya Anfimov
Меня сейчас дажэ большэ интересует -- откуда у нег...

Попробуй на большой выборке сделать группировку по индексирусыс полям. Наверное тогда запрос будет быстрее выполняется чем plan explain analiz

Yaroslav-Schekin Автор вопроса
Ilya Anfimov
Запросы с explain, во всех вариантах, соответствов...

Странно, но, опять-таки, кто его знает, что эти клиенты там посылают (в плане протокола). Нужно было сравнить с psql, для начала. А потом посмотреть auto_explain, если есть возможность.

Yaroslav Schekin
Странно, но, опять-таки, кто его знает, что эти кл...

Ну вот мы и выяснили что phpStorm посылает команду в jdbc. Это и влияет на время выполнения. Теперь мы воорожены знаниями, что если использовать jdbc драйвер с лимитом, то запросы могут дольше выполняться.

Yaroslav-Schekin Автор вопроса
Zhukov Dm
Ну вот мы и выяснили что phpStorm посылает команд...

Я пока только частично понял происходящее — ясно, что использование не FETCH_ALL в EXECUTE отключает parallel_mode. Неясно, почему https://t.me/pgsql/322788

Yaroslav Schekin
Я пока только частично понял происходящее — ясно, ...

да я вобще до вчерашнего дня и не подозревал о существовании jdbc и о том что IDE через него работает ))))))

Yaroslav Schekin
Я пока только частично понял происходящее — ясно, ...

Это, безусловно, из-за того, что он не хочет выполнять parallel_mode из-за execute_once. Скорее всего, есть опасение, что если запрос не отработает до конца -- то воркеры обязаны будут подвиснуть до следующего Execute, в котором -- продолжыть предыдущую работу. Но детали и историю этой части я пока что не читал

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
3
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Карта сайта