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

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

39 ответов

50 просмотров

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

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта