SQL Server 阻塞运算符

8
有没有所有阻塞操作符的列表?我知道验证操作符是否是阻塞的唯一明确的方法是检查其属性并查看数据是否已排序。这是验证操作符是否阻塞的唯一方法吗?如果不是,还有哪些验证操作符是否阻塞的方法? 阻塞操作符需要在传递数据之前处理所有行,而非阻塞操作符会在读取和处理行后立即将行传递给其他操作符。 以下是阻塞与非阻塞的定义:
在GetRow方法中同时消耗输入行并产生输出行的迭代器。我们通常将这些迭代器称为“非阻塞”迭代器。
在生成任何输出行之前先消耗所有输入行(通常在Open方法中)的迭代器。我们将这些迭代器称为“阻塞”或“停止-开始”迭代器。 我为什么需要这些信息 主要是出于好奇心和个人知识。我没有做任何疯狂的事情。只是读了关于阻塞与非阻塞操作符的文章,想知道哪个操作符执行哪些操作。 这只是针对SSMS查询计划

1
“blocking”是什么意思? - Iswanto San
1
只是为了明确,你是在谈论 Showplan 逻辑和物理运算符还是 SSIS 数据转换运算符? - Jason Whitish
@jasonwhisman 我在谈论showplan的物理和逻辑运算符。 - gh9
2
这正是我担心的。不幸的是,我从未找到过任何相关的东西。我所做的就是查看MSDN运算符列表,并查看它们指示的操作方式(例如,Eager Spool)。http://msdn.microsoft.com/en-us/library/ms191158.aspx - Jason Whitish
2
这个主题相当复杂。一些操作符仅会阻塞一个子进程(例如哈希连接)。一些操作符通常不会阻塞,但也可能表现出部分阻塞的行为(例如嵌套循环连接)。 - Martin Smith
显示剩余4条评论
1个回答

3

1
是的。我想stackoverflow认为,如果你只发布一个链接,那么你并没有回答问题。比如,如果链接突然响应403....哇,这个链接确实响应了:O。 我知道这很老旧。但还是忍不住要说一句 :) - mathiasbn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接