2007년 5월 17일 목요일

정원혁 선생님에 SQL서버 튜닝과정을 추천 합니다.

아래의 글
되도록이면 한방쿼리 하지만 그게 더 귀찬을때가..(처리를 구현하는 사고 방식의 전환)

은 근무하고 있는 회사가 서비스 중인 게임에 이벤트 대상자에게 상품을 배포하는 방식을 개발사에서 구현해 보내온 부분을 발췌해 변형 한 것이다.
이 쿼리는 잘돌아 간다.(100건 1000건 만건...)
하지만 대상 건수가 늘어 가면 늘어 갈수록 쿼리는 점점 무거워 진다.

이번 이벤트에 대상은 100만 레코드 였다.아래글의 쿼리를 운영서버와 동일한 테스트 서버에 동일한 데이터를 넣고 테스트 해본결과 8시간이 넘게 걸렸다.(이 쿼리를 DBA가 작성해서 보냈다고 생각 하고 싶지는 않다.만약그렇다면 그 DBA는 제목에 있는 과정을 반드시 들어야 할것이다.DBA업무를 계속해나갈 생각이라면)

동일한 결과가 적용되는 쿼리를 변경해 적용한 결과 쿼리작동 시간은 다해서 3분도 걸리지 않았다.
프로시저 내부에 분기 되는 조건문을 적용해 임시테이블들을 종류 별로 만들고 테이블의 키값들을 조건절에 넣어 한방에 쿼리를 풀어가는 연습이 아주 중요 하다.(참고로 제목에 있는 강의는 3일 정도 숙제로 방과후에 커서 관련쿼리를 한방 쿼리로 바꾸는 연습을 한다.아주 유효 하다.)
물론 커서로만 구현이 가능한로직도 있을수 있고 커서가 더 빠른 경우도 있겠지만 그런경우는 아주아주 드물지 않을까...

개발자로 일하면서 알고 있던 데이터베이스에 대한 관점과 DBA로 일하면서 데이터베이스에 대한 관점은 다를수 밖에 없으며 DBA라면 개발자와는 다른 뭔가를 반드시 가져야 한다.
그게 힘들다면 다시 한번 말하지만 위에 강의를 들어야 한다.

댓글 없음:

댓글 쓰기