签到成功

知道了

CNDBA社区CNDBA社区

清除慢SQL语句的执行计划缓存

2024-06-20 22:26 721 0 原创 DM数据库
作者: shinelifes

在生产系统中,客户反映某个业务功能查询突然变慢,经过数据库慢SQL日志和应用WEB系统综合分析,发现是其中一条SQL语句执行时间变长,原来执行时间是2秒内,现在执行时间是5分钟左右,严重影响客户使用体验。业务方面没有增加新功能,数据库方面没有变更。检查该SQL语句执行计划,在数据库中该SQL语句存在两个执行计划。SQL语句走了不正确的执行计划,导致执行时间变长。
SQL语句执行时间突然变长的情况,可能由以下原因导致:
(1)表数据统计信息不准确,如数据库表批量写入了大量数据后没有及时更新统计信息。
(2)索引无效或没有走正确的索引,如以时间字段创建的分区表,没有走分区字段。
(3)业务增加新功能后,没有进行相应的SQL优化。如业务功能中增加了关联表,新表没有创建合适的索引。
该如何清理SQL语句的执行计划缓存,以下方法可供参考。

1、查询正在执行中的慢SQL语句的完整SQL

select *
from ( select SESS_id ,
sql_text ,
datediff(SS, last_recv_time, sysdate) SQL执行时间,
sf_get_session_sql(SESS_id) FULLSQL
from v$sessions
where state=’ACTIVE’ ) where SQL执行时间>2 order by SQL执行时间 DESC;

可以知道正在数据库执行的SQL语句,时间是秒。http://www.cndba.cn/shinelifes/article/131557

2、查询SQL语句的SQL_ID

select * from SYS.”V$LONG_EXEC_SQLS” where exec_time>2000 and sess_id=’140310373996480’;

通过sess_id值在V$LONG_EXEC_SQLS视图中找到语句执行的详细信息,只有执行成功的语句才会写入到V$LONG_EXEC_SQLS视图中,v$sessions视图中执行中或执行失败的语句不会写入到V$LONG_EXEC_SQLS视图中。http://www.cndba.cn/shinelifes/article/131557

http://www.cndba.cn/shinelifes/article/131557
http://www.cndba.cn/shinelifes/article/131557
http://www.cndba.cn/shinelifes/article/131557

3、查询SQL语句的执行计划

SELECT *FROM V$SQL_PLAN WHERE SQL_ID=3298; —hash_value=1386570604

将V$LONG_EXEC_SQLS视图中查询到的SQL_ID值代入到V$SQL_PLAN中,可以查到该语句的SQL执行计划。

http://www.cndba.cn/shinelifes/article/131557
http://www.cndba.cn/shinelifes/article/131557

4、查询SQL语句的执行计划缓存

SELECT *FROM V$CACHEPLN WHERE hash_value=’1386570604’;

将V$SQL_PLAN视图中查询到的hash_value值代入到V$CACHEPLN中,可以查询到该SQL语句的CACHE_ITEM(即CACHE的地址)。http://www.cndba.cn/shinelifes/article/131557

5、清除SQL语句的执行计划缓存

命令:sp_clear_plan_cache(CACHE_ITEM);
sp_clear_plan_cache(140316170430592);

(1)sp_clear_plan_cache(CACHE_ITEM);可以清除指定SQL语句的计划缓存。
(2)sp_clear_plan_cache();可以清除数据库的所有SQL语句的执行计划。在生产系统,该命令禁止使用。http://www.cndba.cn/shinelifes/article/131557http://www.cndba.cn/shinelifes/article/131557

版权声明:本文为博主原创文章,未经博主允许不得转载。

清除慢SQL语句的执行计划缓存

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
shinelifes

shinelifes

关注
  • 28
    原创
  • 0
    翻译
  • 0
    转载
  • 0
    评论
  • 访问:32359次
  • 积分:99
  • 等级:注册会员
  • 排名:第29名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ