Rya*_*yan 92 t-sql sql-server optimization
我有一个在交易过程中需要很长时间的查询.当我得到wait_type
它的过程时PAGEIOLATCH_SH
.
这种等待类型是什么意思,如何解决?
Qua*_*noi 112
来自MSDN:
PAGEIOLATCH_SH
当任务正在等待
I/O
请求中的缓冲区的锁存器时发生.锁存请求处于共享模式.长时间等待可能表示磁盘子系统出现问题.
在实践中,这几乎总是发生在大桌子上的大扫描.在有效使用索引的查询中几乎不会发生这种情况.
如果您的查询是这样的:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
Run Code Online (Sandbox Code Playgroud)
,检查您是否有复合索引(col1, col_primary_key)
.
如果你没有,那么你需要一个完整的,INDEX SCAN
如果PRIMARY KEY
选择了,或者SORT
如果选择了一个索引col1
.
它们都是I/O
大型表上非常耗费磁盘的操作.
小智 6
PAGEIOLATCH_SH
等待类型通常由于碎片或未优化的索引而出现.
过度PAGEIOLATCH_SH
等待类型的原因通常是:
为了尝试解决具有高PAGEIOLATCH_SH
等待类型的问题,您可以检查:
PAGEIOLATCH_SH
等待类型的根本原因始终牢记,如果在AlwaysOn AG中具有高安全性镜像或同步提交可用性,PAGEIOLATCH_SH
则可以预期增加/过多.
您可以在处理过多的SQL Server PAGEIOLATCH_SH等待类型一文中找到有关此主题的更多详细信息