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
반응형