본문 바로가기
프로그래밍/DB

웹환경과 DB툴에서 실행 된 쿼리 속도가 다른경우

by [바가지] 2018. 8. 8.
반응형

ARITHABORT설정 쿼리속도

 

 

웹환경과 SQL Server Management Studio 에서 쿼리 속도가 다르다면 실행계획이 다르기 때문입니다.
즉, ARITHABORT 설정에 따라 다른 실행계획으로 실행 되기 때문입니다.

 

DB툴(SQL Server Management Studio) 의 경우 ARITHABORT 설정 값은 ON이고,
.NET C#에서 호출 된 프로시저의 경우 ARITHABORT 설정 값이 OFF인 상태로 실행 되어 속도의 차이가 발생하는 경우가 있습니다.

 

저의 경우도 갑자기 쿼리 속도가 느려져서 확인 해 본 결과 웹환경에서 실행되는 쿼리에서 ARITHABORT가 OFF로 설정되어 실행되면서 쿼리 최적화에 부정적인 영향을 주어 성능 문제가 발생 한 것이였습니다.

프로시저에 SET ARITHABORT ON 로 설정부분을 추가하여 일단 조치하였습니다.

 

참고로 ARITHABORT 설정 값에 따라 0으로 나누기 또는 오버플로 오류가 발생시킬지의 여부가 달라지게 됩니다. ARITHABORT을 ON으로 설정하게 되면 0으로 나누었을 경우 오류가 발생하며, OFF로 설정하게 되면 NULL값을 리턴 하게 됩니다.(단, SET ANSI_WARNINGS OFF 로 설정 되어 있을 경우)

 

> ARITHABORT을 OFF으로 결과

ARITHABORT을 OFF으로 결과

 

> ARITHABORT을 ON으로 결과

ARITHABORT을 ON으로 결과

 

ARITHABORT 설정에 따라 실행계획이 다를 수 있다는 것 알아두면 좋을 것 같습니다.

 

반응형