2011-01-24 8 views
2

내 asp.net 응용 프로그램에서 양식을 제출할 때 저장 프로 시저가 얼마나 오래 걸릴지 사용자에게 보여주고 싶습니다. asp.net 응용 프로그램에서 찾을 수있는 방법이 있습니까? SQL Server에서 예상 비용으로 쿼리 계획을 예측 한 것과 같습니다. asp.net 웹 페이지에 표시 할 수 있습니까?asp.net의 SP에 대한 예상 비용

+0

예상 쿼리 계획에 시간이 표시되지 않습니다. 계획에있는 다른 기능과 관련된 정보를로드하는 "비용"만 표시합니다. 그것에 "시간"을 첨부 할 수 없습니다. –

+0

@ 마이클 : 귀하의 의견을 주셔서 감사합니다, 그 asp.net webform에 그 비용을 보여줄 수있는 방법이 있습니까? – Zerotoinfinity

+2

너무 많은 변수가 있습니다. 대부분의 경우 최적화 프로그램의 계산 (시스템의 사용자 수, 다른 시간에 동시에 실행되는 다른 쿼리 등)을 벗어나서 합리적으로이를 계산합니다. –

답변

0

당신은 그것을 실행하지 않을 그러나 XML을 반환하는 (쿼리를 실행 한 후 명령

set showplan_xml on 

을 사용할 수 있습니다. 그런 다음 당신은 후 수 있습니다 예상 속성에 대한 XML을 구문 분석 할 수 있습니다.

대한

샘플 XML

select top 10 * from master..spt_values 

출력

<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.0" Build="9.00.3080.00"> 
    <BatchSequence> 
    <Batch> 
     <Statements> 
     <StmtSimple StatementText="select top 10 * from master..spt_values&#xD;&#xA;" StatementId="1" StatementCompId="1" StatementType="SELECT" StatementSubTreeCost="0.00333664" StatementEstRows="10" StatementOptmLevel="TRIVIAL"> 
      <StatementSetOptions QUOTED_IDENTIFIER="false" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="false" ANSI_NULLS="false" ANSI_PADDING="false" ANSI_WARNINGS="false" NUMERIC_ROUNDABORT="false" /> 
      <QueryPlan CachedPlanSize="9" CompileTime="0" CompileCPU="0" CompileMemory="56"> 
      <RelOp NodeId="0" PhysicalOp="Top" LogicalOp="Top" EstimateRows="10" EstimateIO="0" EstimateCPU="1e-006" AvgRowSize="68" EstimatedTotalSubtreeCost="0.00333664" Parallel="0" EstimateRebinds="0" EstimateRewinds="0"> 
       <OutputList> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="name" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="number" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="type" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="low" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="high" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="status" /> 
       </OutputList> 
       <Top RowCount="0" IsPercent="0" WithTies="0"> 
       <TopExpression> 
        <ScalarOperator ScalarString="(10)"> 
        <Const ConstValue="(10)" /> 
        </ScalarOperator> 
       </TopExpression> 
       <RelOp NodeId="1" PhysicalOp="Clustered Index Scan" LogicalOp="Clustered Index Scan" EstimateRows="10" EstimateIO="0.0142361" EstimateCPU="0.0027376" AvgRowSize="68" EstimatedTotalSubtreeCost="0.00333564" Parallel="0" EstimateRebinds="0" EstimateRewinds="0"> 
        <OutputList> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="name" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="number" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="type" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="low" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="high" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="status" /> 
        </OutputList> 
        <IndexScan Ordered="0" ForcedIndex="0" NoExpandHint="0"> 
        <DefinedValues> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="name" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="number" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="type" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="low" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="high" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="status" /> 
         </DefinedValue> 
        </DefinedValues> 
        <Object Database="[master]" Schema="[dbo]" Table="[spt_values]" Index="[spt_valuesclust]" /> 
        </IndexScan> 
       </RelOp> 
       </Top> 
      </RelOp> 
      </QueryPlan> 
     </StmtSimple> 
     </Statements> 
    </Batch> 
    </BatchSequence> 
</ShowPlanXML> 

위 내용은 귀하의 요청에 대한 문자 적 ​​해석이지만 "비용"은 중요한 의미가 없습니다. 측정 단위 나 시간과의 상관 관계가없는 통계 값입니다.

최저

+0

전체적으로 예상되는 행 수와 필요한 조인 종류를 아는 것은 여전히 ​​유용 할 수 있지만 수동으로 계산하고 많은 조건을 고려해야합니다. – RichardTheKiwi

+0

도움을 주셔서 감사합니다, 나는 그것을 – Zerotoinfinity

4

당신은, 과거의 실행의 기록을 복용함으로써 시간을 추정 할 수 ... 그들은 XML 계획을 반환 시작하기 때문에 작동이 중지 (연결 풀링과 더 나쁜) 다른 쿼리 않도록, 새로운 연결을 사용하는 평균 및 사용자에게 평균 소요 시간을 알려줍니다.

Dynamic Management Views and Functions을 사용하여이 SP에 대해 SQL Server에 쿼리 할 수도 있습니다.

+0

+1 그것을 할 수있는 좋은 방법입니다 활용할 수있을 것 같아요. 이 페이지는 또한 "과거 실적은 미래의 결과를 보장하지 않습니다"*라는 작은 인쇄 텍스트를 추가해야합니다. –