문제

Oracle 10G에서 오래 지속되는 쿼리의 나머지 시간을 추정하는 기능을 보았고 이것이 SQL Server (적어도 2008 년에)에서도 가능한지 궁금합니다.

수천만 행 (인덱스 등)이있는 매우 큰 테이블을 가지고 있다고 가정하고 특정 행을 검색해야합니다. 나는 그것이 많은 시간이 걸릴 것이라는 것을 알고 있고 나는 그것에 대해 멋지지만, 나는 사용자에게 어떤 종류의 진행 막대를 제시하고 싶습니다.

진행 상황을 어떻게 표시 할 수 있습니까?

도움이 되었습니까?

해결책

나는 그것에 대해 잊어 버리고 회전 원을 넣었습니다!

진지하게, Mrtelly의 아이디어를 더 나아가려면, 특정 쿼리에 대한 평균 실행 시간을 줄 수있는 동적 관리 견해가 있습니다.

http://msdn.microsoft.com/en-us/library/ms188754.aspx

편집 : Adam Machanic의 SP_WHOISACTIVE 절차에서 퍼센트가 완료되었습니다. 어쩌면 그것은 조사 할 또 다른 곳 일 것입니다. SQL 2016에는 플랜 캐시 정보를 유지하는 쿼리 스토어가 있습니다. 즉, DMV 계획 캐시를 대체하는 쿼리는 재부팅시 청소됩니다.

다른 팁

관련된:

오늘날의 데이터베이스 시스템은 사용자/DBA에 SQL 쿼리의 실행이 얼마나 완료되었는지에 대한 피드백을 거의 제공하지 않습니다. 장기 쿼리의 경우, 이러한 피드백은 예를 들어 쿼리를 종료 해야하는지 또는 완료 해야하는지 결정하는 데 도움이 될 수 있습니다. 위의 요구 사항은 표현하기 쉽지만 쿼리 실행을위한 강력한 진행 지표를 개발하는 것은 어려운 일입니다. 이 논문에서는 위의 문제를 연구하고 효과적인 진행 상황 추정을위한 기초를 형성 할 수있는 현재 기술을 연구합니다. Microsoft SQL Server에서 우리의 기술을 실험적으로 검증 한 결과가 유망합니다.

나는 이것을 자동으로 수행 할 도구를 알지 못하지만 몇 가지 대안이 있습니다. 쿼리를 블록으로 나눕니다 ...

select blah from table where IdRange between (1 and 100000)

select blah from table where IdRange between (100001 and 200000)

각 SQL이 완료되면 진행률 표시 줄을 업데이트하십시오.

또는 각 선택에 걸리는 시간을 기록하고 해당 값을 사용자별로 저장할 수 있습니다. 그런 다음 해당 정보를 사용하여 진행률 표시 줄 길이를 반환하십시오.

이 두 가지 접근법은 모두 꽤 kludgy입니다. 누군가가 더 나은 접근법을 알고 있기를 바랍니다.

물론 당신은 쿼리 계획을 해독하고 그에 따라 판단을 내릴 수 있지만 어려운 코드에서는 판단 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top