powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
21 сообщений из 21, страница 1 из 1
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791510
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
В AWR в разделе "Top SQL with Top Events" в топе запрос вида
INSERT INTO схема.таблица (список колонок) VALUES(сиквенс.NEXTVAL, остальные значения) RETURNING ID INTO :O0
при этом у запроса
Executions = 2560
Event = row cache lock
Top Row Source = SEQUENCE
т.е. выполнений немного за 15 минут.
У сиквенса
ORDER_FLAG = N
CACHE_SIZE = 0
но нулевой кеш не должен был стать помехой при таком небольшом количестве выполнений, мне кажется (все равно его увеличу).
Т.е. с одной стороны AWR говорит, что сиквенс стал узким местом, а с другой стороны в этом сомневаюсь.
В разделе "Dictionary Cache Stats" dc_sequences был примерно в 2 раза больше обычного, зато dc_rollback_segments - в десятки раз больше.
Подскажите, пожалуйста, направление, в котором разбираться.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791518
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907в этом сомневаюсьИ что ты ожидаешь в качестве ответа? Для форума априори выводы AWR авторитетнее твоих сомнений.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791537
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Event = row cache lock, потому что если у сиквенса CACHE_SIZE = 0, то при каждом получении nextval происходит "row cache lock" для этого сиквенса?
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791550
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907при каждом получении nextval происходитПри каждом nextval nocache происходит апдейт и коммит.
140907Event = row cache lockПочему оно тебя так волнует?
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791589
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907INSERT INTO схема.таблица (список колонок) VALUES(сиквенс.NEXTVAL, остальные значения) RETURNING ID INTO :O0
...
т.е. выполнений немного за 15 минут.

Поправка: немного insert.
Про "сиквенс.NEXTVAL" этого однозначно сказать нельзя - вставка может выполняться пакетно и последовательность будет дергаться для каждой строки.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791601
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-140907Event = row cache lockПочему оно тебя так волнует?
Думал, что выделение nextval может приводить к событию " enq: SQ - contention ", т.е. событие "row cache lock" говорит о чем-то другом.
Т.е. если кеш равен нулю, то частый nextval приводит к "row cache lock", а если не равен нулю (но недостаточен), то к "enq: SQ - contention"?
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791638
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousПро "сиквенс.NEXTVAL" этого однозначно сказать нельзя - вставка может выполняться пакетно и последовательность будет дергаться для каждой строки.
Не понял. В AWR указывается реальное количество произошедших инсертов, и для каждого инсерта дергается сиквенс, т.е. 2560 инсертов - 2560 дерганий сиквенса?
В моем случае это инсерт одной строки за транзакцию (правда, коммит происходит намного позже этого инсерта, но ведь сиквенс будет освобожден сразу после получения nextval, его блокировка не привязана к этому коммиту).
Т.е. Оракл считает, что 2560 дерганий nocache-сиквенса за 15 минут (т.е. примерно 3 раза в секунду) - это слишком часто?
Просто раньше этот сиквенс в топе проблем не появлялся.

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE 12.1.0.2.0 Production
TNS for IBM/AIX RISC System/6000: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791660
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907Т.е. если кеш равен нулю, то частый nextval приводит к "row cache lock"Нет оснований для домыслов.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791662
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907andrey_anonymousПро "сиквенс.NEXTVAL" этого однозначно сказать нельзя - вставка может выполняться пакетно и последовательность будет дергаться для каждой строки.
Не понял. В AWR указывается реальное количество произошедших инсертов, и для каждого инсерта дергается сиквенс, т.е. 2560 инсертов - 2560 дерганий сиквенса?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSERT INTO DEVELOPER.DROPME_TESTINS(A)
VALUES
(:B1 )


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.01       0.02          0         39        182       10000
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.01       0.02          0         39        182       10000
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791675
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907Оракл считает, что 2560 дерганий nocache-сиквенса за 15 минут (т.е. примерно 3 раза в секунду) - это слишком часто?
Тут сразу две логических ошибки.
1. "2560 дерганий ... за 15 минут" исходит из предположения, что все эти "дергания" происходили равномерно на интервале в 15 минут, что само по себе не факт - все 2560 вызовов могли столпиться в одной секунде из указанного интервала.
2. Oracle ничего не "считает".
Если требуется эксклюзивный доступ к ресурсу, то такой доступ запрашивается.
В процессе ожидания доступа фиксируется соответствующее событие ожидания.
Дальше для Вашего удобства строится отчет.
2560 вызовов за 15 минут - много это или мало?
Зависит от уровня конкуренции, располагаемых ресурсов, требований к системе и оценивается администратором, а не сервером.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39791909
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за инфо.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793028
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим, я у сиквенса сделаю CACHE_SIZE = 1000. Эта тысяча номеров будет храниться в SGA?
Стоит ли беспокоиться о том, что кешированные значения сиквенсов занимают оперативную память БД, или их объем настолько мал, что не приведет к вытеснению чего-то полезного?
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793039
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907Эта тысяча номеров будет храниться в SGA?Зачем тысяча?
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793057
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1000 - это как пример, хотя если за 147 минут значение LAST_NUMBER увеличилось на 9 102 200 (т.е. в среднем значение запрашивалось 1031 раз в секунду), то в этом случае тысячи даже будет мало?
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793074
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1409071000 - это как примерВопрос был не про выбор размера кеша, а зачем хранить 1000 номеров. Сиквенс это одна строчка в таблице seq$.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793101
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907Стоит ли беспокоиться о том, что кешированные значения сиквенсов занимают оперативную память БД
Все будет хорошо.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793131
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CACHE
Specify how many values of the sequence the database preallocates and keeps in memory for faster access.
Это из документации Оракла.
Я понял это как хранение массива значений в памяти.
Наверно, в памяти хранится только текущий LAST_NUMBER и порог, и если LAST_NUMBER > порога, то происходит обращение к сиквенсу за новым порогом (с изменением сиквенса).
Это все теория, она интересна, но мне главное, чтобы сотня сиквенсов с CACHE_SIZE = 1000 (утрирую) не стала занимать слишком много памяти.
Поверю andrey_anonymous.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793177
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1409071в среднем значение запрашивалось 1031 раз в секундуили 10 раз в секунду.
140907Поверюопровергнуть гипотезу о выделении памяти под каждый номер дело полминуты.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793220
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-или 10 раз в секунду.
9102200/147/60=1031. Или тут еще какая-то хитрость?

-2-опровергнуть гипотезу о выделении памяти под каждый номер дело полминуты.
Если у вас есть запрос, поделитесь, пожалуйста.
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793241
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907-2-опровергнуть гипотезу о выделении памяти под каждый номер дело полминуты.Если у вас есть запрос, поделитесь, пожалуйста.Чудак, ты сам не в состоянии сделать петакэш?
...
Рейтинг: 0 / 0
Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
    #39793308
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,
-2-,
Похоже, в памяти не хранятся.
Код: 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.
31.
32.
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';
create sequence test_seq start with 1 cache 10000000000000000000;
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';
select 'nextval = '||test_seq.nextval from dual;
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';
select 'nextval = '||test_seq.nextval from dual;
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';
create sequence test_seq start with 1 cache 10000000000000000000;
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';
select 'nextval = '||test_seq.nextval from dual;
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';
select 'nextval = '||test_seq.nextval from dual;
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';
drop sequence test_seq;
select 'shared pool free memory = '||bytes/1024/1024||' MB' from v$sgastat where name = 'free memory' and pool = 'shared pool';

shared pool free memory = 373.56569671630859375 MB
Sequence created.
shared pool free memory = 373.39078521728515625 MB
nextval = 1
shared pool free memory = 373.36498260498046875 MB
nextval = 2
shared pool free memory = 373.36498260498046875 MB
create sequence test_seq start with 1 cache 10000000000000000000
ORA-00955: name is already used by an existing object
shared pool free memory = 373.36498260498046875 MB
nextval = 10000000000000000001
shared pool free memory = 373.36498260498046875 MB
nextval = 10000000000000000002
shared pool free memory = 373.36498260498046875 MB
Sequence dropped.
shared pool free memory = 373.06272125244140625 MB
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Event = row cache lock, Top Row Source = SEQUENCE, Executions = 2560
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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