문제

이것은 내가 질문한 질문에서 제공하는 다양한 경영방법론는 일부를 받 알맞은 답변을 보면 누구나 여기에는 더 많은 통찰력.

문제는 당신이 당신의 페이지 중 하나 웹 응용 프로그램에서 타이밍할 때 얻을 저장 프로시저를 통화,그래서 당신은 Sql 프로파일러를 사용,또는 당신의 응용 프로그램 추적 로그를 쿼리를 찾고 당신은 그것을 붙여으로 관리 스튜디오 파악하는 왜 우리를 실행하는 느립니다.하지만 당신은 여기서 실행하고 그냥 반 따라 반환에서 두 번째 보다는 더 적은 각 시간입니다.

나 특정한 경우에 사용 ASP.NET 2.0Sql Server2005 년,하지만 나는 생각한 문제 적용될 수 있는 모든 RDBMS 시스템입니다.

도움이 되었습니까?

해결책

이것은 무엇을 배운 그래서 지역에 있습니다.

.NET 보내에서 연결을 설정하지 않은 것과 동일할 때에 로그인하 관리 스튜디오.여기에 무엇이 당신을 위해 냄새와의 연결 Sql 프로파일:

-- network protocol: TCP/IP  
set quoted_identifier off  
set arithabort off  
set numeric_roundabort off  
set ansi_warnings on  
set ansi_padding on  
set ansi_nulls off  
set concat_null_yields_null on  
set cursor_close_on_commit off  
set implicit_transactions off  
set language us_english  
set dateformat mdy  
set datefirst 7  
set transaction isolation level read committed  

나는 지금에 붙여서 설정하기 위한 쿼리가 실행에 로그인할 때 sql 서버를 설정되어 있는지 확인하십시오 같습니다.

이 경우에,나는 각 개별적으로 설정한 후,연결을 끊고 다시 연결하는 것이 변화하는 arithabort off 에서 on 으로 감소에 문제가 쿼리에서 90 초 이를 1 초입니다.

가장 가능한 설명과 관련 매개변수 냄새,기술 Sql 사용하여 서버를 선택하 어떻게 생각하는 가장 효과적인 쿼리 계획입니다.을 변경할 경우 하나의 연결을 설정,질의 최적화를 선택할 수 있습니다 다른 계획이며,이 경우,그것은 분명히 선택한 나쁜 하나입니다.

하지만 나는 완전히 확신이다.가 비교하는 실제 쿼리 계획 후 이 설정을 변경하고 나는 아직 보 차이를 보이 변경합니다.

다른 뭔가가 있에 대한 arithabort 설정을 일으킬 수 있는 쿼리를 실행하는 천천히 어떤 경우에는?

이 솔루션은 간단한 것 같았다:그냥 넣어 설정 arithabort 에서의 정상으로 저장되는 절차입니다.그러나 이것으로 이어질 수 있는 반대 문제가:쿼리를 변경 변수 및 갑자기 그것은 빠르게 실행과'에서'보다는'에'.

간 나는 실행하는 절차는'다시 컴파일하는지 확인 계획을 가져 다시 생성됩니다.그것은 확인에 대한 이 특정한 보고서 이후 그것은 어쩌면 두 번째 다시 컴파일하고,이 되지 않습니다 너무에 눈에 띄는 보고서는 1-10 초 반환하는(그것의 괴물).

하지만 그것은 옵션에 대한 다른 쿼리를 실행하는 훨씬 더 자주고 반환해야,가능한 한 빨리에 단 몇 밀리초 단위입니다.

다른 팁

나는 이와 비슷한 문제를 일으켰습니다.도 설정과 함께"으로 다시 컴파일 옵션"에 sproc 만들기를 강제로 시스템을 다시 실행 계획을 때마다 라고 합니다.때로는 쿼리를 프로세서 혼란을 가져옵에서 복잡한 저장 프로시저는 많은 분기 경우 또는 명세서 및 그냥 가져옵는 정말 최적의 실행 계획을 실행합니다.는 경우는 것 같다"고정"문제해야 할 것입을 확인하는 통계상 최신 상태로 유지하고/또는 뜨 sproc.

지 확인할 수도 있습니다 이 프로파일링 sproc.을 때 당신이 그것을 실행에서 SQL 관리 스튜디오,어떻게 IO 비교하면 당신은 프로필에서 ASP.NET 응용 프로그램.는 경우 그들은 매우 많이,그것은 다시 적용하는 당기는 나쁜 실행 계획을 실행합니다.

당신이 켜 ASP.NET 추적이 아직?나는 인스턴스지 않은 SQL 저장 프로시저는 자체가 문제였다,그것이었다는 사실은 절차를 반환 5000 행 및 그 응용 프로그램을 만들려고된 ListItems 그 5000 항목을 일으키는 문제입니다.

당신이 볼 수 있으로 실행 시간 사 웹 응용 프로그램의 기능뿐만 아니라 통해 추적하을 것이다.

테스트는 이에 준비 상자 첫째로,그것을 변경하는 서버에서 수준에 대한 sql 서버

선@옵션 int

설정 옵션을=@@옵션|64

exec sp_configure'사용자 옵션', @옵션

다시 구성

동일한 문제와 함께했던 SQL 보고 서비스입니다.를 확인하려고 형식의 변수, 었을 보내는 다른 유형의 변수를 SQL 다음과 같이 보내 varchar 에 있어야하는 장소 다 정수입니다.후에 동기화된 형태의 변수를 보고 서비스와에서 저장된 절차에 SQL,내가 문제를 해결했다.

당신이 시도할 수 있었을 사용하여 sp_who2 명령을 어떤 과정에서 질문을하고있다.이 표시됩니다면 그것은 당신을 차단하여 다른 프로세스 또는 사용하는 과도한 금액의 cpu 및/또는 io 시간입니다.

우리는 같은 문제가 있었고 여기 우리가 무엇을 발견했다.

우리의 로그 데이터베이스 크기되고 있었지에서 기본값(814MB)및 자동장 10%이었습니다.서버에서 최대의 서버에 메모리에 기본 설정뿐만 아니라(서 2,147,483,647MB).

면 로그에 있어 전체 필요한 성장,그것이 사용되는 모든 메모리 서버에서 왼쪽 아무것도에 대한 코드를 실행하므로 시간이 초과되었습니다.우리가 무슨 일을 했었는 설정 데이터베이스에 로그 파일을 처음 크기는 1MB 최대 서버에 메모리 2048 메가바이트.이는 즉시 고정된 우리의 문제입니다.의 과정을 변경할 수 있습니다 이 두 가지 특성에 맞게 필요하지만 이에 대한 아이디어를 실행하는 사람으로 타이밍 문제를 저장 프로시저를 실행할 때 코드를 통해 그러나 빠른 슈퍼 또는 카탈로그 뷰 쿼리와 솔루션을 위에 도움이되지 않습니다.

변경하십시오 SelectCommand timeout 값:

DataAdapter.SelectCommand.CommandTimeout = 120;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top