DB(SP) 실행속도 문제.

안녕하세요. 눈팅으로만 하다가 글을 남겨봅니다.
ASP.NET에 남길지, DB에 남길지 생각하다가 그래도 ASP.NET 설정문제인거 같아서 ASP.NET에 남깁니다.
일단 환경은 웹사이트에서 StoredProcedure(이하 SP.)를 호출해서 DB 결과값 받아오는 형식입니다.
간혹가다가 특정 SP가 SSMS에서 실행하면 빠르게 실행되는데,
웹사이트에서 실행하면 느리게 실행이 됩니다.

이것저것 찾아봤을때, SQL에 SET ARITHABORT OFF/ON 값이 SSMS와 웹사이트간의 값이 일치하지 않아서 발생하는 문제라고 하는데…
SP 실행전에 해당 구문을 어떻게 추가해야할지도 모르겠네요ㅎㅎ;;;

혹시 저와 같은 경험을 하신분들 있으시면 도움 주시면 고맙겠습니다.

3 Likes

SqlServer에서 SP를 호출시 실행플랜이 캐시가 되는데, SSMS에서 실행하는 경우 캐시가 되지 않는듯 싶습니다.

SqlServer는 SP의 플랜캐시시에 SP이름을 캐시 키로 사용하고 있고,
따라서 SP의 파라미터에 따라서 검색 테이블의 실행 플랜이 달라야 하는 경우라도, 처음 만들어진 플랜만을 고집하는 경향이 있습니다.

SP를 만들때 RECOMPILE 옵션을 넣거나, 파라미터에 따라 SP를 쪼개서 따로따로 플랜캐시가 적용되도록 하는 방법이 있습니다.
아래 링크 참고하세요.

4 Likes

증말증말 고맙습니다.
보내주신 링크에 대해서 정독해보겠습니다!

3 Likes

저도 동일한 문제들이 있었는데 결국 해결은 SP자체를 수정해서 처리했습니다.
sp실행시 1개의 문장으로 실행되던걸 임시테이블을 이용해서 최대한 적은 row를 join 하게 하니
해결되었던 기억이 있네요.

1 Like