вторник, 18 декабря 2007 г.

Анализ и настройка защелок (latch)

Параметр _spin_count содержит кол-во попыток получения защелки, после чего процесс "засыпает".
Параметр является динамическим.

Просмотреть текущее значение:

  select v.ksppstvl value
  from sys.x_$ksppi p,
       sys.x_$ksppsv v
  where p.inst_id = userenv('Instance')
    and v.inst_id = userenv('Instance')
    and p.indx = v.indx
    and p.ksppinm = '_spin_count';


Для 9i значение по-умолчанию равно 2000. Многие отмечают, что это значение уже устарело, т.к. производительность современных процессоров значительно увеличилась. В связи с этим часто рекомендуется увеличивать это значение.
 (см.  1. Oracle Wait Interface: A Practical Guide to Performance Diagnostics & Tuning, by Richmond Shee, Kirtikumar Deshpande and K Gopalakrishnan, McGraw-Hill/Osborne 2004,  ISBN:007222729x
         2. Resolving Oracle Latch Contention, By Guy Harrison, Principal Software Architect, Quest Software )


Но крутить этот параметр следует в последнюю очередь, после того как решены основные проблемы с конкуренцией защелок.

Проверить эффективность параметра можно запросом:
  select sum(l.misses) misses,
         sum(l.spin_gets) spin_gets,
         sum(l.sleeps) sleeps,
         lpad( to_char(100 * sum(l.spin_gets) / sum(l.misses), '990.00') || '%', 13) hit_rate,
         &spin_count * sum(l.sleeps) / sum(l.misses) spin_cost
  from sys.v_$latch l
  where l.misses > 0;




Комментариев нет:

Отправить комментарий