1. 가능 하면 컬럼 사이즈는 작게

ex. 일괄 int → int, smallint, tinyint 등 세분화


2. 데이터 베이스 복구 모델(Recovery Model)을 Simple로 변경


3. T610 추적플래그 사용


DBCC TRACEON (610, -1); 

GO


* T610 추적 플래그

  : 최소 로깅, 

    클러스터 인덱스에 삽입하지 않은 행은 최소한으로 기록 됨


  - 대량 로드 작업으로 인해 새 페이지가 할당 되면 새 페이지를 순차적으로 채우는 모든 행이 최소한으로 기록

    (대량 로드 발생 전에 할당 된 페이지에 삽입 된 행은 포드 중에 피이지가 분할 되어 이동한 행과 같이 완전히 로그)

  - 일부 테이블의 경우 최소 로깅이 아닌 전체 로깅 발생할 수 있음 


4. 수동 파티션 구현

:스케줄에 의한 일/월/년별 테이블 생성 → 데이터 이관, 삭제 관리


5. 데이터 베이스 MDF, LDF 크기 조절(Auto Grouwth 발생하지 않게)

: 대용량 I/U/D 작업시 자동 증가가 발생할 경우 성능(속도) 저하 발생


6. 대용량 데이터 UPDATE/DELETE 시, 대상 데이터의 적절한 INDEX 검토

   (Clustered Index 사용)


7. 대용량 데이터 UPDATE/DELETE 시, LOOP 구조로 작업 방식 변경

→트랜잭션의 부하를 분산할 것


*LOOP 구조 작업 프로세스

1) 로그 테이블 생성(작업 처리 전후, 저장해야할 데이터가 있는경우 )

2) 반복 작업을 위한 변수 생성

3) 해당 작업이 반복되어야 할 조건 기재

4) 다른 OBJECT를 참조 해야할 경우, 

중간 대상 데이터를 별도로 저장하여 일괄 작업하는 방식도 고려

5) 반복문 작성

6) 로깅

7) 에러 예외 처리


8. 최소 로깅 모드

: 구문에 WITH(TABLOCK)추가


9. INSERT 할 데이터가 여러 테이블에 분산 되어 있는 경우,

   중간에 별도 Staging DB에 모두 INSERT 한 후, 한꺼번에 INSERT 하는 방법 검토

   (이때, SSIS 패키지 활용하면 성능상 이점 존재)

'Database > SQL Server' 카테고리의 다른 글

복합열 UNPIVOT  (0) 2018.12.05
NESTED LOOP  (0) 2018.08.17
INSERT VS UPDATE/DELETE  (0) 2018.08.17
선택도 / 밀도 / 카디널리티  (0) 2018.08.16
계정,권한_사용자 계정 추가 및 권한 부여 전 확인  (0) 2018.08.16

+ Recent posts