Как понять статистику файла трассировки в Oracle.Такие как процессор, истекшее время, запрос ... и т. Д. - PullRequest
0 голосов
/ 15 октября 2018

Я изучаю оптимизацию запросов в Oracle, и я знаю, что файл трассировки создаст статистику о выполнении запроса и EXPLAIN Plan запроса.

example trace file photo

В нижней частифайл трассировки, это EXPLAIN PLAN запроса.Мой первый вопрос: показывает ли часть time = 136437 us длительность шагов выполнения запроса?что значит "мы"?Это единица времени?

Кроме того, кто-нибудь может объяснить, что означает статистика, такая как count, cpu, elapsed, disk и query?Я уже гуглю и читаю Oracle doc о них, но до сих пор не могу этого понять.Кто-нибудь может прояснить смысл этих характеристик более четко?

Заранее спасибо.Я новичок и прошу прощения за мой английский.

1 Ответ

0 голосов
/ 16 октября 2018

Самая маленькая единица доступа к данным в базе данных Oracle - это блок.Не ряд.

Каждый блок может хранить много строк.

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

  • Текущий = поскольку блок существует «прямо сейчас».
  • Согласовано = поскольку блокировка существовала на момент начала запроса.

Запрос и текущие столбцы сообщают, сколько раз база данных обращалась к блоку в согласованном (запрос) и текущем режиме.

При обращении к блоку он может уже находиться в буферном кеше(объем памяти).Если это так, доступ к диску не требуется.Если нет, он должен сделать физическое чтение (pr).Столбец диска - это счетчик всех физических чтений.

Статистические данные для каждой строки в плане - это цифры для этой операции.Плюс сумма всех его дочерних операций.

Проще говоря, база данных обрабатывает план, сначала обращаясь к первому дочернему элементу.Затем передает строки до родителя.Затем все остальные дочерние элементы этого родителя в порядке.Дочерние операции имеют отступ от своего родителя на дисплее.

Таким образом, база данных обработала ваш запрос следующим образом:

  1. Считать 2000 строк из CUSTOMER.Для этого потребовалось 749 последовательных блоков и 363 чтения с диска (значения cr и pr в этой строке).Это заняло 10 100 микросекунд.
  2. Прочитать 112 458 строк из BOOKING.Это сделало 8 203 последовательных чтения и нулевые чтения с диска.Это заняло 337 595 микросекунд
  3. Объединение этих двух таблиц с помощью хеш-соединения.CR, PR, PW (физическая запись) и значения времени являются суммой операций ниже этого.Плюс любая работа, которую проделала эта операция.Таким образом, хеш-соединение:
    • выполнено 8,952 - (749 + 8,203) = нулевое согласованное чтение
    • выполнено 363 - (363 + 0) = нулевое физическое чтение
    • заняло 1,363,447 -(10 100 + 337 595) = 1 015 752 микросекунды для выполнения

Обратите внимание, что итоговые значения CR & PR для хеш-соединения соответствуют запросу и итоговым значениям диска в строке выборки?

В столбце подсчета указано, сколько раз происходила эта операция.Выборка - это вызов базы данных для получения строк.Таким образом, клиент вызывал базу данных 7,499 раз.Каждый раз, когда он получал ceil (112 458/7 499) = 15 строк.

CPU - общее время в секундах, в течение которого процессоры сервера выполняли этот шаг.Истекшее время - общее время настенных часов.Это время процессора + любая дополнительная работа.Например, чтение с диска, сетевое время и т. Д.

...