Что такое тип объекта кэша Parse Tree на сервере sql - PullRequest
5 голосов
/ 21 марта 2012

Когда мы запрашиваем SYS.DM_EXEC_CACHED_PLANS, появляется тип объекта кэша, называемый деревом разбора, который отображается для представлений и табличных функций.Это похоже на план запроса для хранимых процедур и специальных запросов?

1 Ответ

9 голосов
/ 21 марта 2012

номер

Это результат более ранней стадии процесса. Он подставляется в запросы, которые ссылаются на представления перед самой стадией компиляции. Стадии включают

  • Парсинг (Вывод: дерево разбора)
  • Переплет (Выход: Алгебризованное Дерево)
  • Оптимизация запросов (вывод: план выполнения)
  • Выполнение запроса

Полное описание этого см. В статье Бенджамина Невареса Оптимизатор запросов SQL Server

AFAIK, несмотря на то, что он отображается как Parse Tree в sys.dm_exec_cached_plans, на самом деле это вывод второй стадии, который сохраняется и подставляется в запросы. Это поддерживается из этого запроса, в котором эти объекты отображаются как Bound Trees

SELECT text, 
       objtype, 
       refcounts, 
       usecounts, 
       size_in_bytes, 
       cacheobjtype, 
       name 
FROM   sys.dm_exec_cached_plans p 
       CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
       JOIN sys.dm_os_memory_cache_entries e 
         ON p.memory_object_address = e.memory_object_address 
WHERE  cacheobjtype = 'Parse Tree' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...