Оценка задержки в выполнении стандартного запроса
Входными данными для вычисления прогнозируемого времени обработки простого запроса являются:
-
текст простого SQL-запроса;
-
прогнозируемая таблица (таблица, из которой производится выборка по простому запросу, время исполнения которого следует спрогнозировать);
-
тестовая таблица (эталонная таблица со структурой, идентичной прогнозируемой, расположенная на том же носителе, но с меньшим числом записей).
Формула оценки времени исполнения простого запроса и расшифровка ее компонентов:
где:
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 записей, формула, с подставленными в неё значениями, будет выглядеть следующим образом:
Для таблицы 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%, поскольку некоторое машинное время тратится на обмен данными между компонентами системы, управление кешем СУБД и прочие накладные и периодические расходы.