Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Есть парочку запросов 1.Блокированный 1.1 update asgufmsg set status = 1, sended = now(), modified = now(), rcount = rcount + 1 where id = $1 1.2 select s.id, s.message, s.messageId from asgufmsg s join asgufmsg r on (s.servicenumber = r.servicenumber and r.type = 1 and r.status = 2 and r.asgufcode = 0) where s.status = 0 and s.type = 2 and (select count(*) from asgufmsg where servicenumber = s.servicenumber and type = 2 and (asgufcode <> 0 or asgufcode is null) and created < s.created) = 0 order by s.created asc limit 500 2.Блокирующий UPDATE asgufmsg set asgufcode = $1, asguftext = $2, modified = now(), status = $3 where servicenumber = $4 and messageId = $5 На момент моей проверки блокирующий запрос висел со старта порядка 6 минут, они достаточно часто проливаются и меняют статусы в этой таблице. Я пока осваиваюсь в Postgres И после целодневного вчерашнего сёрфа по моим вопросам,всё таки решил обратиться к знающим людям: 1.Как посмотреть список выполняемых запросов к таблице asgufmsg 2.Могу ли я как то узнать из базы что скрывается за аргументами(параметрами) под $1 $2 $3 $3 итд (тоесть можно ли сделать выборку всех используемых аргументов базой или конкретным запросом) 3.Как лучше всего устранить взаимную блокировку и вообще что посоветуете на эту тему поизучать.Спасибо большое заранее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 13:39 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Strippett, 1) поставьте экстеншн pg_stat_statements либо включите лог медленных запросов в конфиге (log_min_duration_statement) 2) можно увидеть в логах, если запрос завершился и он туда попал 3) по данному сообщению не ясно, взаимная блокировка это или нет. взаимные разрешаются сами через секунду - один из запросов отвалится с ошибкой deadlock detected. стоит разобраться, почему запрос висел 6 минут: может не хватает индекса, может он слишком много строк обновляет за раз, может ему другие транзакции мешают. по выводам из системных вью pg_stat_activity (поле waiting), pg_locks (поле granted) можно с этим разобраться в момент проблемы. рекомендуется транзакции делать как можно короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 15:05 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Alexius,Спасибо за комментарий но как я выяснил и предполагаю блокировки возникают не постоянно а периодически,где-то раз в 10-12 минут и судя по всему это связано с одновременным доступом нескольких скриптов к одной и той же строке и её апдейт либо селект. Я вот задумался как до для разных скриптов можно разграничить доступ к таблице или приорит изацию настроить как-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 09:39 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Добавил пример лока,он возникает регулярно И во время него скрипт повисает на минут 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 12:33 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
При этом по плану он достаточно быстро выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 12:36 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Интересует как правильно разрешить такую блокировку?Чтобы она не возобновлялась и какой дополнительный анализ можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 14:00 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Strippett, А приложите лог в виде текста, а не XLS файла? И ещё — почему вы считаете, что что-то нехорошее происходит? В приложении задержки? В логах ошибки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 15:13 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
vyegorov,Да на уровне приложения образуются очереди из за этой задержки. locked_item waiting_duration blocked_pid blocked_query blocked_mode blocking_pid blocking_query blocking_mode transactionid 00:02:05.651379 25 091 UPDATE asgufmsg set asgufcode = $1, asguftext = $2, modified = now(), status = $3 where servicenumber = $4 and messageId = $5 ShareLock 7 856 update asgufmsg set status = 1, sended = now(), modified = now(), rcount = rcount + 1 where id = $1 ExclusiveLock вы имеете ввиду так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 15:55 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Strippett, А сколько строк обновляет запрос "UPDATE asgufmsg set asgufcode = $1, asguftext = $2, modified = now(), status = $3 where servicenumber = $4 and messageId = $5"? 6 минут для него как то много. Есть ли индекс по asgufmsg(servicenumber, messageId)? Точно ли именно запрос 6+ минут работал а не begin; fast update ушли курить на 10 минут оставив локи... commit; т.е. какое состояние было у процесса в pg_stat_activity? -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 16:00 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk,Точно этот вот скрин из баджера,записей много обрабатывает,табличка в которую он пишет весит за 20gb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 16:50 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Strippett,вот из активити кусочек тот запрос висит в wait и ожидает завершения второй транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 16:51 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Strippett,По индексу я с вами согласен ,я уже его заготовил но не думаю что в нём дело.Там есть индекс если вы в Execute Plan видели по сервайс намбер. Если планом прогонять запрос ,то получается очень быстрое выполнение.Я ещё грешу на сторону приложения. Можно ли как-то мне на уровне базы разрешать эти блокировки как-то автоматически пока не найду централизованное решение и истинную причину? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 17:05 |
|
||
|
Оптимизация и блокировки
|
|||
|---|---|---|---|
|
#18+
Strippett, Очевидно, что после быстрого UPDATE-а приложение держит транзакцию ещё несколько минут. На стороне базы, кроме как откатить транзакцию совсем, решений нет. Так что да, надо править приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 19:42 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=83&tid=1996911]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
56ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 289ms |
| total: | 453ms |

| 0 / 0 |
