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

Почему это так долго работает?

39 ответов

18 просмотров

Делайте кусками по 1000 записей например, будет быстро

Mr.-N Автор вопроса

Для начала разговора о скорости запросов предоставьте информацыю из закрепа: https://t.me/pgsql/303899 Для этого можно воспользоваться вот этим скриптом: https://t.me/pgsql/476688 Без всей этой информацыи такой разговор будет беспредметным. PS И да, не надо постить текст картинками.

Mr. N
а почему так?

Причин может быть много, записи заблокированные другими запросами, например

Ilya Anfimov
Для начала разговора о скорости запросов предостав...

Показать explain analyze, всё равно, что дождать окончания запроса

dennis
Показать explain analyze, всё равно, что дождать о...

Ну, можно немного подумать и сделать без analyze так или иначе.

если по другому не можете, отмените, добавьте к запросу explain (analyze) *SQL* limit 10

dennis
Показать explain analyze, всё равно, что дождать о...

По остальной информацыи — ужэ можно будет думать, ковырять блокировки или это 10ТБ табличка на HDD.

dennis
Чем не нравится, минусующие?

ты делить на куски вручную будешь?

dennis
Чем не нравится, минусующие?

Тем, что это почти всегда только увеличит общее время выполнения, может быть? ;)

Nickelodeona K
ты делить на куски вручную будешь?

Я пишу для этого простенький запрос

Yaroslav Schekin
Тем, что это почти всегда только увеличит общее вр...

общее время будет больше. но не будет долгой транзакции мешающей вакууму, не будет долгой блокировки, мешающей другим запросам. для горячих таблиц — уместный совет.

dennis
Чем не нравится, минусующие?

Всем. Во-первых, обновление батчами работает ДОЛЬШЭ. Чуть менее, чем всегда. Один батч — да, можэт и быстрее. Всё вместе — почти всегда дольшэ, зачастую сильно. Во-вторых, нет никакого смысла рыпаться пока не определил, что там стряслось. Если это блокировка — то она точно такжэ будет висеть при батче. В-третьих — это не так просто. Определить нормальные батчи, которые обновят в итоге всё и не будут по 20 раз обновлять одно и тожэ. В-четвёртых — не всегда нетранзакцыонное обновление вообще допустимо.

Yaroslav Schekin
Тем, что это почти всегда только увеличит общее вр...

Ого! То есть заблокировать на бою таблицу на пол суток это нормально? А батчами это моветон. Ну-ну

Если Вам действительно нужна помощь — покажите https://t.me/pgsql/498954 , только EXPLAIN со всеми теми параметрами, кроме ANALYZE.

dennis
Ого! То есть заблокировать на бою таблицу на пол с...

Ну, во-первых только частично заблокировать. Во-вторых — бой бою рознь. Кое-где — да, никаких проблем вообще, каждую неделю есть тех.окно на 56 часов.

Ilya Anfimov
Всем. Во-первых, обновление батчами работает ДОЛЬ...

На больших таблицах в рабочей среде всегда быстрее. И сильно, просто потому, что не надо ждать exclusive lock

dennis
Ого! То есть заблокировать на бою таблицу на пол с...

А что Вы имеете в виду под "заблокировать на бою таблицу на пол суток"? Что, от этого чтения заблокируются, что ли? Или обновления пока не заблокированных записей?

Виктор Егоров
в UPDATE нет exclusive lock

Ну, по сути — есть. На каждую обновлённую строчку.

Yaroslav Schekin
А что Вы имеете в виду под "заблокировать на бою т...

Речь про изменения, конечно, которые будут ждать вашего апдейта

Ilya Anfimov
Ну, по сути — есть. На каждую обновлённую строчку.

угу. но он возникает только в момент, когда появляется другой желающий потрогать эту строчку

Виктор Егоров
общее время будет больше. но не будет долгой транз...

Всё это, безусловно, так. Но мы же ещё не знаем, в чём там причина, вот в чём смысл. Зачем такие советы давать "вслепую", я не понимаю (может стать только хуже, как пишет https://t.me/pgsql/498969 ).

dennis
Речь про изменения, конечно, которые будут ждать в...

Не факт, что такие изменения там вообще есть. Т.е. https://t.me/pgsql/498983

Ilya Anfimov
ЧТО. ВЫ. НЕСЁТЕ?!?

Тон попроще. Я не несу, а делюсь опытом. Который нашел подтверждение совсем недавно, на табличке 2млн. записей, всего-то. Но зато интенсивно изменяемой.

dennis
Тон попроще. Я не несу, а делюсь опытом. Который н...

Слушайте, вы в чятике инжэнеров. Тут любят спорить. Постарайтесь формулировать... Точнее, что ли. И обоснованнее.

Ilya Anfimov
Слушайте, вы в чятике инжэнеров. Тут любят спорить...

Надо добавить «русскоязычных», это сильно меняет тон разговора почему-то.

На самом деле, если завис конкретный запрос — можно сразу глянуть/выложыть SELECT * FROM pg_stat_activity и SELECT * pg_locks — чтобы посмотреть, что он висит на блокировке или не висит.

Mr. N
screenshot

Не надо выкладывать текст фотографиями.

dennis
Делайте кусками по 1000 записей например, будет бы...

И потом — ну, по какой 1000 записей? Сейчас 1991 год что ли? Логичные батчи по-моему начинаются где-то от миллиона (на типичных данных и при типичных требованиях к доступности сервиса).

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( 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
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта