안녕하세요 질문을 하나 올립니다
MSSQL을 사용하는 서비스가 있습니다.
그런데 요 근래 들어 자주 서비스가 느려지는 현상이 발생합니다.
현업쪽에서 서비스가 느려진다고 연락이 오면 sql 서비스를 내렸다 올려줬습니다.
그러면 다시 서비스가 빨라지구요...
그래서 요 근래엔 아래의 두 명령을 유지관리계획에 넣어서 주기적으로 수행되도록 해놨습니다
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
보통 알기론 성능에 영향을 미치는건 Disk I/O이기 때문에
Disk I/O를 최소화하기 위해 버퍼에 데이터를 올려놓고
이후 동일 요청이 오면 버퍼에서 데이터를 가져와야 하는거고
쿼리가 들어오면 실행계획을 세우는데 많은 비용이 소모되기 때문에
쿼리에 대한 실행계획을 캐쉬에 저장해놓고
동일 쿼리가 오면 동일 실행계획을 동작을 해야 한다라고 알고 있습니다.
그런데 이 두개의 캐쉬를 지우면 느려진다는 얘기가 없으니..
제가 알고 있는것과 반대되게 동작을 하니 헥갈립니다.
제가 이해를 하고 있는것 이외에 캐쉬와 관련해서 다른 부분이 있는건가요??
이렇게 처리해서 느려지는게 해소된다는게 어떤것을 의미하는걸까요??
Comment 1
-
불타는불쥐[김경진]
2013.03.07 16:54
일반 적인 경우는 생각 하시는 것이 맞습니다. 하지만 재컴파일 이슈로 플랜이 변경 되는 경우도 있습니다.
이후 새로 컴파일이 이루어지고 잘 돌아 가다가 특정 이슈로 인해 재컴파일되는 SP 가 생기게 되고 재컴파일된 플랜으로 인해
SQLTAG.ORG 에서 무료 컨설팅 해주니 한번 받아 보시는 것도 좋을듯 싶습니다.