지난 이틀 동안 꽤 답답한 문제를 겪었는데, SQL Server 2012의 쿼리 분석기에서 약 120줄의 저장 프로시저가 실행되고 있습니다. 속도는 매우 이상적이며, 약 500개의 데이터 레코드를 1초 이내에 필터링하고 캡처할 수 있습니다. 하지만 C# 프로그램 코드에서 호출되면 연결 타임아웃이 표시됩니다. CommandTimeout을 300으로 설정하면 표시하는 데 약 3분 정도 걸립니다. 코드를 여러 번 확인했지만 오류가 없었습니다. 문제는 여전히 남아 있습니다.
원인 분석: 1. 쿼리 분석기의 실행 속도가 빠르고 데이터 양이 크지 않기 때문입니다. 2. 호출만 하면 프로그램이 느립니다. 3. CommandTimeout 매개변수를 설정하면 결과를 표시할 수 있지만, 시간이 오래 걸립니다.
요약하자면, 문제는 C# 코드에 있다는 것이 예비적으로 결론 내려집니다. 하지만 점검 후에는 아무런 이득이 없었다.
바이두에서 이 정보를 확인해 보세요. 드디어 CSDN 포럼에서 비슷한 정보 게시글을 찾았습니다. 한 네티즌은 답변에서 "시행 계획이 만료되었을 가능성이 있다"고 말했다. 그 꿈이 정말 나를 깨웠어.
원인 분석: 저장 프로시저는 사전 컴파일되기 때문에, 첫 실행 시 실행 계획이 생성되고, 이 실행 계획은 이후 실행(저장 프로시저가 재컴파일될 것이 지정되지 않는 한)에 사용되며, 실행 계획이 실행될 때마다 실행 계획을 생성하는 것이 아닙니다. 저장 프로시저에 포함된 객체 구조가 조정되거나 관련 데이터가 크게 변경되어 원래 계획이 현재 상태(실행 계획 만료)에 적합하지 않을 수 있다면, 저장 프로시저를 다시 컴파일해야 합니다.
면책 조항: Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.
Mail To:help@itsvse.com