|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
Есть java приложение, дамп потоков которого показывает, что дольше всего потоки проводят времени на коммите: oracle.jdbc.driver.PhysicalConnection.commit В транзакции выполняется несколько insert-ов, update и судя по трейсу все они выполняются достаточно быстро (2-8мс). Значения c, e, ela тоже не высокие и все вроде бы красиво и бьется, но вот сколько выполнялся commit в trace не отраженно(или я не понимаю как искать). Приведу вырезку trace с коммитом : ... CLOSE #140:C=11, e=11, dep=0, type=1, tim=25068196605408 XCTEND rlbk=0, rd_only=0, tim=25068196605446 WAIT #0: name='log file sync' ela= 596 buffer#=34556 sync scn=105513015 p3=0 obj#=-1 tim=25068196606411 WAIT #0: name='SQL*Net message to client' ela= 1 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=25068196606470 .... Пробовал читать Кэри Милсапа, форум, но так и не разобрался как найти продолжительность выполнения коммита. Верно ли утверждение commit_duration(mks)= 25068196605446 - 25068196605408 = 38mks ? Но с точки зрения Java-приложения длительность коммит-а исчисляется десятками мс. Прошу подсказать. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2021, 14:56 |
|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
serg_777777 Верно ли утверждение commit_duration(mks)= 25068196605446 - 25068196605408 = 38mks ? Это всё коммит Код: plsql 1. 2. 3.
Первая запись это конец транзакции, просигналили LGWR про commit, затем сессия ждёт, когда LGWR запишет всё на диск и sync destinations, это ('log file sync') обычно и считается временем коммита - 596 us затем сессия ждёт когда ответ для клиента запишется в tcp buffer - 1 us Сюда не входит сетевое время. Если в приложении до и после коммита исключительно датабазные вызовы, то измерив 'SQL*Net message from client' до и после коммита можно примерно понять сколько времени этот round trip занимает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2021, 15:54 |
|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
А еще интересно, как в трейсе определить был ли коммит распределенной транзакции (2-фазный) и в качестве кого выступала данная сессия ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2021, 16:10 |
|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
Alexander Anokhin [/src] Первая запись это конец транзакции, просигналили LGWR про commit, затем сессия ждёт, когда LGWR запишет всё на диск и sync destinations, это ('log file sync') обычно и считается временем коммита - 596 us на всякий случай уточню :) Я правильно понимаю, что коммит целиком, с точки зрения Oracle (без сетевых расходов в виде пересылок и т.п.), занял 596+1us(мкс) ? Следующая строка, которую я не указал: WAIT #0: name='SQL*Net message from client' ela= 77412 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=25068196683904 уже к этому коммиту не относится же, ведь это фактически следующий вывоз. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2021, 16:35 |
|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
serg_777777 Я правильно понимаю, что коммит целиком, с точки зрения Oracle (без сетевых расходов в виде пересылок и т.п.), занял 596+1us(мкс) ? Выше я сказал "это всё коммит", не совсем верно. С точки зрения базы данных коммит занял 596 us. С точки зрения приложения в коммит на стороне базы можно включить 'SQL*Net message to client' 1 us и network roundtrip. serg_777777 Следующая строка, которую я не указал: WAIT #0: name='SQL*Net message from client' ela= 77412 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=25068196683904 уже к этому коммиту не относится же, ведь это фактически следующий вывоз. Верно? Это время ожидания от момента когда данные отправились к клиенту, до следующего вызова. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2021, 17:07 |
|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
Можно посмотреть на Java код с показаниями времени + соответствующий sql trace целиком? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 15:08 |
|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
serg_777777 Есть java приложение, дамп потоков которого показывает, что дольше всего потоки проводят времени на коммите Прошу подсказать. Спасибо. Подсказка: COMMIT WRITE NOWAIT ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 22:21 |
|
Как в trace понять длительность commit-а
|
|||
---|---|---|---|
#18+
andrey_anonymous serg_777777 Есть java приложение, дамп потоков которого показывает, что дольше всего потоки проводят времени на коммите Прошу подсказать. Спасибо. Подсказка: COMMIT WRITE NOWAIT Но лучше так не делать, а разобраться почему "дольше всего потоки проводят времени на коммите" и устранить проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 18:24 |
|
|
start [/forum/topic.php?fid=52&fpage=25&tid=1880446]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
3ms |
others: | 257ms |
total: | 374ms |
0 / 0 |