什么是执行计划中的并行性(分布流)
What is Parallelism(Distribute Streams) in Execution plan
Execution plan
中的 Parallelism(Distribute Streams)
操作是什么。为什么它增加了上一个操作的行数。
查询:
SELECT TOP 5000 MM.MEMBER_ID,
MM.MEMBER_NO,
MM.MEMBER_NAME,
MM.TRADE_CLASS,
MT.DESCRIPTION,
MS.DESCRIPTION,
MAI.ADDRESS_1,
MAI.ADDRESS_2,
MAI.CITY,
MAI.STATE,
MAI.ZIP
FROM MEMBER_MASTER MM
INNER JOIN MEMBER_TYPE MT
ON MT.CODE = MM.MEMBER_TYPE
INNER JOIN MEMBER_STATUS MS
ON MS.CODE = MM.MEMBER_STATUS
INNER JOIN MEMBER_ADDRESS_INFO MAI
ON MM.MEMBER_ID = MAI.MEMBER_ID
WHERE MAI.PRIMARY_ADDRESS_FLAG = 'YES'
执行计划:
从上面的执行计划可以清楚地看到行数从39,771增加到1,272,672。为什么会这样?
系统已决定它可以受益于并行执行某些处理。在这种情况下,显然决定让 32 个独立线程处理行集 (1272672 = 39771*32)。它不应该引起关注 - 通常 - "duplicate" 行将被后来的 (Gather Streams)
操作消除。
Execution plan
中的 Parallelism(Distribute Streams)
操作是什么。为什么它增加了上一个操作的行数。
查询:
SELECT TOP 5000 MM.MEMBER_ID,
MM.MEMBER_NO,
MM.MEMBER_NAME,
MM.TRADE_CLASS,
MT.DESCRIPTION,
MS.DESCRIPTION,
MAI.ADDRESS_1,
MAI.ADDRESS_2,
MAI.CITY,
MAI.STATE,
MAI.ZIP
FROM MEMBER_MASTER MM
INNER JOIN MEMBER_TYPE MT
ON MT.CODE = MM.MEMBER_TYPE
INNER JOIN MEMBER_STATUS MS
ON MS.CODE = MM.MEMBER_STATUS
INNER JOIN MEMBER_ADDRESS_INFO MAI
ON MM.MEMBER_ID = MAI.MEMBER_ID
WHERE MAI.PRIMARY_ADDRESS_FLAG = 'YES'
执行计划:
从上面的执行计划可以清楚地看到行数从39,771增加到1,272,672。为什么会这样?
系统已决定它可以受益于并行执行某些处理。在这种情况下,显然决定让 32 个独立线程处理行集 (1272672 = 39771*32)。它不应该引起关注 - 通常 - "duplicate" 行将被后来的 (Gather Streams)
操作消除。