Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ITL waits / 25 сообщений из 26, страница 1 из 2
13.07.2018, 11:45
    #39673605
х.з.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
что-то голова не варит уже, поэтому спрошу здесь.

AWR показывает большое число ожиданий "ITL waits" на сегменты индекса. Подампил крайние справа блоки этого индекса и везде выделено 169 слотов (половина блока).

У нас конечно высокая конкуренция, но не более 80 сессий в параллели. Ну край 100. Откуда могут быть ожидания?

или я чего-то кардинально не понимаю?
...
Рейтинг: 0 / 0
13.07.2018, 12:05
    #39673618
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
х.з.Подампил крайние справа блоки этого индекса и везде выделено 169 слотов (половина блока).
У нас конечно высокая конкуренция, но не более 80 сессий в параллели. Ну край 100.
...
Рейтинг: 0 / 0
13.07.2018, 12:06
    #39673619
jan2ary
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
х.з.,

А версия какая?
...
Рейтинг: 0 / 0
13.07.2018, 13:17
    #39673693
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Оракл не обязан проверять каждый слот свободен он или нет , особенно если он еще и помечен как грязносброшенный.
Он либо создаст новый если есть место, либо выброчно тыкнется в несколько (или несколько десятков, хз) , если не напорется на свободный, то немножко поспит и начнет заново.
Поэтому при интенсивной нагрузке наличие свободных слотов не гарантирует отсутствие ITL waits
...
Рейтинг: 0 / 0
13.07.2018, 14:30
    #39673743
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
DВАвыброчно тыкнется в несколько (или несколько десятков, хз) , если не напорется на свободный, то немножко поспит и начнет заново.
Поэтому при интенсивной нагрузке наличие свободных слотов не гарантирует отсутствие ITL waits
Эээ... Наташ, пруф не затруднит?
...
Рейтинг: 0 / 0
13.07.2018, 14:48
    #39673751
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
...
Рейтинг: 0 / 0
13.07.2018, 14:48
    #39673752
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
теоретический вопрос: неизбежны ли Deadlock'и?
Это с участием Наташи (еще маленькой )
Но где-то был еще топик, где (опять же Ааз, но вроде как с семинара Льюиса) отмечал, что пройдя до конца списка ITL, на последнем процесс засыпает уже без таймаута, а просто навсегда, ждет когда освободится именно этот слот
...
Рейтинг: 0 / 0
13.07.2018, 14:50
    #39673753
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
...
Рейтинг: 0 / 0
13.07.2018, 14:58
    #39673757
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Вячеслав ЛюбомудровО, спасибоГуглу. ITL waits - первая страница.
...
Рейтинг: 0 / 0
13.07.2018, 15:05
    #39673761
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Да оно не сильно интересно, пока это не твоя проблема
Типо примерно расклад знаешь, а как оно по разным версиям в частностях -- за всем и не уследишь (пока сам не наступишь)
...
Рейтинг: 0 / 0
13.07.2018, 15:07
    #39673763
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Ну и ТС сразу -- перестроить все сегменты индекса (например в ONLINE) есть возможность?
Может и поможет...
...
Рейтинг: 0 / 0
13.07.2018, 15:27
    #39673772
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
ElicВячеслав ЛюбомудровО, спасибоГуглу. ITL waits - первая страница.
Вот и я о том...
Если только Ната, конечно, не восприняла конструкцию вида "it probes, round-robin, the available slots" как
DВАвыброчно тыкнется в несколько
что очень далеко от истины, поскольку алгоритм Round-Robin - "Робин, слоняющийся по кругу" - это просто закольцованный полный перебор. Который Oracle дооснастил алгоритмами искусственного снижения конкуренции за сам список ITL при сверх-высокой (нерасчетной) конкуренции за блок.
...
Рейтинг: 0 / 0
13.07.2018, 15:37
    #39673777
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Не совсем так -- при куче пользователей для каждого из них выбор является случайным
...
Рейтинг: 0 / 0
13.07.2018, 15:48
    #39673782
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Ната уже давно подзабыла подробности :)
так что не буду спорить, тем более что за изменениями в версиях фиг уследишь )
...
Рейтинг: 0 / 0
13.07.2018, 15:54
    #39673786
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
выборочно тыкнется в несколько - это до засыпания.
где-то у меня отложилось что не на первом же занятом заснет
а откуда дровишки - уже не вспомню )
...
Рейтинг: 0 / 0
13.07.2018, 16:08
    #39673797
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
DВАвыборочно тыкнется в несколько - это до засыпания.
где-то у меня отложилось что не на первом же занятом заснет
а откуда дровишки - уже не вспомню )
Нат, оно ПЕРЕБЕРЕТ ВСЕ слоты ITL в блоке (а не потыкается), не найдя среди них свободного - попробует выделить новый, не сможет - пойдет ПЕРЕБИРАТЬ ITL еще раз, но уже делая паузы (конкретное поведение на этом этапе зависит от версии), в конце концов - встанет в очередь к последнему слоту ITL, на котором сериализуются (отстаиваются) неудачники в ожидании снижения нагрузки.
Однако чтобы это случилось - активных транзакций в блок должно одновременно прийти больше, чем можно разместить слотов ITL.
А это зависит от наличия свободного места в блоке и числа транзакций.
...
Рейтинг: 0 / 0
13.07.2018, 16:13
    #39673800
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Вот тут-то и проявляется задница со 169 (максимум для 8k) слотами
Особенно, если гарантировано (см. пост от Elic) никогда не было больше 20 одновременных транзакций
Т.е. теория как-то с практикой не очень бьется
...
Рейтинг: 0 / 0
13.07.2018, 17:15
    #39673840
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Вячеслав ЛюбомудровВот тут-то и проявляется задница со 169 (максимум для 8k) слотами
Особенно, если гарантировано (см. пост от Elic) никогда не было больше 20 одновременных транзакций
Т.е. теория как-то с практикой не очень бьется
1. 169 слотов - это максимум теоретический. Фактический максимум зависит от свободного места.
2. У события есть параметры. Они, если мне не изменяет склероз, позволяют (p2,p3) определить конкретный блок таблицы или индекса, задампить его и посмотреть предметно.
3. Утверждение "никогда не было более 20 одновременно" - суть оценочное суждение, не подкрепленное фактически.
Транзакции могли быть долгими, а могли короткие столпиться в блоке индекса и не быть замеченными, к разбору полетов остались только следы "очереди неудачников".

Есть шанс, что дамп конкретного блока, на котором случилось ненормально долгое ожидание ITL, может позволить поднять конкретные транзакции, одновременно посетившие блок - если, конечно, снять дамп до того, как проблема саморассосется и новые транзакции перепишут ITL под себя.
А логмайнер поможет определить что именно происходило.
Это если интересны детали.

Если детали не очень интересны - то можно просто перестроить индекс со скорректированными значениями pctfree и initrans.
...
Рейтинг: 0 / 0
14.07.2018, 09:42
    #39673948
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
andrey_anonymousНат, оно ПЕРЕБЕРЕТ ВСЕ слоты ITL в блоке (а не потыкается), не найдя среди них свободного - попробует выделить новый, не сможет - пойдет ПЕРЕБИРАТЬ ITL еще раз, но уже делая паузы (конкретное поведение на этом этапе зависит от версии), в конце концов - встанет в очередь к последнему слоту ITL, на котором сериализуются (отстаиваются) неудачники в ожидании снижения нагрузки.
Однако чтобы это случилось - активных транзакций в блок должно одновременно прийти больше, чем можно разместить слотов ITL.
А это зависит от наличия свободного места в блоке и числа транзакций.Простейший тест
Код: 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.
29.
create table qz_tab as select level as n from dual connect by level <= 170;
select count(distinct dbms_rowid.rowid_block_number(rowid)) from qz_tab;
set timing on serverout on
declare
  i int := 0;
  procedure Lck
  is
    pragma autonomous_transaction;
    m int;
    t timestamp := systimestamp;
  begin
    i := i + 1;
    select n into m from qz_tab where n = i for update nowait;
    if systimestamp - t > interval '0.5' second then
      dbms_output.put_line(i||') '||(systimestamp - t));
    end if;
    Lck;
  end Lck;
begin
  Lck;
exception
  when others then
    dbms_output.put_line('i='||i);
    raise;
end;
/
/
/
drop table qz_tab;

подтверждает это на версиях начиная с 10gR2 как минимум:
Код: 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.
29.
30.
COUNT(DISTINCTDBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID))
---------------------------------------------------
                                                  1
i=170
declare
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
ORA-06512: at line 21


Elapsed: 00:00:00.07
i=170
declare
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
ORA-06512: at line 21


Elapsed: 00:00:00.03
i=170
declare
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
ORA-06512: at line 21


Elapsed: 00:00:00.03

...
Рейтинг: 0 / 0
16.07.2018, 04:18
    #39674292
х.з.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Какие люди почтили вниманием мою ветку!

ORACLE 12.1.0.2

Слава, началось все собственно с того, что решили поднять initrans с 25 до 50. В ожидании окна решил подампить блоки, помня про тему Elic-а ожидал там уже увидеть что-то около 60 слотов. А тут максимум.

То есть ребилдить все равно. Индекс станет меньше. А с края как я понимаю он в скорости все равно разрастется до 169 слотов. ?
...
Рейтинг: 0 / 0
16.07.2018, 05:37
    #39674302
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
Разрастется только при определенных условиях, а затем будет наследоваться при делении
...
Рейтинг: 0 / 0
16.07.2018, 06:57
    #39674315
х.з.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
andrey_anonymous можно просто перестроить индекс со скорректированными значениями pctfree
думал про вариант:

1. перестраиваю индекс с pctfree 0.
2. меняя pctfree на 99

с учетом того что индекс только по дате (значений все равно в блок набъется дофига) - весьма сомнительная идея. кроме этого индекс придется постоянно ребилдить чтобы не распухал.
...
Рейтинг: 0 / 0
16.07.2018, 07:46
    #39674322
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
х.з.То есть ребилдить все равно. Индекс станет меньше. А с края как я понимаю он в скорости все равно разрастется до 169 слотов. ?reverse не предлагать?
...
Рейтинг: 0 / 0
16.07.2018, 07:50
    #39674324
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
pctfree для индекса действует только на момент по/перестроения
...
Рейтинг: 0 / 0
16.07.2018, 08:43
    #39674331
х.з.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ITL waits
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ITL waits / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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