-
MSSQL 튜닝 기초Database 2020. 10. 30. 14:13728x90
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반응형'Database' 카테고리의 다른 글
관리자를 위한 튜닝 가이드 (0) 2020.11.04 오라클 vs MS SQL 함수 비교 (0) 2020.10.30 MSSQL 특정문자열을 사용하는 SP,VIEW,Function,Trigger 찾기 (0) 2020.10.29 MSSQL 세션 정보 확인 (0) 2020.10.26 인덱스 조각 상태 쿼리 MS-SQL (0) 2020.10.22