位置: 编程技术 - 正文

sqlserver中几种典型的等待(sql server基本)

编辑:rootadmin

推荐整理分享sqlserver中几种典型的等待(sql server基本),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql server 常用语句,sql server基本,sql server基本运用,sql server常用,sqlserver常用语法,sql server 常用语句,sqlserver的基本语法,sql server常用,内容如对您有帮助,希望把文章链接给更多的朋友!

为了准备今年的双很久没有更新blog,在最近的几次sqlserver问题的排查中,总结了sqlserver几种典型的等待类型,类似于oracle中的等待事件,如果看到这样的等待类型时候能够迅速定位问题的根源,下面通过一则案例来把这些典型的等待处理方法整理出来:

第一种等待.memory等待

早上接到一用户反馈其RDS实例非常的慢,通过观察sqlserver活动会话监视器(active monitor)的waiting tasks(类似于mysql的thread running)可以看到有多w的等待任务,可以明确数据库现在已经出现了较大的瓶颈,紧接着通过resource waits看到数据库中有大量的memory内存等待:

看到是memory 资源等待后,为了立刻恢复用户应用,想到立刻去调大内存,发现该实例已经是G了,看来一下os的空余内存,还有较多的内存剩余,所以将内存调大到G,发现resource waits还是在memory上等待,同时这个时候的cpu使用率飙升,达到了%左右(之前在%左右的等待).这样解决不了根本问题,于是通过recent expensive queries,发现以下sql的逻辑读很高,执行非常频繁:

SELECT * FROM RefundOrder_Message messages0_ WHERE messages0_.Order_Id=@p0;

也可以通过如下方式获得造成内存等待的sql:SELECT st.text FROM sys.dm_exec_query_memory_grants req CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as ST where req.grant_time is NULL or req.granted_memory_kb is NULL

The columns grant_time and granted_memory_kb will be NULL for those queries which are waiting to get their requested memory

sp_helpindex RefundOrder_Message发现该表只有一个主键索引:

创建一下索引:create index ind_RefundOrder_Message_order_id on RefundOrder_Message(Order_Id);

第二种等待:latch等待

在索引加上去后,memory的等待立刻消失,但是resource waits的等待变为了 lock:

sqlserver中几种典型的等待(sql server基本)

通过以下内部视图可以发现如下调用出现了等待:SELECT ss.host_name, req.blocking_session_id,req.wait_type ,req.wait_time ,req.wait_resource ,req.transaction_id ,st.text FROM sys.dm_exec_requests req CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as STcross apply sys.dm_exec_sessions ss where req.status =N'suspended' and ss.session_id=req.session_id;

得到阻塞其他会话的sql:(@p0 int,@p1 nvarchar(),@p2 bit)SELECT TOP (@p0) this.* FROM ViewSalesOrder this_ WHERE this_.MemberCode = @p1 and this_.IsObsolete = @p2 ORDER BY this_.OdCode desc;

视图ViewSalesOrder是一张非常核心的视图,里面关联了订单,订单消息,订单发货等多个业务逻辑;查询条件中代入了membercode为店铺的名称,可能操作某个店铺的订单;通过ViewSalesOrder视图中的定义,membercode,IsObsolete ,OdCode 为salesOrder表的三个字段,查看salesOrder上并没有相应的索引,于是加上如下索引:create index ind_salesOrder_member on salesOrder(membercode,IsObsolete,code);在添加完索引后,数据库的waiting tasks 下降,batch requests提升:

第三种等待:lock

第三种等待是常见的等待,常见的情况在删除,更新的时候由于条件中没有合适的索引导致锁定的记录范围太大,导致阻塞其他的会话请求:

用户在在进行压测的时候发现一条更新语句执行的非常慢,导致整个系统都卡住:

update DD_ShenHe set ZF = 0 where zf is null;

查看dd_shenhe表上面的索引:

可以看到表中并没有zf字段的索引,而该表总共有w的数据,zf 为null的有条,所以在zf字段添加索引是合适的:

Create index ind_dd_shenhe_zf on dd_shenhe(zf);

添加完索引后,系统恢复正常。

SQL Server时间戳功能与用法详解 本文实例讲述了SQLServer时间戳功能与用法。分享给大家供大家参考,具体如下:一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间

T-sql语句修改SQL Server数据库逻辑名、数据库名、物理名的方法 本文实例讲述了T-sql语句修改SQLServer数据库逻辑名、数据库名、物理名的方法。分享给大家供大家参考,具体如下:更改MSSQL数据库物理文件名Sql语句的

SQL Sever查询语句大全集锦 一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语

标签: sql server基本

本文链接地址:https://www.jiuchutong.com/biancheng/318892.html 转载请保留说明!

上一篇:拯救你的数据 通过日志恢复MSSQL数据(拯救你的方法)

下一篇:SQL Server时间戳功能与用法详解(sqlserver时间戳数据更新时也修改默认时间)

  • 小规模纳税人开普票要交税吗
  • 企业所得税的计提和缴纳分录
  • 个调税新政策
  • 金蝶软件可以实现一键报税吗
  • 综合收益总额与什么有关
  • 基本户可以直接转账给个人吗
  • 货物已到发票未开具
  • 收到营业外收入流水账怎么做账
  • 开分公司赚钱吗
  • 承销债券收取的承销费属于什么收入
  • 两地拿工资怎么扣个税
  • 母公司收取服务费请示
  • 应付账款坏账处理分录怎么写
  • 印刷配件有哪些
  • 营改增后房地产企业增值税税收筹划存在问题
  • 酒店住宿可以开免税发票吗?
  • 国税里发票采集中的税控机动车发票是指什么发票?
  • 为什么增值税发票综合服务平台进不去
  • 关于金三地税打印控件
  • 最优五种个人捐赠方式税务比较?
  • 金蝶K3打印凭证下的过账和制单怎么新增名字
  • 会计准则一般选择哪个
  • 健身房会计一般做什么
  • 销售退回发票怎么处理
  • 发出商品确认收入的条件
  • 生产设备投资入股增值税
  • 拿库存商品抵债怎么做账
  • 汇回投资方的现值怎么算
  • 何为民办非企业
  • 固定资产确认的标准有哪些
  • 建筑业预缴企业所得税税率是多少
  • 工程施工暂估成本的账务处理流程
  • 财务如何核对会计信息
  • 企业购入固定资产要交印花税吗
  • js的发展历史
  • 蒙特利尔 攻略
  • Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
  • 结转损益类收入科目分录
  • 专项储备计提和使用
  • yii2中dropDownList实现二级和三级联动写法
  • 长期借款的利息计入
  • 监事和财务负责人可以一个人么
  • 异地提供建筑服务预缴企业所得税
  • commonjs的特点
  • 会计审核费用报销单的职责
  • 应收账款坏账准备计算表
  • 返利开红字发票怎么做账
  • 建筑业预缴增值税计算公式
  • 归属净利润和扣非净利润看哪一个
  • 建筑企业结转成本附件
  • 固定资产丢失进哪个科目
  • 劳务派遣公司工资发放方式
  • 流动资金周转次数计算公式
  • 收到的劳务发票怎么做账
  • 会计常用表格都有哪些技能
  • mysql 隐式游标
  • Win10系统中怎么将文件夹进行压缩
  • 生产环境如何对linux进行合理分区
  • windows7如何设置双屏显示
  • 怎么改电脑windows7
  • wind8桌面
  • 如何永久激活win11
  • /proc目录造成linux根目录爆满
  • cocos2dx schedule
  • shell中的-le
  • unity3d总结
  • Unable to execute dex: Multiple dex files define 解决方法
  • vue远程调用组件
  • node js模块
  • js面向对象的三大特性
  • js parsefloat parseint 转换函数
  • jquery按钮点击事件
  • js封装是什么意思
  • 湖北税务发票真伪查询网
  • 陕西省电子税务局官网登录入口网址
  • 境外承包工程款收入
  • 税务局追缴社保流程及办理期限
  • 机票电子发票怎么作废
  • 婚姻登记处婚俗改革宣传
  • 消费税的纳税人是买方还是卖方
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设