Database
MSSQL 튜닝 기초
Urong
2020. 10. 30. 14:13
728x90
1 SELECT는 필요한 결과값만을 요구 하는가?
2 적절한 WHERE 조건을 사용하는가?
3 COUNT(컬럼명) 대신 COUNT()을 사용하는가?
4 커서 및 임시 테이블의 내용을 최대한 자제하는가?
- 커서보다는 임시 테이블이 임시 테이블보다는 테이블 변 수를 사용하는 것이 성능이 나아진다.
5 VIEW의 총 사용을 줄였는가?
6 저장 프로시저를 사용하는가?
저장 프로시저의 역할 7가지
- 1. 데이터 무결성의 시행
- 2. 복잡한 비즈니스 규칙과 제약의 강화
- 3. 캡슐형 설계
- 4. 유지 보수
- 5. 네트워크 트래픽 감소(오고 가는 긴 SQL 구문을 축소)
- 6. 보다 빠른 실행(컴파일을 하지 않습니다)
- 7. 보안 강화
- 쿼리는 한번만 실행할 때는 일반 SQL이 훨씬 간단하다. 그러나 반복적으로 실행 되면 저장 프로시저가 월등히 빠르다.
7 저장 프로시저를 적절하게 리컴 파일 하며 사용하는가?
리컴파일방법3가지
- CREATE PROCEDURE [WITH RECOMPILE] 는 SQL SERVER가 이 저장 프로 시저의 계획을 캐시하지 않기 때문에 이 저장 프로시저가 실행 할 때 마다 다시 컴 파일 된다.(실행 속도가 느려짐).
- EXECUTE [WITH RECOMPILE]는 지금 이순간만 리컴 파일 하고 다시 저장 프로시저 실행하면 예전 실행 계획대로 작동한다. 제공하는 매개 변수가 불규칙하거나 저장 프로시저를 만든 다음 데이터가 많이 변경되었을 경우 이 옵션을 사용하도록하자.
- sp_recompile는 저장 프로시저가 다음에 실행될 때 첫 실행처럼 컴파일되고 실행되도록 하는 것이다.
8 작명 된 프로시저 SP외의 접두어를 사용하는가?
9 모든 개체의 소유자는 DBO로 지정하며 생성하는가?
10 데드락이 발생하는 부분을 라이브락 형태로 변경했는가?
11 SET NOCOUNT ON을 사용하는가?
DB 모든 SP 재컴파일 및 인덱스재구성
-- pubs 데이터베이스의 모든 저장 프로시저를 재컴파일 해보자
select db_id('pubs')
dbcc flushprocindb(5)
-- 모든 인덱스를 재구축한다
-- 관리자가 사용할 경우 엄청난 시간이 소요될 수 있습니다
dbcc dbreindexall('pubs')
728x90
반응형