用于重新编译的工具和命令

用于重新编译的工具和命令

 

1.SQL Prifiler:捕捉事件类型为SP和T-SQL的事件(Starting、Stmtcompleted、Recompile、Completed、CacheInsert、CacheHit、CacheMiss)可以找到重新编译的原因。

2.SQLServer的系统用于查看分析执行计划的DMV,如:

  • select st.text,cp.plan_handle,cp.usecounts,cp.size_in_bytes,cp.cacheobjtype,cp.objtype

from sys.dm_exec_cached_plans cp

cross apply sys.dm_exec_text(cp.plan_handle) st order by cp.usecounts desc 

–列:st.text:查询中生成查询计划的sql文本。

        cp.usecounts:重用计划查询的次数。

        cp.size_in_bytes:查询计划中使用的字节数。

        cp.cacheobjtype:缓存对象的类型。

  • select *from sys.dm_exec_cached_plans –查询缓存的执行计划
  • select* from sys.dm_os_memory_cache_counters–查询缓存对象相关信息
  • 通过执行计划缓存找到数据库总耗时最长的20个查询语句

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

 SELECT TOP 20

   CAST(qs.total_elapsed_time / 1000000.0 AS DECIMAL(28, 2))

                                      AS [Total Duration (s)]

   , CAST(qs.total_worker_time * 100.0 / qs.total_elapsed_time

                                AS DECIMAL(28, 2)) AS [% CPU]

   , CAST((qs.total_elapsed_time – qs.total_worker_time)* 100.0 /

         qs.total_elapsed_time AS DECIMAL(28, 2)) AS [% Waiting]

   , qs.execution_count

   , CAST(qs.total_elapsed_time / 1000000.0 / qs.execution_count

                 AS DECIMAL(28, 2)) AS [Average Duration (s)]

   , SUBSTRING (qt.text,(qs.statement_start_offset/2) + 1,      

     ((CASE WHEN qs.statement_end_offset = -1

       THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2

       ELSE qs.statement_end_offset

       END – qs.statement_start_offset)/2) + 1) AS [Individual Query

   , qt.text AS [Parent Query]

   , DB_NAME(qt.dbid) AS DatabaseName

   , qp.query_plan

 FROM sys.dm_exec_query_stats qs

 CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

 CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp

 WHERE qs.total_elapsed_time > 0

 ORDER BY qs.total_elapsed_time DESC  

  • Sys.dm_exec_cached_plans:    包含缓存的执行计划,每个执行计划对应一行。
  • Sys.dm_exec_plan_attributes: 这是一个系统函数,每一个执行计划都对应着一些属性,在这个系统函数中包含着这些属性。
  • Sys.dm_exec_sql_text:             这是一个系统函数,返回文字格式的执行计划。
  • Sys.dm_exec_query_plan:        这是一个系统函数,返回xml格式的执行计划。

3.虚拟表

  • SQL Server 2008还提供了一个兼容性的视图sys.syscacheobject,这个视图中保存了所有的执行计划的信息。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119742.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat 15 激活码【中文破解版】

    (navicat 15 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月26日
    215
  • rpc是什么?php中流行的rpc框架有哪些?

    rpc是什么?php中流行的rpc框架有哪些?

    2022年2月15日
    41
  • delphi多线程[通俗易懂]

    delphi多线程[通俗易懂]   Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充。  线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多个子线

    2022年10月22日
    0
  • 添加了ValidateRequest=”false”仍然报错的解决办法[通俗易懂]

    添加了ValidateRequest=”false”仍然报错的解决办法[通俗易懂]在文本框传递HTML代码时默认是不允许的,会提示有潜在危险字符,只要在页头的指令中加ValidateRequest=”false”就可以解决,如下所示:或查看配置文件中是否有同样的设置,如:若上述操作后仍然报错,可在配置文件中加入节如下:

    2022年6月9日
    30
  • 网页内容监控 – 怎么才能做到网站内容实时推送百度?「建议收藏」

    网页内容监控 – 怎么才能做到网站内容实时推送百度?「建议收藏」运用业界领先的爬虫技术,判断页面内容是否有新内容产出,并过滤非站内内容,然后将内容链接推送至百度各个数据推送接口(如熊掌号、移动专区等)。网页内容监控是什么?网页内容监控是指对网站的指定页面进行定时扫描,扫描时发现与上次扫描结果有差异时进行相应处理的程序或服务。通俗来讲,网页内容监控可以实现页面有变化了,通知相应负责人或者自动处理的功能。应用场景网页内容监控的应用场景还是很多的,各…

    2022年7月17日
    18
  • Chrome performance_开发者模式玩游戏流畅

    Chrome performance_开发者模式玩游戏流畅主要有4方面:(对照下图)1.控制按钮。2.overview。页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求)3.火焰图。CPU堆叠追踪的可视化(左侧名称是主线程的各种事件,Network:网络请求详细情况)4.数据统计。以图表的形式汇总数据(summary:统计报表,Bottom-Up:事件时长顺序,CallTree:事件调用顺序,Eventlog:事件发生的……

    2025年7月9日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号