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

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

39 ответов

59 просмотров

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

Для начала разговора о скорости запросов предоставьте информацыю из закрепа: 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 год что ли? Логичные батчи по-моему начинаются где-то от миллиона (на типичных данных и при типичных требованиях к доступности сервиса).

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта