powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / enq: TX - contention на обычных селектах
25 сообщений из 26, страница 1 из 2
enq: TX - contention на обычных селектах
    #39803296
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
На базе ежедневно на определенной части операций начинают массово лезть события типа enq: TX - contention.


ХЗ насколько это важно, но достоверно известно, что сессия блокер находится в ожидании либо SQL*Net message from dblink, либо log file sync

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as (
SELECT /*+materialize no_merge*/sample_id,event,count(1) cnt,ash.blocking_session
FROM   dba_hist_active_sess_history ash
where  ash.BLOCKING_SESSION is not null
and    event like 'enq: TX - contention' 
and    ash.sample_time between to_date('17.04.2019 22:00:00','dd.mm.yyyy hh24:mi:ss') and to_date('17.04.2019 23:30:00','dd.mm.yyyy hh24:mi:ss') 
group by sample_id,event,ash.blocking_session
having count(1)>100
order by 3 desc)
SELECT cnt,ash.session_id,ash.sample_id,ash.blocking_session,ash.sql_id,ash.sql_opname,ash.event,p1,p2,p3 
FROM dba_hist_active_sess_history ash,t 
where ash.session_id = t.blocking_session and ash.sample_id = t.sample_id 



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CNT	SID	SAMP	BL_SID	SQL_ID          SQL_OPNAME	EVENT	        P1	P2	        P3
118	863	296839	526	8aka3hasux4gd	CALL METHOD	log file sync	21058	4043504339	0
103	843	296829	526	8aka3hasux4gd	CALL METHOD	log file sync	41507	4043382554	0
123	1518	296739	526	8aka3hasux4gd	CALL METHOD	log file sync	24046	4042219908	0
108	405	296629	526	8aka3hasux4gd	CALL METHOD	log file sync	21522	4040833824	0
102	2001	296599	526	8aka3hasux4gd	CALL METHOD	log file sync	40055	4040494515	0
102	8	297379	526	8aka3hasux4gd	CALL METHOD	log file sync	8590	4050472267	0
121	1287	297319	526	8aka3hasux4gd	CALL METHOD	log file sync	47657	4049694040	0
102	844	297199	526	8aka3hasux4gd	CALL METHOD	log file sync	56417	4048153707	0
124	1244	297119	526	8aka3hasux4gd	CALL METHOD	log file sync	4595	4047110754	0
137	661	297049		8aka3hasux4gd	CALL METHOD	SQL*Net message from dblink	0	1	0
114	1515	297039	526	8aka3hasux4gd	CALL METHOD	log file sync	35745	4046076653	0
104	1583	297869	526	8aka3hasux4gd	CALL METHOD	log file sync	22331	4056908967	0
113	157	297789	526	8aka3hasux4gd	CALL METHOD	log file sync	29340	4055881093	0
116	23	297639	526	8aka3hasux4gd	CALL METHOD	log file sync	29479	4053901768	0
120	1306	297569	526	8aka3hasux4gd	CALL METHOD	log file sync	7765	4053003260	0
101	1102	298409		8aka3hasux4gd	CALL METHOD	SQL*Net message from dblink	0	1	0
110	850	298399	526	8aka3hasux4gd	CALL METHOD	log file sync	13426	4063318543	0
131	1412	298279		8aka3hasux4gd	CALL METHOD	SQL*Net message from dblink	0	1	0
127	763	297989		8aka3hasux4gd	CALL METHOD	SQL*Net message from dblink	0	1	0
114	1709	297949		8aka3hasux4gd	CALL METHOD	SQL*Net message from dblink	0	1	0
101	1563	298779	526	8aka3hasux4gd	CALL METHOD	log file sync	19615	4067668255	0
103	1222	298589	526	8aka3hasux4gd	CALL METHOD	log file sync	38974	4065394736	0

Есть догадки, что проблема связана с использованием DBLINKов.
Подскажите в какую сторону копать, может кто сталкивался с подобным?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803303
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
feagor,

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT * FROM v$version
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE	11.2.0.4.0	Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803311
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
feagor,

в момент данных событий крутятся многопоточно однотипные операции. т.е потоки блокируют друг друга
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803352
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT ... FOR UPDATE ?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803368
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

В первую очередь проверяли, такого рода запросы отсутствуют во время проблем отсутствуют. А были бы - скорее всего вызывали ENQ - TX Row lock contention из APPLICATION
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803369
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего не поняла..
какая разница, чем занята блокирующая сессия?
ты покажи что делают те, что ожидают блокировку
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803371
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВА,

делают обычные селекты к таблицам
топ 1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT
        A.VALUE
    FROM
        table1 M
        ,table2 A
    WHERE
        M.DEP_ID = A.DEP_ID
        AND M.ORD_ID = A.PAY_ID
        AND M.MAINFL = '1'
        AND M.ID = : B2
        AND A.ATTR = TO_NUMBER (
            : B1
        )
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803375
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВА,
топ 2
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT
        ID
        ,NJRN
    FROM
        table3
    WHERE
        TRA_ID = : B1


топ3
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
        COUNT (*)
    FROM
        table4 T
    WHERE
        T.ID = : B2
        AND T.NORD = : B1
        AND T.SDOK <> 0
        AND package.fucntion (
            T.DEP_ID
            ,T.ACC_ID
        ) = 1
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803388
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagor,

Выложите ashdump или хотя бы ash report. Вы проверили объекты на которых это ожидание возникает? Не какой-нибудь аудит или прочая рекурсивная фигня?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803395
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А распределенные транзакции есть ?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803405
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

проверь почту
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803406
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВА,

да, есть
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803434
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagor,

ага, вижу, DBA сразу угадала - ваш случай: https://nigelnoble.wordpress.com/2013/07/12/enq-tx-contention-on-select-with-a-large-buffer-cache-and-2pc/
Что у вас со стендбаем? Он далеко? В общем, оптимизируйте распределенные транзакции и решайте проблему с медленным log file sync
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803440
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,
видел эту статью.
в статье проблема была в лаге между австралией британией в 200-300мс,если я правильно всё понял, у нас же сервера стоят рядышком в одной локалке
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803461
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, из статьи следует вывод, что commit_point_strength надо выставлять на БД с наибольшим размером кеша (точнее, соотношения испачканных блоков к размеру кеша)?
Ну, типо, т.к. размер кеша больше, из 10% списка испачканных буферов фактически большее количество остается "грязными" в памяти -- т.е. к ним применяется commit-cleanout
А т.к. узел с наибольшим commit_point_strength выполняет коммит первым и, вследствии этого, никогда не выступает в виде "сомнительной распределенной транзакции", то и блокировать никого не будет

Или надо тупо уменьшать кеш для всех?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803482
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagor,

не столько важно насколько "рядышком", важно насколько быстро двухфазный коммит проходит :) а у вас там еще и перегрузка по cpu
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803487
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вячеслав Любомудров,

мне в принципе не кажется надежным играть с этим, т.к. слишком много факторов и даже кол-во изменяемых данных на разных базах часто может "плавать"
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803492
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

Кстати, в то время, как на локальной базе нагрузка составляет более 100активных сессий на удаленной базе, в это время среднее количество активных сессий не более 10(нагрузка практически отсутствует).
Так и не понял суть параметра commit_point_strength.
но бурлесон пишет
Hence, you will want the commit_point_strength to be the highest on the database instance that contains the most data.
Сейчас на обоих базах стоит значение 1.
Может в качестве эксперимента попробовать его увеличить на основной базе?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803499
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно, смысл этого параметра: чем критичней данный -- тем выше
Ибо с максимальным значением данная нода становится координатором (там другая должность на самом деле) транзакции и никогда не оставит данные (на этой ноде) в состоянии "in-doubt transaction", т.е. блокированными для чтения.
Но, естественно, чем больше времени занимает ее локальный коммит (включая тот самый commit-cleanout), тем дольше в подвешенном состоянии находятся остальные узлы.
Но их время "подвешенного" состояния еще определяется и скоростью выполнения коммита (и, опять же commit-cleanout, оказывается, это существенно ) на всех остальных узлах

Как-то так
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803501
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

а если на обоих базах значение одинаковое и равно =1, кто будет координатором транзакции (там другая должность на самом деле)?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803502
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько помню, тот где сессия изменяет изменяет "чужие" (по линку) данные. Свои при этом может и не менять, но она все равно имеет открытую RW транзакцию
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39803505
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

То есть если db1 вызывает по линку процедуру в db2, которая в db2(локально) меняет данные, то управлять транзакцией будет db1?
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39804276
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для потомков

Если db1 вызывает по линку процедуру в db2, которая в db2(локально) меняет данные, то управлять транзакцией будет db1?
Управляла по всей видимости DB2.
Блокировки на чтение enq: TX - contention шли в DB1, как показано в первом сообщении.
После выставления параметра commit_point_strength на DB1 = 2(было на обоих = 1). События сменили место дислокации с DB1 на DB2

(как тут загруженные картинки нормально прикладывать)

В итоге вместо блокировок по 100+ активных сессий на основной базе имеем блокировки на 2,5 активных сессий на вспомогательной базе.
Таким образом проблема решена.

Огромное спасибо Xtender, Вячеслав Любомудров, DBA
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39804356
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagor,

одно "но" - если изменится пропорция нагрузки или кол-ва изменений, то вы опять попадете в ту же ситуацию, поэтому в таких случаях правильнее всего дробить операции на меньшие
...
Рейтинг: 0 / 0
enq: TX - contention на обычных селектах
    #39804524
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

Да, я вроде понимаю этот момент. Но такого непосредственно с 2 этими базами на практике быть не может, одна основная с 54 ядрами, вторая можно сказать "вспомогательная", с 8 ядрами. Нагрузки более 15 активных сессий на db2 не бывает.

Конечно, будем наблюдать за поведением. Но пока все выглядит так, что использование параметра решило нашу проблему.

Тюнить сами транзакции - это конечно дело доброе, но крайне трудозатратное, и не всегда реализуемое. Проблемы производительности у нас чаще всего в бизнес-логике операций, а ответственные далеко не всегда готовы пересматривать эту логику в угоду производительности
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / enq: TX - contention на обычных селектах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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