Дмитрий Волков, dsvolk@jet msk su Инфосистемы Джет, 2004 г
Вид материала | Документы |
Приложение Терминология и формулы отчета Statspack Список литературы |
- 500 великих тайн. Автор-сост. Н. Н. Николаева. М.: Вече, 2009. 608, 82.27kb.
- Волков О. И., Скляренко, 52.88kb.
- России Москва «посев», 4019.32kb.
- Волков Александр Михайлович учебно-методический комплекс, 385.93kb.
- Волков Александр Михайлович учебно-методический комплекс, 441.18kb.
- Библиографический указатель книг, поступивших в конб им. В. Г. Белинского в 2010, 319.58kb.
- < alexander kudryavtsev @ algo msk com, 68.19kb.
- Волков Федор Дмитриевич За кулисами второй мировой войны Сайт Военная литература, 2370.03kb.
- Составитель: Бабанский Дмитрий 7 499 270, 2881.78kb.
- Программа по курсу "Уголовное право" / Сост проф. Б. С. Волков, проф. И. Д. Козочкин,, 638.15kb.
Приложение
Терминология и формулы отчета Statspack
Пакет Statspack предоставляет для первоначального анализа производительности СУБД две основные секции своего отчета - Профиль нагрузки (Load Profile) и Эффективность работы экземпляра (Instance Efficiency Percentages).
Для удобства восприятия аналитических отчетов, часть используемых терминов переведена на русский язык.
В таблице ниже приводятся параметры производительности из отчета Statspack, полное и сокращенное русское наименование, а также формула, используемая Statspack’ом для расчета параметра.
Все параметры основаны на системной статистике. Описание используемых системных статистик приведено в таблице. Полное описание системных статистик можно посмотреть для версии 8.1.7 по адресу:
west.oracle.com/docs/cd/A87860_01/doc/server.817/a76961/apc2.php">
А для для версии 9.2 по адресу:
west.oracle.com/docs/cd/B10501_01/server.920/a96536/apc2.php">
Для получения значения статистики между двумя снимками в пакете Statspack используется процедура Sysdif.
Наименование в Statspack | Полное наименование | Сокращенное наименование | Формула для вычесления |
Профиль нагрузки | |||
Redo size | Объем информации отката, байт | Объем информации отката, байт | 'redo size' |
Logical reads | Число логических чтений | Логических чтений | 'session logical reads' |
Block changes | Число измененных блоков данных | Измененных блоков данных | 'db block changes' |
Physical reads | Число физических чтений | Физических чтений | 'physical reads' |
Physical writes | Число физических записей | Физических записей | 'physical writes' |
User calls | Количество пользовательских вызовов | Пользовательских вызовов | 'user calls' |
Parses | Число разборов sql выражений (мягких и жестких) | Разборов sql выражений | 'parse count (total)' |
Hard parses | Число жестких разборов | Жестких разборов | 'parse count (hard)' |
Sorts | Общее число сортировок (на диске и в памяти) | Сортировок | 'sorts (memory)' + 'sorts (disk)' |
Logons | Число пользовательских подключений к экземпляру | Число подключений | ‘logons cumulative' |
Executes | Общее число вызовов (пользовательских и рекурсивных) | Число вызовов | 'execute count' |
Transactions | Число транзакций (подтверждений и откатов) | Транзакций | 'user rollbacks' + 'user commits' |
Rows per Sort | Среднее число записей в сортировке | Записей в сортировке | decode(('sorts (memory)' + 'sorts (disk)'),0,to_number(null) ,round('sorts (rows)'/('sorts (memory)' + 'sorts (disk)'),2)) |
Pct Blocks changed / Read | Процентное отношение измененных блоков/число логических чтений | % измененных блоков/чтений | round(100 * 'db block changes'/ 'session logical reads', 2) |
Recursive Call Pct | Процент вызова рекурсивных вызовов | % рекурсивных вызовов | round(100 * 'recursive calls'/('user calls'+'recursive calls'),2) |
Rollback / transaction Pct | Процент откатов в транзакциях | % откатов в транзакциях | round(100*'user rollbacks'/('user rollbacks' + 'user commits'),2) |
Эффективность работы экземпляра (должны приближаться к 100%) | |||
Buffer Nowait Ratio | Процент запросов серверного процесса на получение буфера БД, обработанный немедленно (без ожидания) | % запросов на доступ к буферам без ожидания | round(100*(1-:bfwt/'session logical reads'),2) :bfwt = select sum(wait_count) from stats$waitstat where snap_id = i_snap_id and dbid = db_ident and instance_number = inst_num; |
Buffer Hit Ratio | Процент запросов на чтение блоков данных, обработанных без выполнения операций физического ввода-вывода (блок был в кэше буферов БД) | Кэш данных, попаданий | round(100*(1-('physical reads' - 'physical reads direct' -nvl('physical reads direct (lob)',0))/ 'session logical reads'),2) |
Library Hit Ratio | Показывает отношение кол-ва вызовов (parse), которые обнаружили необходимый объект в библиотечном кэше, к кол-ву вызовов для которых потребовалась загрузка объекта в кэш | Библиотечный кэш, попаданий | round(100* :lhtr,2) cursor LH (i_snap_id number) is select sum(pins), sum(pinhits) from stats$librarycache where snap_id = i_snap_id and dbid = db_ident and instance_number = inst_num; :lhtr = (ehsum - bhsum) / (epsum - bpsum), где bpsum, bhsum – это begin_snapid pins_sums и hits_sums, epsum, ehsum - это end_snapid pins_sums и hits_sums |
Redo NoWait Ratio | Процент журнальных записей, для которых место в журнальном файле было получено без ожидания | % журнальных. записей без ожиданий | decode('redo entries',0,to_number(null), round(100*(1-'redo log space requests'/'redo entries'),2)) |
In-memory Sort Ratio | Процент сортировок, выполненных в памяти | % сортировок в памяти | decode(('sorts (memory)' + 'sorts (disk)'),0,to_number(null), round(100* 'sorts (memory)' / ('sorts (memory)' + 'sorts (disk)'),2)) |
Soft Parse Ratio | Процент мягких разборов, т.е. разборов, для которых выражение уже находилось в библиотечном кэше | % мягких разборов | round(100*(1-'parse count (hard)'/'parse count (total)'),2) |
Latch Hit Ratio | Процентное отношение числа всех удачных запросов на защелки к числу промахов | Эффективность защелок | round(100*(1-:lhr),2) cursor GETS_MISSES (i_snap_id number) is select sum(gets), sum(misses) from stats$latch where snap_id = i_snap_id and dbid = db_ident and instance_number = inst_num; lhr = ( elmis - blmis ) / ( elget - blget ), где blget, blmis – это begin_snapid gets_sum, misses_sum, elget, elmis– это end_snapid gets_sum, misses_sum |
% Non-Parse CPU | Процент процессорного времени, потраченного не на разбор sql выражений | % времени ЦПУ не на разбор | decode(:tcpu, 0, to_number(null) , round(100*1-('parse time cpu' /'CPU used by this session'),2)) |
Parse CPU to Parse Elapsd (%) | Процент разбора sql выражений, выполненных без ожидания | Разбор sql-предложений, без ожиданий % | decode(:prsela, 0, to_number(null), round(100*:'parse time cpu'/ ‘Parse time Elapsd’ ,2)) |
Execute to Parse | Процент выражений, для которых не потребовалось выполнять разбор (выражение уже было в библиотечном кэше) | Выражений без повторного разбора | round(100*(1- 'parse count (total)' / 'execute count'),2) |
Наименование системной статистики | Расшифровка |
db block changes | Общее число измененных операциями update и delete блоков в SGA. |
CPU used by this session | Время ЦПУ, потраченное в пользовательской сессии между началом и окончанием пользовательского вызова в 1/100c |
Parse (time) Elapsd | Время, затраченное на разбор предложений (мягкий и жесткий в 1/100 с) |
Parse (time) CPU | Полное затраченное время на разбор. Разница между данным параметром и Parse Elapsd относится ко времени ожидания. Можно предположить, что в системе присутствует конкуренция за защелки и/или недостаточно производительности ЦПУ |
Recursive calls | Число рекурсивных вызовов на пользовательском и системном уровне. Oracle поддерживает таблицы для внутреннего использования. Вызовы, использующие данные таблицы, являются рекурсивными |
Recursive CPU | Время, потраченное на рекурсивные вызовы |
CPU other | Прочее ЦПУ. Компонент CPU other отвечает за время, потраченное на работу с кэшом СУБД, извлечение записей или поиск по индексу, и определяется как CPU used by this session – Parse time CPU – Recursive CPU |
Список литературы
- Performance Management: Myths & Facts, Cary V. Millsap, Oracle Corporation.
- The Practical Performance Analyst, Gunther, N. 1998.. McGraw-Hill, New York.
- So what does an oracle dba do? And do i need one? Steve Lemme, Platinum Technology, inc.
- Oracle DBA Checklist, Thomas B. Cox, with Christine Choi, ties.com/tbcox23.
- Simplify your job – automatic storage management, Paul Manning,Angelo Pruscino, Oracle Corporation.
- The self--managing database: automatic performance diagnosis. Кyle Hailey, Oracle corporation, Graham Wood, Oracle corporation.
1 Конечно, помимо указанных, могут быть и другие подразделения, занимающиеся подобными работами. Здесь приводятся только известные автору.
2На момент написания статьи были доступные только материалы (white papers) о будущей версии 10g.