--==================================================================================
--SLEEP_BPOOL_FLUSH

MSDN上如是说:当检查点为了避免磁盘子系统泛滥而中止新 I/O 的发布时出现。

场景:
在做以下操作时
1. 在修改数据库属性,如修改还原恢复模式简单为完整,长时间不能运行完毕
2. 还原数据库时,消息提示100% 但是在运行

经过调查,发现等待为SLEEP_BPOOL_FLUSH,进一步调查,发现该数据库上及其容易产生脏页(修改1W条记录可能会照成2W的脏页)

解决办法:
1. 将数据量较大的表和索引拆分(或分区)或归档历史数据
2. 建立合适索引或修改索引字段顺序

--==================================================================================
--LCK_M_XX
由于资源被加锁而导致其线程因锁不兼容造成阻塞

造成的原因
1>不合理的事务隔离级别
2>过大的事务长期占有某些资源
3>执行效率不高的语句

解决方案
1>设置合理的事务隔离级别
2>使用乐观并发
3>读写分离
4>优化DML语句,建立合理的索引
5>避免使用不合理的锁提示
6>查找造成阻塞的其他原因

--==================================================================================
--PAGELATCH_XX

等待访问内存中的页面

PAGELATCH_XX与PAGEIOLATCH_XX完全不同

解决TempDB上的PAGELATCH_XX方案
1>启用TF 1118 来阻止将新创建的表放入混合区
2>增加文件个数来减少对系统分配页的争抢
3>不要显示Drop临时表来减少非非配页的争抢(存储过程中的临时表可以被重用)

解决页拆分引起的问题
1>GUID类型的索引键造成的页拆分,设置合适的填充因子或修改GUID键
2>数据变化过大引起的页拆分,将变化较大(长度)且变化频率较高的列拆分到其他表
3>控制索引键的长度

解决高并发插入自增表导致的插入热点
1>使用随机或组合键来将数据分散到表中各个部分而不是尾部
2>修改架构,将数据插入到多个表中或多个数据库中

--==================================================================================
--WRITELOG
等待将日志快flush到日志文件

可能原因
1>导致大量事务日志的操作产生,如果索引维护
2>事务并发度较高
3>IO系统瓶颈
4>频繁页拆分

解决方案
1>查看LOGBUFFER等待,是否存在对日志缓冲区的争抢
2>查看日志所在磁盘是否存在队列
3>查看事务平均大小,是否存在小事务频繁操作,将小事务合并为大事务
4>删除无用索引
5>业务拆分,由多个数据库来承担压力
6>提高日志磁盘的性能
7>修改索引,减少页分裂

--==================================================================================
--ASYNC_NETWORK_IO
当返回查询结果给客户端时,客户端未能及时处理

可能原因
1>网络不佳导致传输速率低
2>客户端程序处理数据存在问题
3>服务端返回过多数据

解决方案
1>修改客户端程序,避免出现RBAR(Row by agonizing Row)
2>避免一次返回给客户端过多数据,如果分页等
3>检查网络路由
4>检查网络硬件

--==================================================================================
--PAGEIOLATCH_XX

常见的有PAGEIOLATCH_SH和PAGEIOLATCH_EX,在数据页从磁盘读取到内存中发生等待,SH表示数据页用于读取,EX表示数据页用于修改

可能导致的原因
1>IO系统的确存在问题,存在IO瓶颈
2>执行计划不佳导致扫描
3>内存存在压力导致页在内存中的存活时间过短

解决方案:
1>检查执行计划
2>检查是否存在内存压力
3>检查是否存在其他应用导致IO压力
4>检查存储是否满足需求

--==================================================================================
--CXPACKET
在执行并行查询计划时,由于各并行线程之间任务分配不均匀或某个线程被阻塞,导致CXPACKET 值增加

导致CXPACKET等待高的原因有很多,不能盲目地修改 MAXDOP的值或修改实例级别的最大并发度
可能原因有:
1>统计过期导致生成低效的执行计划
2>缺乏索引导致表扫描
3>中间结果集无法预估结果集行数,导致执行计划低效
4>某个线程因其他资源被阻塞

解决方案
1>检查执行计划是否高效
2>修改语句的并发度
3>修改实例级别的最大并发度

补充:
建议将MAXDOP的值设置为小于逻辑CPU的数,以避免单个查询阻塞所有请求

Wait--常见的等待类型的更多相关文章

  1. 资源等待类型sys.dm_os_wait_stats

    动态管理视图  sys.dm_os_wait_stats 返回执行的线程所遇到的所有等待的相关信息.可以使用该聚合视图来诊断 SQL Server 以及特定查询和批处理的性能问题. 列名 数据类型 说 ...

  2. Android自动化压力测试之Monkey Test Android常见的错误类型及黑白名单的使用方法(四)

    Android常见的错误类型有两种 1.ANR类型 1)在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸) 2)BroadcastReceiver在10秒内没有执行完毕 2.Crash类型 1)异 ...

  3. [转载]sql server 等待类型

    下表列出各任务所遇到的等待类型. 等待类型 说明 ASYNC_DISKPOOL_LOCK 当尝试同步并行的线程(执行创建或初始化文件等任务)时出现. ASYNC_IO_COMPLETION 当某任务正 ...

  4. sql server 各种等待类型-转

    等待的类型 资源等待 当某个工作线程请求访问某个不可用的资源(因为该资源正在由其他某个工作线程使用,或者该资源尚不可用)时,便会发生资源等待.资源等待的示例包括锁等待.闩锁等待.网络等待以及磁盘 I/ ...

  5. sql server等待类型

    sql server 各种等待类型-转 sql server各个等待类型及解决办法:https://www.sqlskills.com/help/waits/writelog/其他等待类型的描述和解决 ...

  6. [AlwaysOn Availability Groups]AlwaysOn等待类型

    AlwaysOn等待类型 当排查AlwaysOn延迟,等待统计信息可以在DMV中查看累计的AlwaysOn等待类型. 查看AlwaysOn等待类型 SELECT * FROM sys.dm_os_wa ...

  7. SqlServer性能急剧下降,查看所有会话的状态及等待类型---Latch_Ex

    当某个数据库文件空间用尽,做自动增长的时候,同一时间点只能有一个用户人员可以做文件自动增长动作,其他任务必须等待,此时会出现Latch资源的等待.使用sp_helpdb查看业务数据库时发现:该数据库设 ...

  8. SQL Server中与IO相关的等待类型:IO_COMPLETION和PAGEIOLATCH_*

    一个大的SQL语句操作,执行计划中包含了一个merge join操作,观察到SQL长时间处于IO_COMPLETION等待状态,如果是读取相关的表的数据,服务器应该全力为其服务,但是服务器的物理IO又 ...

  9. sql server 性能调优之 资源等待内存瓶颈的三种等待类型

    一.概述 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),SOS_RESERVEDMEMBLOCKLIST(0x007B),RESO ...

  10. 游戏开发中IIS常见支持MIME类型文件解析

    游戏开发中IIS常见支持MIME类型文件解析 .apkapplication/vnd.android .ipaapplication/vnd.iphone .csbapplication/octet- ...

随机推荐

  1. C#如何消除绘制图形缩放时抖动,总结

    一.手动双缓冲 首先定义一个BitmapBitmap backBuffer = new Bitmap(画布宽度, 画布高度);然后获取这个Bitmap的GraphicsGraphics graphic ...

  2. GNU/Linux LVM 原理图释

    逻辑卷管理器(英语:Logical Volume Manager,缩写为LVM),又译为逻辑卷宗管理器.逻辑扇区管理器.逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume ...

  3. JBPM4.4学习笔记

    1.JBPM4表说明: JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表 JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST ...

  4. Windows下DOS命令大全(经典收藏)

    copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C: xcopy 要复制的文件或 ...

  5. /etc/rc5.d/s991local: line25: eject:command not found错误

      使用虚拟机安装centos出现错误,原因是我使用的镜像是最小级别的,没有图形化界面,只有终端窗口 有人用vmware安装minimal centos报错/etc/rc5.d/s99local : ...

  6. 使用JavaScript弹出Confirm对话框

    方法1: 这个比较简单,一句话: <a href="error.htm" onclick="javascript:return confirm('are you s ...

  7. WWW.LoadFromCacheOrDownload

    [WWW.LoadFromCacheOrDownload] static WWWLoadFromCacheOrDownload(string url, int version, uint crc = ...

  8. Tensorflow CIFAR10 (二分类)

    数据的下载: (共有三个版本:python,matlab,binary version 适用于C语言) http://www.cs.toronto.edu/~kriz/cifar-10-python. ...

  9. C++ split

    /*************************************************Function: splitDescription: 根据空格切分字符串Calls: // 被本函 ...

  10. 面向对象的JavaScript-002

    1. <script type="text/javascript"> // Define the Person constructor var Person = fun ...