Execute to Parse. STATSPACK. SESSION_CACHED_CURSORS,OPEN_CURSORS

dbstalker, 24 сентября

Execute to Parse.Этот коэффициент показывает, как много раз sql-утверждение было выполнено для каждого разбора.

Влиять на величину коэффициента можно с помощью высокого значения параметров инициализации

  • OPEN_CURSORS - сколько открытых курсоров может иметь пользовательский процесс одновременно. Под этот параметр резервируется память при старте экземпляра.
  • SESSION_CACHED_CURSORS - сколько Вы хотите курсоров держать открытыми в сессии, даже несмотря на их явное закрытие. Это позволяет избежать повторного полного разбора и уменьшить количество защелок в вашем приложении.

Коэффициент считается по такой формуле:

select 100*(1-  ((select value from stats$sysstat where name ='parse count (total)' and snap_id=snap_end)-
        (select value from stats$sysstat where name ='parse count (total)' and snap_id=snap_begin))/
 
  ((select value from stats$sysstat where name ='execute count' and snap_id=snap_end)-
        (select value from stats$sysstat where name ='execute count' and snap_id=snap_begin))) ratio from dual

Из этой формулы можно сделать вывод:

  1. Если количество выполнений sql-утверждений растет быстрее по сравнению с количеством разборов, то коэффициент стремится к 100%. (Чем выше, тем лучше.)
  2. Если количество выполнений близко к количеству разборов, то коэффициент стремится к единице. (Это нехорошая ситуация. Над ней нужно работать.)
  3. Возможно также, что коэффициент принимает отрицательное значение – некоторые разобранные утверждения не выполняются. (Это очень плохо!)

Обратите внимание, что этот коэффициент считается исходя из общего числа разборов (Soft + hard parse). Для того, чтобы определить сколько из них полных разборов, посмотрите на величину hard parses из раздела „Load profile” отчета STATSPACK.

Если у Вас доля полных разборов значительна - нужно ставить вопрос перед разработчиками Вашего программного обеспечения. Уместно напомнить им о полезности использования связных переменных, хранимых (на стороне сервера) процедурах.

Если же у Вас в системе значительно больше частичного разбора, то также можно несколько улучшить ситуацию, работая над параметром инициализации Session_Cached_Cursors.

2 комментария

Прокоментировать

panov
11 февраля 2009 г. в 12:53

не работает запрос нет
полей в stats$sysstat.snap_end
и stats$sysstat.snap_begin

dbstalker
11 февраля 2009 г. в 14:52

snap_end и snap_begin - Не поля! это номера ваших "снимков". их нужно указывать по факту. ПОчитайте документацию по STATSPACK

 

Новый комментарий

Я не спамер: введите суму 7+4



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум