Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / подскажите по блокировкам, как искать, как проверять? / 6 сообщений из 6, страница 1 из 1
07.06.2016, 15:20
    #39252055
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по блокировкам, как искать, как проверять?
ситуация такая:
в одной функции при генерации данных идет удаление старых данных и вставка новых

если функция выполняется впервые то выполняется очень быстро
если повторно то выполняется очень долго, причем замеры скорости между удалением и вставкой показали что долго выполняется именно вставка новых данных (удаление доли секунды)

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

подскажите плиз как это можно отловить, и что еще может быть причиной такого падения по скорости?
...
Рейтинг: 0 / 0
07.06.2016, 15:29
    #39252067
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по блокировкам, как искать, как проверять?
Legushka,

INSERT не должен блокироваться, за исключением ситуаций, когда кто-то держит блоки на уникальные индексы.

Процедура выполняется в одной сессии или в несколько параллельных?
Как настроен vacuum-ing таблицы (да и экземпляра в целом)?
Можете привести код, который делает эту работу?
...
Рейтинг: 0 / 0
07.06.2016, 15:31
    #39252069
ursido
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по блокировкам, как искать, как проверять?
Legushka,

Может, проблема решается описанным здесь способом?
...
Рейтинг: 0 / 0
07.06.2016, 15:31
    #39252070
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по блокировкам, как искать, как проверять?
может развести на разные транзакции предварительное удаление и инсерт данных?
...
Рейтинг: 0 / 0
07.06.2016, 16:16
    #39252141
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по блокировкам, как искать, как проверять?
новые данные: ANALYZE роли в ускорении не сыграл, удаление само прошло быстро, после пришлось подождать выполнение ANALYZE
и уже потом ровно столько же выполнялся запрос на инсерт

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

может PG не хранит удачные планы по склеенным запросам? и каждый раз когда я запускаю склеенный запрос, планировщик с нуля все считает?
...
Рейтинг: 0 / 0
07.06.2016, 16:58
    #39252191
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по блокировкам, как искать, как проверять?
Legushkaновые данные: ANALYZE роли в ускорении не сыграл, удаление само прошло быстро, после пришлось подождать выполнение ANALYZE
и уже потом ровно столько же выполнялся запрос на инсерт

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

может PG не хранит удачные планы по склеенным запросам? и каждый раз когда я запускаю склеенный запрос, планировщик с нуля все считает?

PG вообще не хранит/не кеширует планы если вы не используете prepare явным образом (или в хранимках).
Вы лучше покажите ваш INSERT и сколько он времени работал.
Ну и EXPLAIN (analyze, costs, buffers, timing) для INSERT тоже работает.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / подскажите по блокировкам, как искать, как проверять? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]