Оценка задержки в выполнении стандартного запроса

Входными данными для вычисления прогнозируемого времени обработки простого запроса являются:

  • текст простого SQL-запроса;

  • прогнозируемая таблица (таблица, из которой производится выборка по простому запросу, время исполнения которого следует спрогнозировать);

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

Формула оценки времени исполнения простого запроса и расшифровка ее компонентов:

Формула оценки времени исполнения простого запроса
Рисунок 9. Формула оценки времени исполнения простого запроса

где:

Tp – время выполнения запроса по прогнозируемой таблице;

Tt – время выполнения запроса по тестовой таблице;

Cp– число записей в прогнозируемой таблице;

Ct– число записей в тестовой таблице.

Примечание

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

Пример

Допустим, созданы три таблицы: test – 7500 записей, prognoz1 – 15000 записей, prognoz2 – 31000 записей.

Запустить программу inl от имени пользователя SYSTEM/MANAGER8:

inl -u SYSTEM/MANAGER8

Выполнить команду для изменения режима отображения временной статистики программы inl:

SQL > time HH:MI:SS:MS

Выполнить select-запрос из тестовой таблицы:

SQL > select * from test where vch = 'sel';
INL : начальное время : 02:43:38:776
      конечное время :  02:43:38:861

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

Провести расчет прогнозируемого времени выполнения аналогичных запросов для таблиц prognoz1 и prognoz2 согласно формуле оценки времени исполнения простого запроса. Для таблицы prognoz1, содержащей 15000 записей, формула, с подставленными в неё значениями, будет выглядеть следующим образом:

Вычисление для таблицы prognoz1, содержащей 15000 записей
Рисунок 10. Вычисление для таблицы prognoz1, содержащей 15000 записей

Для таблицы prognoz2, содержащей 31000 записей:

Вычисление для таблицы prognoz2, содержащей 31000 записей
Рисунок 11. Вычисление для таблицы prognoz2, содержащей 31000 записей

Выполнить select-запрос из прогнозируемой таблицы prognoz1:

SQL > select * from prognoz1 where vch = 'sel';
INL : начальное время : 02:47:35:767
      конечное время :  02:47:35:932

Вычислить реальное времени выполнения запроса из таблицы prognoz1.

Сравнить прогнозируемое время выполнения запроса для таблицы prognoz1, то есть, с реальным (вычисленным на предыдущем шаге).

Выполнить select-запроса из прогнозируемой таблицы prognoz2:

SQL > select * from prognoz2 where vch = 'sel';
INL : начальное время : 02:48:23:248
      конечное время :  02:48:23:596

Вычислить реальное время выполнения запроса из таблицы prognoz2.

Сравнить прогнозируемое время выполнения запроса для таблицы prognoz2, то есть, с реальным (вычисленным на предыдущем шаге).

Примечание

При расчётах и сравнении следует учитывать погрешность измерения времени в 10-15%, поскольку некоторое машинное время тратится на обмен данными между компонентами системы, управление кешем СУБД и прочие накладные и периодические расходы.