【问题标题】:What is Parse Tree cache object type in sql server什么是 sql server 中的 Parse Tree 缓存对象类型
【发布时间】:2012-03-21 19:11:26
【问题描述】:

当我们查询 SYS.DM_EXEC_CACHED_PLANS 时,会出现一种称为解析树的缓存对象类型,用于视图和表值函数。是否类似于存储过程和即席查询的查询计划?

【问题讨论】:

    标签: sql-server caching memory


    【解决方案1】:

    没有。

    这是流程早期阶段的输出。它在编译阶段之前被替换为引用视图的查询。涉及的阶段是

    • 解析(输出:解析树)
    • 绑定(输出:代数化树)
    • 查询优化(输出:执行计划)
    • 查询执行

    有关这些的完整描述,请参阅 Benjamin Nevarez 的文章 The SQL Server Query Optimizer

    AFAIK 尽管在sys.dm_exec_cached_plans 中显示为Parse Tree,但它实际上是存储并替换为查询的第二阶段的输出。此查询支持此查询,其中这些对象显示为 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' 
    

    【讨论】:

    • 问题:SQL 视图的对象类型是“解析树”,而存储过程是“编译计划”。这是否意味着 SQL 视图被编译到缓存中以供重用?
    猜你喜欢
    • 2011-02-24
    • 2015-12-06
    • 2011-08-08
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多