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

Я тут нарвался на LWLock:LockManager после переезда на partitioned table

(32 HASH партиции) он же fastpath в pg_locks и у меня вопрос:

Insert on conflict update в partitioned таблицу сколько локов возьмёт если был конфликт и update HOT? Один на таблицу, один на индекс для on conflict минимум, но эти локи на партицию куда пишет или на все партиции просто потому что они есть в плане? PostgreSQL 15.2

4 ответов

7 просмотров

Если не ошибаюсь, то на все объекты, которые есть в плане будет наложен как минимум access share, т.е. на каждую партицию таблицы и на каждую партицию индекса. Сегодня как раз читал доку по Авроре на aws, в ней говорится, что при превышении лимита FP_LOCK_SLOTS_PER_BACKEND аврора переходит на небыстрые блокировки. Думаю в ванильном пг примерно похожая ситуация, надеюсь более опытные коллеги поправят. Сама дока: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/apg-waits.lw-lock-manager.html

Mike-Wazowski Автор вопроса
Максим Логвиненко
Если не ошибаюсь, то на все объекты, которые есть ...

Тоже читал эту доку и просто шикарный summary от gitlab https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/2301 (у них PG12 многое могло поменяться). Но вот не понятно с execution time partition prunning: если заход в индекс есть в плане, во время выполнения он туда не факт что зайдет , значит , наверное, никаких локов брать не будет, но как оно на самом деле я хз.

Mike Wazowski
Тоже читал эту доку и просто шикарный summary от ...

а pg_locks что показывает? сделал простой запрос к партиционированной таблице по дате с обращением к последней партиции и посмотрел блокировки: блокировка на саму таблицу, на каждую партицию таблицы и на каждую партицию индекса, в сумме 1к+ блокировок, все AccessShareLock, первые 16 из них - fastpath

Mike-Wazowski Автор вопроса
Максим Логвиненко
а pg_locks что показывает? сделал простой запрос к...

Спасибо за подсказку, поэксперементировал, всё оказалось ещё интереснее. В реальном приложении используются prepared statements и тут начинает играть plan_cache_mode: - generic: lock на каждую партицию и на 1 индекс в этой партиции нужный для запроса - custom: все партиции и все индексы. Это потому что они нужны для планирования, которое случается при каждом execute

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
96
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Вопрос вроде правильно, но что надо сделать, чтоб текст был виден нормально ? ghci> TE.decodeUtf8 $ TE.encodeUtf8 "test - проба" "test - \1087\1088\1086\1073\1072"
Fedor
7
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
5
Карта сайта