DB2链接服务器上的远程插入导致执行计划中的表/ Eager Spool

时间:2014-09-14 21:21:44

标签: sql sql-server db2 linked-server sql-execution-plan

当我执行下面的SQL时,我可以看到在插入DB2表之前,所有记录都在TempDb中缓冲。这会大量杀死性能。 执行计划表明Table / Eagle Spool负责此行为。

有谁知道如何消除这个Tempdb缓冲?链接服务器设置?提示强制表盘不发生? NB。 RecID上有一个聚集索引。

感谢。

INSERT INTO OPENQUERY(SV99TNDTA,'select OBEECD,OBAWCD from SV99TNDTA.AAOBCPP') ([OBEECD],     [OBAWCD]) 
SELECT Product_Type, 
Fnd_External_Account_Nbr 
FROM [TEST] 
WHERE RecID BETWEEN 0 AND 200

Exceution Plan XML:

<?xml version="1.0" encoding="utf-16"?>

<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd =“http://www.w3.org/2001/XMLSchema”Version =“1.1”Build =“10.50.4000.0”xmlns =“http://schemas.microsoft。 COM / SQLSERVER / 2004/07 /显示计划“&GT;

  <BatchSequence>
<Batch>
  <Statements>
    <StmtSimple StatementCompId="1" StatementId="1" StatementText="SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED &#xD;" StatementType="SET TRANSACTION ISOLATION LEVEL" />
  </Statements>
  <Statements>
    <StmtSimple StatementCompId="2" StatementEstRows="88.0909" StatementId="2" StatementOptmLevel="FULL" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" StatementSubTreeCost="0.0174735" StatementText="&#xA;INSERT INTO OPENQUERY(SV99TNDTA,'select OBEECD,OBAWCD from SV99TNDTA.AAOBCPP') ([OBEECD], [OBAWCD]) &#xD;&#xA;SELECT Product_Type, &#xD;&#xA;Fnd_External_Account_Nbr &#xD;&#xA;FROM [TEST] &#xD;&#xA;WHERE RecID BETWEEN 0 AND 200" StatementType="INSERT" QueryHash="0xACC23A29A73BF91D" QueryPlanHash="0xC7A68418FF0DEA2D">
      <StatementSetOptions ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" NUMERIC_ROUNDABORT="false" QUOTED_IDENTIFIER="true" />
      <QueryPlan CachedPlanSize="24" CompileTime="4" CompileCPU="4" CompileMemory="184">
        <RelOp AvgRowSize="9" EstimateCPU="8.80909E-05" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="88.0909" LogicalOp="Remote Insert" NodeId="0" Parallel="false" PhysicalOp="Remote Insert" EstimatedTotalSubtreeCost="0.0174735">
          <OutputList />
          <RemoteModify RemoteSource="SV99TNDTA" RemoteObject="select OBEECD,OBAWCD from SV99TNDTA.AAOBCPP">
            <SetPredicate>
              <ScalarOperator ScalarString="[MSDASQL].[OBEECD] = [Expr1006],[MSDASQL].[OBAWCD] = [Expr1007]">
                <ScalarExpressionList>
                  <ScalarOperator>
                    <MultipleAssign>
                      <Assign>
                        <ColumnReference Table="[MSDASQL]" Column="OBEECD" />
                        <ScalarOperator>
                          <Identifier>
                            <ColumnReference Column="Expr1006" />
                          </Identifier>
                        </ScalarOperator>
                      </Assign>
                      <Assign>
                        <ColumnReference Table="[MSDASQL]" Column="OBAWCD" />
                        <ScalarOperator>
                          <Identifier>
                            <ColumnReference Column="Expr1007" />
                          </Identifier>
                        </ScalarOperator>
                      </Assign>
                    </MultipleAssign>
                  </ScalarOperator>
                </ScalarExpressionList>
              </ScalarOperator>
            </SetPredicate>
            <RelOp AvgRowSize="21" EstimateCPU="0.000131913" EstimateIO="0.013125" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="88.0909" LogicalOp="Eager Spool" NodeId="1" Parallel="false" PhysicalOp="Table Spool" EstimatedTotalSubtreeCost="0.0173854">
              <OutputList>
                <ColumnReference Column="Expr1006" />
                <ColumnReference Column="Expr1007" />
              </OutputList>
              <Spool>
                <RelOp AvgRowSize="21" EstimateCPU="8.80909E-06" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="88.0909" LogicalOp="Compute Scalar" NodeId="2" Parallel="false" PhysicalOp="Compute Scalar" EstimatedTotalSubtreeCost="0.00412845">
                  <OutputList>
                    <ColumnReference Column="Expr1006" />
                    <ColumnReference Column="Expr1007" />
                  </OutputList>
                  <ComputeScalar>
                    <DefinedValues>
                      <DefinedValue>
                        <ColumnReference Column="Expr1006" />
                        <ScalarOperator ScalarString="CONVERT_IMPLICIT(char(4),[WBC_PreConv].[dbo].[TEST].[Product_Type],0)">
                          <Convert DataType="char" Length="4" Style="0" Implicit="true">
                            <ScalarOperator>
                              <Identifier>
                                <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="Product_Type" />
                              </Identifier>
                            </ScalarOperator>
                          </Convert>
                        </ScalarOperator>
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Column="Expr1007" />
                        <ScalarOperator ScalarString="CONVERT_IMPLICIT(char(10),[WBC_PreConv].[dbo].[TEST].[Fnd_External_Account_Nbr],0)">
                          <Convert DataType="char" Length="10" Style="0" Implicit="true">
                            <ScalarOperator>
                              <Identifier>
                                <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="Fnd_External_Account_Nbr" />
                              </Identifier>
                            </ScalarOperator>
                          </Convert>
                        </ScalarOperator>
                      </DefinedValue>
                    </DefinedValues>
                    <RelOp AvgRowSize="20" EstimateCPU="0.0002539" EstimateIO="0.00386574" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="88.0909" LogicalOp="Clustered Index Seek" NodeId="3" Parallel="false" PhysicalOp="Clustered Index Seek" EstimatedTotalSubtreeCost="0.00411964" TableCardinality="10000000">
                      <OutputList>
                        <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="Product_Type" />
                        <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="Fnd_External_Account_Nbr" />
                      </OutputList>
                      <IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="false" ForceSeek="false" ForceScan="false" NoExpandHint="false">
                        <DefinedValues>
                          <DefinedValue>
                            <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="Product_Type" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="Fnd_External_Account_Nbr" />
                          </DefinedValue>
                        </DefinedValues>
                        <Object Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Index="[RecID]" IndexKind="Clustered" />
                        <SeekPredicates>
                          <SeekPredicateNew>
                            <SeekKeys>
                              <StartRange ScanType="GE">
                                <RangeColumns>
                                  <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="RecID" />
                                </RangeColumns>
                                <RangeExpressions>
                                  <ScalarOperator ScalarString="(0)">
                                    <Const ConstValue="(0)" />
                                  </ScalarOperator>
                                </RangeExpressions>
                              </StartRange>
                              <EndRange ScanType="LE">
                                <RangeColumns>
                                  <ColumnReference Database="[WBC_PreConv]" Schema="[dbo]" Table="[TEST]" Column="RecID" />
                                </RangeColumns>
                                <RangeExpressions>
                                  <ScalarOperator ScalarString="(200)">
                                    <Const ConstValue="(200)" />
                                  </ScalarOperator>
                                </RangeExpressions>
                              </EndRange>
                            </SeekKeys>
                          </SeekPredicateNew>
                        </SeekPredicates>
                      </IndexScan>
                    </RelOp>
                  </ComputeScalar>
                </RelOp>
              </Spool>
            </RelOp>
          </RemoteModify>
        </RelOp>
      </QueryPlan>
    </StmtSimple>
  </Statements>

</Batch>
  </BatchSequence>

</ShowPlanXML>

0 个答案:

没有答案