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 |