Notice
Recent Posts
Recent Comments
관리 메뉴

안까먹을라고 쓰는 블로그

[MSSQL] 프로시저 - 구간 별 성능체크 본문

DataBase/MS SQL

[MSSQL] 프로시저 - 구간 별 성능체크

YawnsDuzin 2023. 1. 6. 17:11

 

반응형

프로시저 안에는 여러 개의 쿼리가 있을수 있고, 다른 프로시저를 호출할 수도 있다.
이런 각 부분 마다 아래와 같이 시간과 구분값을 표시할 수 있는 PRINT문을 추가한다.
구분 값은 숫자를 트리 형식으로 하면 확인하기 좋다.
Ex) 1.1
          1.1.1
              1.1.1.1
      1.2
          1.2.1

PRINT(CONVERT(NVARCHAR(100), GETDATE(), 120) + ' : 1.2')


위의 방법으로 프로시저를 SSMS에서 실행하면, 하단의 결과 값의 "메시지" 부분에 위에 추가한 PRINT문의 값이 표시된다. 각 구분 값의 시간을 확인하여, 어디에서 불필요하게 많은 시간이 소요되는지 확인한다.
이 부분의 쿼리를 수정하여, 성능을 개선한다.



■ 개선방법
 Case1.  특별한 작업을 하지 않았는데, 갑자기 느려지는 경우에 MSSQL의 옵티마이저에서 최적화 방법을 변경하여
      발생하는 경우가 있다. 일반적인 INNER JOIN 을 INNER HASH JOIN 으로 변경해주면 성능이 향상되는 경우가 있다.
 Case2. 조회 시, 조회컬럼의 많은 량의 데이터를 LEFT, RIGHT등의 함수를 사용하여 가공하는 경우 성능이 떨어질 수
     있다.
 Case3. 원래느린 경우,
      - 테이블의 인덱스 를 추가/변경하여 개선되는 경우가 많음.


쿼리 간단한 성능체크 방법은 아래의 링크를 참고하시기 바랍니다.
https://overit.tistory.com/entry/MSSQL-간단한-성능-체크


끝~

 

반응형
Comments