Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Большая нагрузка на SYS.STANDART.SYSDATE / 24 сообщений из 24, страница 1 из 1
27.07.2016, 10:38:14
    #39280877
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Всем добрый день!

БД: Oracle Database EE 11.2.0.2 (OLTP)
Cистема: AIX 6

Недавно выяснилось с помощью EM, что на продуктивной БД большая нагрузка на SYS.STANDART.SYSDATE (Top PL/SQL)
В силу особенностей БД, мы действительно очень часто используем sysdate. БД очень нагружена (OLTP).
Может кто-нибудь встречался с такой проблемой? Хотелось бы услышать мнения и админов и программистов.

Спасибо.
...
Рейтинг: 0 / 0
27.07.2016, 10:43:07
    #39280883
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
в чем измеряется "нагрузка на"?Scorpion_TSNSTANDAR T
...
Рейтинг: 0 / 0
27.07.2016, 11:07:53
    #39280917
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
-2-,

Activity (%) CPU+CPU Wait - 30%

Действительно не правильно выразился. Нагрузка на процессор при использовании SYS.STANDART.SYSDATE
...
Рейтинг: 0 / 0
27.07.2016, 11:21:15
    #39280936
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Scorpion_TSN-2-,

Activity (%) CPU+CPU Wait - 30%

Действительно не правильно выразился. Нагрузка на процессор при использовании SYS.STANDART.SYSDATE
...
Рейтинг: 0 / 0
27.07.2016, 11:23:40
    #39280941
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Fogel
Activity (%) CPU+CPU Wait - 30%

Действительно не правильно выразился. Нагрузка на процессор при использовании SYS.STANDART.SYSDATE

Это не на сисдэйт нагрузка, а на кривом запросе, который занимается хардпарсингом данных при сравнении столбца даты с текущей путём вызова сисдэйт.
...
Рейтинг: 0 / 0
27.07.2016, 11:34:36
    #39280955
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
А можно по подробнее.. Если можно пример такого запроса.

Спасибо.
...
Рейтинг: 0 / 0
27.07.2016, 11:51:55
    #39280987
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Scorpion_TSNпример такого запроса.

примеров, как неправильно, можно привести много.
вам надо смотреть конкретный запрос/операцию PL/sql блока и по нему уже думать над оптимизацией.
...
Рейтинг: 0 / 0
27.07.2016, 12:47:41
    #39281095
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Просто непонятна ни мне, ни коллегам фраза "...кривом запросе, который занимается хардпарсингом данных при сравнении столбца даты с текущей путём вызова сисдэйт...."

Буквально по пунктам, что Вы имеете в виду??:

1) "хардпарсингом данных"

2) "текущей путём вызова сисдэйт"
...
Рейтинг: 0 / 0
27.07.2016, 12:49:53
    #39281100
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Можно хоть какой-то неправильный пример?
...
Рейтинг: 0 / 0
27.07.2016, 13:00:37
    #39281117
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Еще раз
Объясни, с чего ты взял что основную нагрузку вызывает SYS.STANDARD.SYSDATE?
...
Рейтинг: 0 / 0
27.07.2016, 13:41:59
    #39281178
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
В Oracle EM вижу в Top Activity

Activity (%) CPU+CPU Wait - 30%
...
Рейтинг: 0 / 0
27.07.2016, 13:48:31
    #39281189
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Остальные PL/SQL вызывают куда более меньшую нагрузку, хотя клиентами могут вызываться до 4000 раз в минуту...
...
Рейтинг: 0 / 0
27.07.2016, 14:47:30
    #39281257
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Scorpion_TSNМожно хоть какой-то неправильный пример?
пожалуйста, пример абсолютного идиотизма, который может быть по нагрузке похож на вашу ситуацию:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare
dt date;
begin
 for i in (select поле_даты from большой таблицы возвращает много-много-много-много строк) loop
 execute immediate 'update блалблабла table where '||i.поле_даты||' < sysdate';
end loop;
end;



но ваш код естественно совершенно другой.

Scorpion_TSNБуквально по пунктам, что Вы имеете в виду??:

1) "хардпарсингом данных"

2) "текущей путём вызова сисдэйт"
2 - вы исказили мою фразу, по ней - см. выше.

1. hard parse очень-очень кратко
...
Рейтинг: 0 / 0
27.07.2016, 15:01:30
    #39281279
месседжер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Fogel1. hard parse очень-очень кратко хардпарс внутри sysdate? не могу представить.
а вот то, что приложение использует пул и каждый запрос предваряет проверкой соединения получением сисдаты, причем не sql-функцией, а селектом именно сис.стандард, запросто. также напрашивается, что большинство целевых запросов также являются непрерывным пингом, типа есть что в пустой очереди или нет.
...
Рейтинг: 0 / 0
27.07.2016, 15:02:29
    #39281280
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
SYS.STANDARD.SYSDATE не вызывается в SQL при обращении к SYSDATE (если, конечно, кто-то явно его не вызывает именно как COLUMN > SYS.STANDARD.SYSDATE, но это уж совсем клиника)
Он вызывается из PL/SQL в конструкциях VAR := SYSDATE;

Но даже в этом случае -- там внутренний вызов функций ораклового ядра, поэтому заставить его как-то сильно участвовать в топе активности -- это бесконечный цикл в вызовом VAR := SYSDATE;, причем единственной активной сессией
При этом в топ скорее попадет тот самый анонимный блок или програмная единица, содержащая этот цикл

Интересно бы посмотреть, каким запросом EM определил виновника
...
Рейтинг: 0 / 0
27.07.2016, 15:07:03
    #39281284
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
FogelScorpion_TSNМожно хоть какой-то неправильный пример?
пожалуйста, пример абсолютного идиотизма, который может быть по нагрузке похож на вашу ситуацию:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare
dt date;
begin
 for i in (select поле_даты from большой таблицы возвращает много-много-много-много строк) loop
 execute immediate 'update блалблабла table where '||i.поле_даты||' < sysdate';
end loop;
end;



но ваш код естественно совершенно другой.

Scorpion_TSNБуквально по пунктам, что Вы имеете в виду??:

1) "хардпарсингом данных"

2) "текущей путём вызова сисдэйт"
2 - вы исказили мою фразу, по ней - см. выше.

1. hard parse очень-очень кратко

Спасибо. Идея понятна. Будем проверять.
...
Рейтинг: 0 / 0
27.07.2016, 15:12:35
    #39281292
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Вячеслав ЛюбомудровИнтересно бы посмотреть, каким запросом EM определил виновникаplsql_entry_object_id, plsql_entry_subprogram_id в ASH.
Scorpion_TSNСпасибо. Идея понятна. Будем проверять.Идея - маразм. Перечитай что выше написал Любомудров.

Для дополнительных деталей - смотри sql_id, top_level_sql_id в ASH.
...
Рейтинг: 0 / 0
27.07.2016, 15:33:39
    #39281314
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
dbms_photoshopВячеслав ЛюбомудровИнтересно бы посмотреть, каким запросом EM определил виновникаplsql_entry_object_id, plsql_entry_subprogram_id в ASH.
Т.е. блок
Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare d date;
begin d := sysdate;
      while true loop
          null;
      end loop;
end;
/

Как раз и выведет в топ обращение (единственное) к SYS.STANDARD.SYSDATE и сам этот анонимный блок?
Или оно меняется при возврате из вызванной процедуры/функции?

Я как-то никогда не обращал на это внимания
...
Рейтинг: 0 / 0
27.07.2016, 15:39:54
    #39281321
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Вячеслав Любомудровdbms_photoshopпропущено...
plsql_entry_object_id, plsql_entry_subprogram_id в ASH.
Т.е. блок
Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare d date;
begin d := sysdate;
      while true loop
          null;
      end loop;
end;
/

Как раз и выведет в топ обращение (единственное) к SYS.STANDARD.SYSDATE и сам этот анонимный блок?
Или оно меняется при возврате из вызванной процедуры/функции?

Я как-то никогда не обращал на это внимания Если в цикле нет вызова хранимого кода, то и plsql_entry_object_id, plsql_entry_subprogram_id будут null.
Запусти и загляни в ash.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
   d   date;
begin
   for i in 1 .. 1e8
   loop
      d   := sysdate + mod(i, 10);
   end loop;
end;
/
...
Рейтинг: 0 / 0
27.07.2016, 15:55:16
    #39281339
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Вячеслав ЛюбомудровSYS.STANDARD.SYSDATE не вызывается в SQL при обращении к SYSDATE
если вызывает пользователь в своей сессии, то да.

а если работает джоб?
вопрос на засыпку: если пользователь обращается к синониму на свой же объект, обработка запроса пойдёт по синониму или напрямую (т.е. с указанием полного пути)?
у любого dbms_джоба владелец sys...

про var: = sysdate вы стопроцентно правы, тут даже не поспоришь.
...
Рейтинг: 0 / 0
27.07.2016, 16:00:06
    #39281349
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Ты еще не понял, что SQL и PL/SQL разные языки?
И функции у них у каждого свои
Где-то совпадают по имени (sysdate), где-то отсутствуют (decode)
...
Рейтинг: 0 / 0
27.07.2016, 16:09:26
    #39281361
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Вячеслав ЛюбомудровТы еще не понял, что SQL и PL/SQL разные языки?
И функции у них у каждого свои
Где-то совпадают по имени (sysdate), где-то отсутствуют (decode)

))
NDS - специфика исключительно PL/SQL -это к вопросу о моём понимании различий в языках на основе приведённого мной примера.
Если по вашей логике SYS.STANDARD.SYSDATE - исключительно прерогатива вызова SQL, то где же тогда хранится то, что вызывает PL/SQL, обращаясь к sysdate?
...
Рейтинг: 0 / 0
27.07.2016, 16:39:19
    #39281395
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
Fogel,

sysdate()
...
Рейтинг: 0 / 0
27.07.2016, 21:53:57
    #39281561
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая нагрузка на SYS.STANDART.SYSDATE
dbms_photoshopFogel,

sysdate()

NDS при распарсивании переводится в SQL и происходит переключение контекста. NDS для того и придуман был, чтобы облегчить применение чистого sql-движка в PL/SQL. поэтому он и специфика PL/SQL. самому sql ещё один переводчик sql не нужен.

"про var: = sysdate" - тоже возможная причина (как я и сказал без какого либо подвоха, но видимо поняли наоборот) при нагрузке на CPU, но тут уже работает PL/SQl движок и как вы выяснили все дороги все равно ведут в рай SYS.STANDARD.SYSDATE.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Большая нагрузка на SYS.STANDART.SYSDATE / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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