Answers:
PAGEIOLATCH_SH
当任务在闩锁上等待
I/O
请求中的缓冲区时发生。闩锁请求处于共享模式。长时间等待可能表明磁盘子系统有问题。
实际上,由于对大型表的大型扫描,几乎总是会发生这种情况。在高效使用索引的查询中几乎不会发生这种情况。
如果您的查询是这样的:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
,请检查您是否有的综合索引(col1, col_primary_key)
。
如果您没有,则需要一个完整的(INDEX SCAN
如果PRIMARY KEY
选择)或一个(SORT
如果col1
选择一个索引)。
它们I/O
在大型表上都是非常耗磁盘的操作。
SQL for Smarties
and Thinking in Sets
)和我的博客,当然:)
PAGEIOLATCH_SH
等待类型通常是由于索引碎片或未优化而出现的。
过多PAGEIOLATCH_SH
等待类型的原因通常是:
为了尝试解决高PAGEIOLATCH_SH
等待类型,您可以检查:
PAGEIOLATCH_SH
等待类型的根本原因始终牢记,如果AlwaysOn AG中的镜像安全性很高或同步提交可用性很高,PAGEIOLATCH_SH
则可能会增加/过多。
您可以在文章处理过多的SQL Server PAGEIOLATCH_SH等待类型中找到有关此主题的更多详细信息。