一个大的SQL语句操作,执行计划中包含了一个merge join操作,观察到SQL长时间处于IO_COMPLETION等待状态,如果是读取相关的表的数据,服务器应该全力为其服务,但是服务器的物理IO又远远没有达到瓶颈.这个IO_COMPLETION到底是在做什么?是表的数据页IO请求还在其他操作?如果是,跟PAGEIOLATCH_*是什么区别?如果不是,又是什么类型的操作? IO_COMPLETION 这种等待类型表示数据文件中的各种同步读和写操作,这些操作与表无关,并且从事务日志中读取.在等待…
原文:如何识别SQL Server中的IO瓶颈 原文出自: http://www.mssqltips.com/sqlservertip/2329/how-to-identify-io-bottlenecks-in-ms-sql-server/ 问题: 我们可能经常会遇到SQLServer数据库频繁关闭的情况.在分析了内存和CPU使用情况后,我们需要继续调查根源是否在I/O.我们应该如何识别SQLServer是否有I/O相关的瓶颈? 解决: 当数据页经常从缓冲池中移进移出的时候,I/O子系统就会成…
SQL Server中STATISTICS IO物理读和逻辑读的误区 大家知道,SQL Server中可以利用下面命令查看某个语句读写IO的情况 SET STATISTICS IO ON 那么这个命令的结果显示的物理读.逻辑读的IO单位大小是多少,比如结果显示有 物理读取 次 是代表 对硬盘做了1次物理IO吗? 在回答这个问题之前,需要先普及几个常识 在一般默认情况下 Windows的内存分页大小单位是4KB 数据库的最小读写单位是 8K页面 Windows操作系统的NTFS文件系统最小读写单位…
根据表名查找数据约束 SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'CMS_EventLog'; SELECT TABLE_NAME , COLUMN_NAME , CONSTRAINT_NAME -- <<-- the one you want! FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'tbm_cti_CustomT…
原文:论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态) 求助:等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态 http://bbs.csdn.net/topics/391834154等待类型 : MSSEARCH   SQL server 2005 我KILL了一个等待类型为MSSEARCH的进程,然后KILL之后sys.sysprocesses 表里面的status=runnable ,cmd=KILLED/ROLLBACK  . 要命的…
本文出处:http://www.cnblogs.com/wy123/p/6856802.html 进程的状态转换 在说明SOS_SCHEDULER_YIELD等待之前,先简要介绍一下进程的状态(迷迷糊糊记得操作系统原理课上讲过,三态五态转换的,比下面这个图要复杂,大部分都还给老师了). 如下图,分别是:运行态,阻塞态,就绪态.各个状态之间的转换关系及粗略原因如下: 运行态-->阻塞态,原因:等待某种资源的完成,比如IO等. 阻塞态-->就绪态,原因:锁请求的资源已完成,加入获取CPU队列中(g…
OLEDB等待事件介绍 OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一.它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Provider发生了调用请求并等待数据库返回所需的数据.它出现在远程系统(remote system )或网络连接速度不够快,因此调用服务器必须等待要返回结果的情况下.OLEDB等待事件一般是由那些活动造成呢?它一般由下面一些事件引起: 远程过程调用(Remote procedure calls) 链接…
简介     最近在一个客户那里注意到一个计数器很高(Forwarded Records/Sec),伴随着间歇性的磁盘等待队列的波动.本篇文章分享什么是forwarded record,并从原理上谈一谈为什么Forwarded record会造成额外的IO.   存放原理     在SQL Server中,当数据是以堆的形式存放时,数据是无序的,所有非聚集索引的指针存放指向物理地址的RID.当数据行中的变长列增长使得原有页无法容纳下数据行时,数据将会移动到新的页中,并在原位置留下一个指向新页的指…
简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相关观念有一个理解. 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理解死锁.比如说一个经典的例子就是汽车(主体)对于道路(资源)的征用,如图1所示. 图1.对于死锁的直观理解 在图1的例子中,每队汽车都占有一条道路,但都需要另外一队汽车所占有的另一条道路,因此互相阻塞,谁都无法前行,因此造成了死锁.由这个简单的例子可以看出,发生死锁需要四个必要条件,如下: 1)互斥…
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简单的举几个应用场景: 在线生产库为何突然宕机?数百张数据表为何不翼而飞?刚打好补丁的系统为何屡遭黑手?新添加的信息表为何频频丢失?某张表字段的突然更改,究竟为何人所为?这些个匿名的访问背后,究竟是人是鬼?突然增加的增量数据,究竟是对是错?数百兆的日志爆炸式的增长背后又隐藏着什么?这一且的背后,是应用…