powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Зависает запрос delete (enq: TX - row lock contention)
13 сообщений из 13, страница 1 из 1
Зависает запрос delete (enq: TX - row lock contention)
    #40023366
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
Приветствую!

Есть таблица:
Код: 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.
create table MAXVFILTER_CARD
(
  article VARCHAR2(10),
  audsid  NUMBER
)
  pctfree 10
  initrans 3
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  )
nologging;

create index IDX_MAXVFILTER_CARD_AUDSID on MAXVFILTER_CARD (AUDSID)
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );


При формировании пользователем заказа в таблицу вставляется ID пользователя и набор артикулов.
После формирования идет запрос на удаление:
Код: plsql
1.
2.
3.
4.
DELETE FROM MAXVFILTER_CARD T 
WHERE T.AUDSID IN 
 (SELECT F.AUDSID FROM MAXVFILTER_CARD F,V$SESSION G 
  WHERE G.AUDSID(+)=F.AUDSID AND G.AUDSID IS NULL AND F.AUDSID<>'30000000' AND F.AUDSID<>'30000001')


или
Код: plsql
1.
2.
3.
4.
DELETE FROM MAXVFILTER_CARD T 
WHERE T.AUDSID IN 
   (SELECT DISTINCT F.AUDSID FROM MAXIMIZATOR.MAXVFILTER_CARD F,V$SESSION G 
    WHERE G.AUDSID(+)=F.AUDSID AND G.AUDSID IS NULL AND F.AUDSID<>'30000000' AND F.AUDSID<>'30000001')



В таблице бывает 3-15 тыс записей.

Обычно удаление выполняется моментально, но иногда зависает у всех пользователей одновременно на ожиданиях:
db file sequential read или enq: TX - row lock contention

Приходится собирать статистику по таблице и перезапускать приложение.

Как можно исправить ситуацию?

(Oracle 11g, OraLin7, SSD пользователей около 200)
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023370
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYY,

Поиск?
5483396

orafaq
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023374
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
Спасибо, прочитал.
Ответа "что делать" не нашел.
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023401
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYY
Спасибо, прочитал.
Ответа "что делать" не нашел.

Попытка чистить за всеми умершими из всех живых сессий не вполне понятна.
У Вас постоянно отваливаются процессы, оставляя хлам в MAXVFILTER_CARD?
Если ванговать, то Ваши 200 сессий кидаются ажиотажно толпиться друг за другом в попытке удалить одну и ту же запись при появлении мусора отвалившейся сессии, что не очень разумно.
Замените прямой delete на delete в цикле по select for update skip locked - должно полегчать.
Другой подход - подчистку проводить джобиком, что также избавит от хлопот.
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023402
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYY
Ответа "что делать" не нашел.
initrans увеличить же, ну
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023404
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oragraf
lYY
Ответа "что делать" не нашел.
initrans увеличить же, ну
Насколько? До 200?
А когда 500 сессий столпятся что ТС будет делать?
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023414
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
oragraf
lYY
Ответа "что делать" не нашел.
initrans увеличить же, ну

Я увеличил, не помогло. Вопрос - на сколько увеличивать? Как посчитать?
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023416
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
andrey_anonymous
lYY
Спасибо, прочитал.
Ответа "что делать" не нашел.

Попытка чистить за всеми умершими из всех живых сессий не вполне понятна.
У Вас постоянно отваливаются процессы, оставляя хлам в MAXVFILTER_CARD?
Если ванговать, то Ваши 200 сессий кидаются ажиотажно толпиться друг за другом в попытке удалить одну и ту же запись при появлении мусора отвалившейся сессии, что не очень разумно.
Замените прямой delete на delete в цикле по select for update skip locked - должно полегчать.
Другой подход - подчистку проводить джобиком, что также избавит от хлопот.

Спасибо, скинул программистам. Будем пробовать.
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023418
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYY
oragraf
пропущено...
initrans увеличить же, ну

Я увеличил, не помогло. Вопрос - на сколько увеличивать? Как посчитать?

Без соответствующего pctfree бесполезно :)
И эффект будет (если будет) только на вновь размещенных блоках данных, уже размещенным до полного освобождения без разницы.
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023430
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous

Без соответствующего pctfree бесполезно :)

Как бы нет, они оба влияют.
И пр одинаковом pctfree большее initrans позволит разместиться большему числу транзакций.
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023446
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Насколько? До 200?А когда 500 сессий столпятся что ТС будет делать?
Я резюмировал ему ссылку, которую он не понял. А на сколько - этой инфы в явном виде я сам не встречал, пусть сам по граблям ходит
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023511
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то при нехватке ITL более другое ожидание

А вот просто COMMIT говорить не пробовал?
...
Рейтинг: 0 / 0
Зависает запрос delete (enq: TX - row lock contention)
    #40023538
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
Commit там есть.
Куда копать, я понял. Всем спасибо!
(разработчик должен поменять логику. где не поможет, буду увеличивать pctfree и initrans)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Зависает запрос delete (enq: TX - row lock contention)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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