• SQLServer统计监控SQL执行计划突变的方法


    使用动态管理视图(DMVs)来检测SQL执行计划的突变,你需要关注那些能够提供查询执行统计和计划信息的视图。以下是一些可以用于此目的的DMVs以及相应的查询示例:

    1. sys.dm_exec_query_stats:这个视图提供了关于SQL Server中查询执行的统计信息,包括CPU时间、总工作时间、执行次数等。
    SELECT sql_handle, statement_start_offset, statement_end_offset, creation_time, last_execution_time, execution_count, total_worker_time, total_elapsed_time FROM sys.dm_exec_query_stats ORDER BY total_worker_time DESC;
    1. sys.dm_exec_sql_text:结合sys.dm_exec_query_stats使用,可以获取与sql_handle对应的SQL文本。
    SELECT qs.sql_handle, st.text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st;
    1. sys.dm_exec_cached_plans:这个视图包含了缓存中的执行计划的统计信息,如计划的大小、执行次数等。
    SELECT cacheobjtype, usecounts, cacheobjtype, objtype, size_in_bytes, creation_time, last_use_time FROM sys.dm_exec_cached_plans ORDER BY usecounts DESC;
    1. sys.dm_exec_query_plan:这个视图与sys.dm_exec_sql_text结合使用,可以获取特定查询的执行计划。
    SELECT qp.query_plan, st.text FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st;

    要检测执行计划的突变,可以定期运行上述查询,并将结果存储在表中,或者与之前的结果进行比较。

    例如,可以比较两个不同时间点的total_worker_timetotal_elapsed_time,以查看是否有显著变化,这可能表明执行计划已经改变。

    由于sys.dm_exec_query_stats中的信息可能会被SQL Server周期性地重置,因此最好的做法是将这些信息记录到一个持久化表中,这样可以基于历史数据来检测突变。

    此外,执行计划的突变可能需要结合多个DMVs的信息来综合判断。

  • 相关阅读:
    java.lang.Float类下compareTo()方法具有什么功能呢?
    链表的奇偶重排
    Hive insert插入数据与with子查询
    2021.09青少年软件编程(Python)等级考试试卷(三级)
    北斗导航 | 格洛纳斯(GLONASS)卫星导航系统
    Ubuntu20.04安装docker
    哪款蓝牙耳机音质好?2022年学生党蓝牙耳机推荐
    园子的商业化努力-阿里云云市场合作-第1季第1集
    OpenWrt kernel install分析(1)
    Linux系统编程:进程part_1
  • 原文地址:https://www.cnblogs.com/tianqing/p/18188562