SQL Server中与IO相关的守候类型:IO_COMPLETION和PAGEIOLATCH_*

发布时间:2019-10-30  栏目:SQL  评论:0 Comments

多个大的SQL语句操作,实行陈设中包含了三个merge
join操作,观看到SQL长日子处在IO_COMPLETION等待意况,借使是读取相关的表的数额,服务器应该努力为其服务,不过服务器的情理IO又远远未有达到规定的标准瓶颈。
这个IO_COMPLETION到底是在做哪些?是表的数额页IO哀求还在其他操作?若是是,跟PAGEIOLATCH_*是何等分裂?借使不是,又是何等项目标操作?

上次想把项目标数据库由SQL Server 2006改动为SQL Server
二〇〇二结果遇上这么一个难点.在接二连三SQL Server
二〇〇二后,在将一个bit类型的数量转变做立异是发出数据类型转变失败.

IO_COMPLETION
这种等待类型表示数据文件中的种种同步读和写操作,那个操作与表非亲非故,並且从事情日志中读取。
在伺机I/O操作达成时发出。这种等待类型通常表示非数据页I/O。数据页I/O完结等待作为PAGEIOLATCH_*等待现身。
IO_COMPLETION与PAGEIOLATCH_*的最大的差异是就在于IO_COMPLETION是非数据页的等候,而PAGEIOLATCH_*是数据页的IO等待
IO_COMPLETION这种等待类型表示数据文件中的各个同步读和写操作,那么些操作与表非亲非故,而且从事情日志中读取。

 

席卷以下二种情形:
1.从作业日志中读取日志块(在形成从磁盘读取日志的其他操作时期——举例复苏)
2.在好多操作中,比方恢复生机、DB运维、复苏时期从磁盘读取分配位图(比如GAM、SGAM、PFS页)
3.将中间排序缓冲区写入磁盘(称为“鲍勃s”)
4.在merge join时期,向磁盘写入可能读取磁盘中的merge join的结果
5.读写eager spools(数据缓存到磁盘的意气风发种展现)到磁盘
6.从作业日志中读取VLF头音信。

主题素材重放:

 

先新建一张表:

参考:https://www.sqlskills.com/help/waits/io_completion/

图片 1

插入两条测量试验数据:

图片 2

在SQL Server 二零零六中做立异操作:

图片 3

两条立异任何通过.

 

在SQL Server 二〇〇三中做立异操作:

图片 4 

其次条语句不一致通过,数据类型转换败北.总之在SQL Server
贰零零柒中是支撑将字符串类型的值调换为bit值的.並且在MSDN上边见到的也的确如此:

 

能够取值为 1、0 或 NULL 的大背头数据类型。

Microsoft SQL Server 二〇〇六 Database Engine 优化了 bit
列的囤积。假如表中的列为 8 bit 或更少,则那个列作为 1
个字节存款和储蓄。纵然列为 9 到 16 bit,则那个列作为 2 个字节存款和储蓄,就那样类推。

字符串值 TRUE 和 FALSE 能够转变为以下 bit 值:TRUE 转变为 1,FALSE
转换为 0。

 

除此以外还大概有三个处境:

图片 5

 

在SQL Server
二零零五的回到全数行中,自身手工增添bit类型的数额时,只可以填写字符串值,也正是true可能false,而在SQL
Server  二〇〇四中会有二个自动转载的职能,比如你填写0或许false,会自动识别为0.

留下评论

网站地图xml地图