얼마 전 서버 이전 작업을 했다. 그런데 정상으로 작동하던 시스템이 조금 꼬이는 현상이 발견됬다.
그중 특이한 증상 중 하나...
쿼리 분석기와 클라이언트(웹단)의 프로시저 실행 속도의 차이가 발생하는 것이었다. 웹단은 팝업창이 실행되면서 콤보 박스에 데이터를 세팅하는 부분이 있었는데, 그 프로시저에 문제가 발생하게 된 것.
프로파일러로 추적하니 15초가 소요되는 것을 발견, 쿼리분석기로 직접 실행하니 1초. 하참~~
이런 저런 방법을 써봤으나, 무용지물. 해결 방법 찾던 중 아래의 프로시저의 플랜캐시 확인에 대한 글이 있어서 참조해 봤다. 해결은 이 글과는 크게 상관 없었지만 힌트는 얻을 수 있었다.
아래는 플랜캐시를 확인했던 쿼리와 펌링크이다.
출처 : http://www.sqler.com/269485
쿼리
SELECT cp.objtype, cp.cacheobjtype, cp.size_in_bytes, cp.refcounts, cp.usecounts, st.text --, *
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st
WHERE cp.objtype = 'Proc'
AND st.text NOT LIKE '%SELECT cp.objecttype%'
AND st.text NOT LIKE '%@BatchID%'
AND st.text NOT LIKE '%@_msparam%'
AND st.text NOT LIKE '%database%'
AND st.text NOT LIKE '%objtype%'
ORDER BY cp.objtype
최종 해결은 허무하게도 프로시져 재컴파일이었다.
어헝헝헝.....
'프로그래밍 > DBMS' 카테고리의 다른 글
MSSQL 1~100 까지 더미 테이블 생성하고 싶을 때 (0) | 2014.06.09 |
---|---|
오라클, 중복 데이터 삭제하기 (0) | 2014.04.01 |
MSSQL 테이블 변경 시, "변경 내용을 저장할 수 없습니다.." 나올 때 (0) | 2014.03.12 |
MSSQL, 테이블 사용중인 프로시져 알아내기 (0) | 2013.12.18 |
64bit MSSQL 2008 R2 에서 32bit Oracle DB 링크 걸기 (1) | 2013.08.29 |
MSSQL 문자열 잘라서 테이블 반환 함수 (0) | 2013.04.24 |
오라클 DECODE, GREATEST 로 음수값 처리하기 (0) | 2013.04.10 |
MSSQL 0으로 나누기 오류 처리하기 (0) | 2013.04.09 |