存储过程执行计划缓存查询

SELECT st.Text,
SUBSTRING(
st.Text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.Text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1
),
qp.query_plan,
qs.plan_handle,
qs.sql_handle,
DB_NAME(st.dbid) as dbname,
qs.creation_time,
qs.last_execution_time,
getdate() as currenttime,
qs.execution_count,
qs.last_worker_time,
qs.last_physical_reads,
qs.last_logical_reads,
qs.last_elapsed_time
FROM sys.dm_exec_query_stats qs 
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st 
OUTER APPLY sys.dm_exec_query_plan(qs.plan_handle) as qp 
WHERE 1=1
and st.text like ‘%Grants_SumGrantsFromVesting%‘
order by creation_time desc

原文地址:https://www.cnblogs.com/lilongchuan/p/9395349.html

时间: 2024-10-12 05:33:52

存储过程执行计划缓存查询的相关文章

SQL Server 执行计划缓存

原文:SQL Server 执行计划缓存 标签:SQL SERVER/MSSQL SERVER/数据库/DBA/内存池/缓冲区 概述 了解执行计划对数据库性能分析很重要,其中涉及到了语句性能分析与存储,这也是写这篇文章的目的,在了解执行计划之前先要了解一些基础知识,所以文章前面会讲一些概念,学起来会比较枯燥,但是这些基础知识非常重要. 目录 概述 基础概念 怎样缓存执行计划 SQL Server自动删除执行计划 重新编译执行计划 测试 执行计划相关系统视图 手动清空缓存执行计划 测试索引更改对执

SQLServer中的执行计划缓存由于长时间缓存对性能造成的干扰

本文出处:http://www.cnblogs.com/wy123/p/7190785.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 先抛出一个性能问题,前几天遇到一个生产环境性能极其低下的存储过程,开发人员根据具体的业务逻辑和返回的数据量,猜测到这个存储过程的执行应该不会有这么慢.当时意识到可能是执行计划缓存的问题,因为当前这个存储过程的写法还是比较遵守参数化SQL的规范的(如果是动态即席查询SQL就不

谈一谈SQL Server中的执行计划缓存(下)

简介 在上篇文章中我们谈到了查询优化器和执行计划缓存的关系,以及其二者之间的冲突.本篇文章中,我们会主要阐述执行计划缓存常见的问题以及一些解决办法. 将执行缓存考虑在内时的流程 上篇文章中提到了查询优化器解析语句的过程,当将计划缓存考虑在内时,首先需要查看计划缓存中是否已经有语句的缓存,如果没有,才会执行编译过程,如果存在则直接利用编译好的执行计划.因此,完整的过程如图1所示. 图1.将计划缓存考虑在内的过程 图1中我们可以看到,其中有一步需要在缓存中找到计划的过程.因此不难猜出,只要是这一类查

谈一谈SQL Server中的执行计划缓存(上)

原文:谈一谈SQL Server中的执行计划缓存(上) 简介     我们平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径.当我们写的SQL语句传到SQL Server的时候,查询分析器会将语句依次进行解析(Parse).绑定(Bind).查询优化(Optimization,有时候也被称为简化).执行(Execution).除去执行步骤外,前三个步骤之后就生成了执行计划,也就是SQL Server按照该计划获取物理数据方式,最后执行步骤按照执行计划执行查询从而获得结果.但查询

执行计划缓存

执行计划编译是需要时间的,为了提高效用率,是要缓存的,可用如下方式查看:–查看执行计划的缓存 SELECT UseCounts,RefCounts, Cacheobjtype, Objtype,dbid, ISNULL(DB_NAME(dbid),'ResourceDB') AS DatabaseName, TEXT AS SQL FROM sys.dm_exec_cached_plans CROSS APPLY sys.dm_exec_sql_text(plan_handle) ORDER B

数据库-Oracle通过执行计划查看查询语句是否使用索引【转】

1.生成执行计划 explain plan for select * from t_call_records where t_bjhm='123456' 备注:explain plan for后面为要生成执行计划的查询语句 2.查看执行计划结果 select * from table(dbms_xplan.display) 如上图所示,TABLE ACCESS FULL为全表扫描; 为t_bjhm列加上索引后生成执行计划并查看结果: 如上图所示,index range scan为索引范围扫描;

Sql Server中执行计划的缓存机制

Sql查询过程 当执行一个Sql语句或者存储过程时, Sql Server的大致过程是 1. 对查询语句进行分析,将其生成逻辑单元,并进行基本的语法检查 2. 生成查询树(会将查询语句中所有操作转换为对基表的操作,比如将视图转换为基表查询) 3. 生成执行计划(针对查询树会生成很多不同的执行计划) 4. 查询优化器基于每个执行计划的查询成本和数据库中的统计信息,选择一个最优执行计划 5. 最优执行计划会被缓存在数据库的缓存池中.当再次执行相同Sql语句时,缓存的执行计划会被直接使用.这样可以提高

正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询

查看表相关命令 - 查看表结构   desc 表名- 查看生成表的SQL   show create table 表名- 查看索引   show index from  表名 使用索引和不使用索引 由于索引是专门用于加速搜索而生,所以加上索引之后,查询效率会快到飞起来. # 有索引 mysql> select * from tb1 where name = 'zhangqiye'; +-----+-------------+---------------------+--------------

MySQL---正确使用索引、limit分页、执行计划、慢日志查询

正确使用索引 数据库表中添加索引后确实会让查询速度起飞,但前提必须是正确的使用索引来查询,如果以错误的方式使用,则即使建立索引也会不奏效.即使建立索引,索引也不会生效: 1 - like '%xx' 2 select * from tb1 where name like '%cn'; 3 - 使用函数 4 select * from tb1 where reverse(name) = 'wupeiqi'; 5 - or 6 select * from tb1 where nid = 1 or e