|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
Приветствую! Есть таблица: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
При формировании пользователем заказа в таблицу вставляется ID пользователя и набор артикулов. После формирования идет запрос на удаление: Код: plsql 1. 2. 3. 4.
или Код: plsql 1. 2. 3. 4.
В таблице бывает 3-15 тыс записей. Обычно удаление выполняется моментально, но иногда зависает у всех пользователей одновременно на ожиданиях: db file sequential read или enq: TX - row lock contention Приходится собирать статистику по таблице и перезапускать приложение. Как можно исправить ситуацию? (Oracle 11g, OraLin7, SSD пользователей около 200) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 15:05 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 15:12 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
Спасибо, прочитал. Ответа "что делать" не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 15:26 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
lYY Спасибо, прочитал. Ответа "что делать" не нашел. Попытка чистить за всеми умершими из всех живых сессий не вполне понятна. У Вас постоянно отваливаются процессы, оставляя хлам в MAXVFILTER_CARD? Если ванговать, то Ваши 200 сессий кидаются ажиотажно толпиться друг за другом в попытке удалить одну и ту же запись при появлении мусора отвалившейся сессии, что не очень разумно. Замените прямой delete на delete в цикле по select for update skip locked - должно полегчать. Другой подход - подчистку проводить джобиком, что также избавит от хлопот. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 16:15 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
lYY Ответа "что делать" не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 16:16 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
oragraf lYY Ответа "что делать" не нашел. А когда 500 сессий столпятся что ТС будет делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 16:19 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
oragraf lYY Ответа "что делать" не нашел. Я увеличил, не помогло. Вопрос - на сколько увеличивать? Как посчитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 16:41 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
andrey_anonymous lYY Спасибо, прочитал. Ответа "что делать" не нашел. Попытка чистить за всеми умершими из всех живых сессий не вполне понятна. У Вас постоянно отваливаются процессы, оставляя хлам в MAXVFILTER_CARD? Если ванговать, то Ваши 200 сессий кидаются ажиотажно толпиться друг за другом в попытке удалить одну и ту же запись при появлении мусора отвалившейся сессии, что не очень разумно. Замените прямой delete на delete в цикле по select for update skip locked - должно полегчать. Другой подход - подчистку проводить джобиком, что также избавит от хлопот. Спасибо, скинул программистам. Будем пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 16:49 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
lYY oragraf пропущено... initrans увеличить же, ну Я увеличил, не помогло. Вопрос - на сколько увеличивать? Как посчитать? Без соответствующего pctfree бесполезно :) И эффект будет (если будет) только на вновь размещенных блоках данных, уже размещенным до полного освобождения без разницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 17:08 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
andrey_anonymous Без соответствующего pctfree бесполезно :) Как бы нет, они оба влияют. И пр одинаковом pctfree большее initrans позволит разместиться большему числу транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 17:33 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
andrey_anonymous Насколько? До 200?А когда 500 сессий столпятся что ТС будет делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 18:19 |
|
Зависает запрос delete (enq: TX - row lock contention)
|
|||
---|---|---|---|
#18+
Вообще-то при нехватке ITL более другое ожидание А вот просто COMMIT говорить не пробовал? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2020, 03:58 |
|
|
start [/forum/topic.php?fid=52&msg=40023404&tid=1880648]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 460ms |
0 / 0 |