Получение очень разных результатов для статистики времени в SQL Server - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь рассчитать время / сравнить запрос как часть более широкого анализа производительности.

В SQL я включил синхронизацию через SET statistics time ON, и запрос, который я задаю, выглядит как SELECT A, B from foo where id = 123. Перед каждым запросом я выполняю:

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

Ниже приведены результаты 2 прогонов (не впоследствии):

Прогон 1:

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 8 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(1212 row(s) affected)

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 15 ms.

Прогон 2:

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 3 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(1212 row(s) affected)

 SQL Server Execution Times:
   CPU time = 16 ms,  elapsed time = 14 ms.

Чего я не понимаю, так это:

  1. Почему существуют 2 раздела 'разбора и времени компиляции' и почему результаты одного запроса различны?
  2. Включены ли время разбора и компиляции во время ЦП под ними
  3. Почему процессорное время 0 в 'run 1'
  4. Почему время ЦП превышает прошедшее время в 'run 2'

Не очень ясно, какое число предоставляет ЦП Пользовательское время, то есть сколько времени фактически потребовался мой запрос, который должен быть не более истекшего времени.

В более широком смысле, у меня есть приложение, интенсивно использующее данные, которое читает только из базы данных - каждый запрос выполняется быстро, но он может запрашивать много данных и делает это с помощью отдельных запросов, а не навалом. Является ли проблемой то, что я пытаюсь рассчитать время для отдельного запроса - я должен создать сценарий SQL, который занимает более значимое время, чем несколько миллисекунд? Для меня ответ - «Да», но я беспокоюсь, что не пойму поведение при микроскопическом тесте, прежде чем перейти к макроскопическому тесту.

...