zoukankan      html  css  js  c++  java
  • SQL Server 迅速定位导致数据库服务器性能下降的存储过程或者查询

    生产环境中都会定期做release,release完成后有时候数据库服务器会出现CPU和内存飙升的现象,需要有监控机制监控。

    当这个问题出现的时候,大多数都是因为release时候有数据上的很大变动,统计信息并没有更新,导致缓存的执行计划出现很大的偏差,性能极具下降,尤其是那种每分钟多次调用的存储过程。

    这种情况下,只需要重新编译一下这个存储过程,使之生成新的正确的执行计划即可。

    如何迅速定位是哪个存储过程出现的问题,下面的方法快捷方便:

    第一步:  查出正在跑的存储过程,找到耗时长的spid, 多记录几个spid,大部分情况是,虽然spid不同,但是调用的存储过程却是同一个

    select p.session_id, p.request_id, p.start_time,percent_complete,
     p.status, p.command, p.blocking_session_id, p.wait_type, p.wait_time,
     p.wait_resource, p.total_elapsed_time as [total_elapsed_time_milliseconds],
     (p.total_elapsed_time/1000)/60 as [total_elapsed_time_minutes], p.open_transaction_count,
     p.transaction_isolation_level,
     substring(qt.text, p.statement_start_offset /2,
      (case when p.statement_end_offset = -1 then len(convert(nvarchar(max),qt.text) )* 2
      else p.statement_end_offset end - p.statement_start_offset) / 2 ) as sqlstatement,
     p.statement_start_offset, p.statement_end_offset, batch=qt.text
    from master.sys.dm_exec_requests p
     cross apply sys.dm_exec_sql_text(p.sql_handle) as qt
    where p.session_id>50

    第二步: 用DBCC 命令,定位存储过程

    dbcc inputbuffer(spid)

    第三步: 重新编译此存储过程

    sp_recompile spname

    搞定! 

  • 相关阅读:
    MySQL数据库基准压力测试工具之MySQLSlap使用实例
    WPF水珠效果按钮组
    获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)
    leaflet的入门开发(一)
    linux 安装pip 和python3
    python模拟Get请求保存网易歌曲的url
    Phalcon 上下文编码(Contextual Escaping)
    (七十七)地理编码与反地理编码
    设计模式简单介绍
    windows下安装Jenkins
  • 原文地址:https://www.cnblogs.com/yuzg/p/10868613.html
Copyright © 2011-2022 走看看