首页 > 数据库 >SQLServer统计监控SQL执行计划突变的方法

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

时间:2024-05-13 08:58:52浏览次数:16  
标签:dm exec time SQLServer sys query sql 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的信息来综合判断。

标签:dm,exec,time,SQLServer,sys,query,sql,SQL,突变
From: https://www.cnblogs.com/tianqing/p/18188562

相关文章

  • SQLServer如何查询近3分钟最消耗CPU的SQL
    在SQLServer中,要查询近3分钟最消耗CPU的SQL语句,可以使用sys.dm_exec_query_stats动态管理视图结合sys.dm_exec_sql_text函数来获取SQL语句的文本。不过,直接查询近3分钟的数据可能需要一些额外的逻辑来筛选时间范围,因为sys.dm_exec_query_stats并不直接提供时间筛选的功能。一种......
  • php centos选择sqlserver的驱动和扩展选择版本的说明
    2023年2月23日13:41:48首先是phpphp扩展驱动数据库的关系官方文档说明:https://learn.microsoft.com/zh-cn/sql/connect/php/step-1-configure-development-environment-for-php-development?view=sql-server-2017https://learn.microsoft.com/zh-cn/sql/connect/php/syste......
  • Mysql中的索引下推优化
    当索引下推开启后,如果where子句中的部分条件可以通过索引中的列来进行过滤,MySQL会把这部分条件也下推给存储引擎。这里的关键是下推的这部分条件用于过滤而非定位数据。直接看官方的例子:SELECT*FROMpeopleWHEREzipcode='95054'ANDlastnameLIKE'%etrunia%'ANDad......
  • 初识PostgreSql
    前言PostgreSql常被称为Postgres,简称PG,后文中以PG称呼。是当今非常流行的一种数据库。为什么使用PG在分析这个问题之前,我认为有必要说一说Oracle和MySql这两家数据库。OracleOracle作为占有率最高的数据库,由Oracle公司开发,提供商业支持,其流行的原因在于其强大的性能......
  • Pgsql报错修复
     1   这里更改安装目录bin下面例如E:\WorkingSoftware\PostgreSql\16\bin 更改权限,下面都改下  2如果安装时提示databse出错,就初始化下 E:\WorkingSoftware\PostgreSql\16\bin\pg_ctl.exe-DE:\WorkingSoftware\PostgreSql\16\datainitdb ......
  • 厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中
    一、写在开头我们在上一篇文章中提到了通过EasyExcel处理Mysql百万数据的导入功能(一键看原文),当时我们经过测试数据的反复测验,100万条放在excel中的数据,4个字段的情况下,导入数据库,平均耗时500秒,这对于我们来说肯定难以接受,今天我们就来做一次性能优化。二、性能瓶颈分析一般的......
  • MySQL5.7安装详细过程--window系统
    一:MySQL5.7安装详细过程--window系统1.1、下载MySQL5.7安装包https://downloads.mysql.com/archives/community/1.2、将文件解压到盘符中你可以解压到你想解压的位置,放在C或其他盘符都可以。1.3、配置MySQL的环境变量由于我们下载的不是exe或者msi版本,不能直接双击安装,所以需要手......
  • Docker 部署MySQL
    1、创建配置目录mkdir-pMySQL目录/conf2、切换到配置目录cdMySQL目录/conf3、创建配置文件vimmy.cnf[client]#设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8mb4[mysql]#设置mysql客户端默认字符集default-character-set=ut......
  • Sqlite3数据库初接触基本操作
    前言笔者接触到一个全新的数据库,知道该数据库的类型是 Sqlite3,但不知道该数据的具体组成比如具体由哪些表或者数据内容。对数据概况探索1.经过查阅“https://blog.csdn.net/luoshabugui/article/details/108327936”参考该博客(感谢作者:丸子叮咚响),知道数据有以下基本内容:每......
  • sql学习:终于把sql case语句使用讲明白了,一看就懂
    作者|幸福it民工来源|今日头条在数据库查询分析中,经常遇到case条件判断,总结出来供大家参考,下面通过两个实例给大家讲解。case用途介绍:CASE是多条件分支语句,相比IF…ELSE语句,CASE语句进行分支流程控制可以使代码更加晰,易于理解。CASE语句也根据表达式逻辑值的真假来决定执......