Что вызывает разницу между временем процессора и затраченным временем в файлах Oracle tkprof - PullRequest
4 голосов
/ 06 апреля 2011

При анализе файлов трассировки Oracle tkprof я заметил, что иногда существует большая разница между временем процессора и истекшим временем, и я не знаю, что его вызывает.

Например:

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00      42.09          0          0          0           0
Execute      1      0.01       0.01          0          0          0           0
Fetch       45     14.44      62.71      48664     505513          0        1871
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       47     14.45     104.82      48664     505513          0        1871

Статистика ожидания выглядит следующим образом:

 Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                      46        0.00          0.00
  SQL*Net message from client                    46        0.19          1.68
  buffer busy waits                             559        0.23          8.59
  db file scattered read                       5204        0.21          7.49
  db file sequential read                      4240        0.20         13.49
  latch free                                    215        0.11          3.62

Я разработчик программного обеспечения (не администратор БД), поэтому я обычно просматриваю эти файлы трассировки, чтобы найти неэффективные запросы или посмотретьИндекс может быть использован для остановки полного сканирования таблицы и так далее.Для этого я склонен идти на время процессора.В большинстве случаев истекшее время очень похоже на время процессора.

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

Ответы [ 3 ]

9 голосов
/ 06 апреля 2011

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

3 голосов
/ 06 апреля 2011

Насколько занята система, какова архитектура, как выглядит запрос?Как размер sga?

Самое удивительное в этом примере - время разбора.Этот плохой сервер получает некоторые вещи, которые не выглядят забавными ....

Обычно прошедшее время - это время настенного времени, которое потребовалось для обработки полного запроса.Время процессора, время использования процессора.Для вашей системы я пойду и попытаюсь выяснить, почему анализ занял так много времени.Существует большая вероятность, что если вы решите это, вы также решите время выборки.Запросите отчет addm за период, в течение которого выполнялся запрос, и изучите его. Oracle® Database 2 Day + Руководство по настройке производительности 11g Release 2 (11.2) - хорошее место для понимания в отчетах addm.

2 голосов
/ 07 апреля 2011

Как сказал Тони, одним из распространенных объяснений неучтенного времени в трассировке является время, затраченное на ожидание процессора. Другое, что я испытал, это время, потраченное на запись в сам файл трассировки, если что-то заставляет это происходить медленно; но если это так, вы должны увидеть большую разницу во времени при выполнении запроса с трассировкой или без нее.

Время разбора огромно. Синтаксический анализ обычно привязан к процессору, тогда как он показывает отсутствие процессорного времени и много прошедшего времени. Тот факт, что у вас есть значительные latch free ожидания, может свидетельствовать о большом количестве разборов, но время, отведенное на ожидание, составляет всего лишь 1/10 от вашего истекшего времени анализа.

Так что я бы согласился с Тони, что в этом случае вероятна серьезная нагрузка на процессор. Этому может способствовать большой объем анализа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...