Skip to content

Время анализа против времени компиляции

Пересказ статьи Forrest. Parse Time vs Compilation Time


В последнее время я возился с долгими компиляциями, и в голову закрался однин вопрос, основанный на SET STATISTICS TIME ON…


Есть ли разница между временем анализа (parse time) и временем компиляции (compile time)? Для меня наступило времени науки, иначе говоря, победить SQL Server и узнать его секреты.

Сначала давайте построим процедуру, которая содержит очень простой запрос, но гигабайт пробелов. Упс...



Прекрасно, только полгига пробелов:

DECLARE @w VARCHAR(MAX) = '        ' --8 пробелов
SET @w += @w --2^4
SET @w += @w --2^5
SET @w += @w --2^6
SET @w += @w --2^7
SET @w += @w --2^8
SET @w += @w --2^9
SET @w += @w --2^10 = 1024, 1KB
SET @w += @w --2^11
SET @w += @w --2^12
SET @w += @w --2^13
SET @w += @w --2^14
SET @w += @w --2^15
SET @w += @w --2^16
SET @w += @w --2^17
SET @w += @w --2^18
SET @w += @w --2^19
SET @w += @w --2^20 = 1MB
SET @w += @w --2^21
SET @w += @w --2^22
SET @w += @w --2^23
SET @w += @w --2^24
SET @w += @w --2^25
SET @w += @w --2^26
SET @w += @w --2^27
SET @w += @w --2^28
SET @w += @w --2^29 = 512MB
--SET @w += @w --2^30 = 1GB

DECLARE @sql VARCHAR(MAX) = '
CREATE OR ALTER PROC Parsimonious
AS
SELECT TOP(1)'+@w+' *
FROM dbo.Comments
OPTION(RECOMPILE)
'
EXEC(@sql)

Этого достаточно для доказательства, что время анализа <> времени компиляции, поскольку числа разнятся. STATISTICS TIME охватывает полную продолжительность.



В то время как план выполнения показывает меньшее время компиляции. (Кроме того, расширенные события (Extended Events) показывают время компиляции, совпадающее со временем в плане выполнения.)



sys.query_store_query содержит относящиеся к этому столбцы, не только с числом компиляции плана выполнения, но и не содержащие полного времени.

В итоге, анализ отличается от компиляции, и затраты ЦП не показываются нигде за исключением STATISTICS TIME. Более трудно было бы обнаружить ситуацию, когда сервер, тратит все свои вычислительные ресурсы на синтаксический анализ, хотя я думаю, что это редкость. Я не могу сказать, что этого никогда не происходит, потому что видел кое-что в производстве.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.