데이터 대량 변경 작업 시 체크해야 할 리스트


 

 

1. 서비스 영향도 확인

1. 시간이 얼마나 소요될지에 대해 파악되면 이에대한 영향도를 개발팀에 확인 요청합니다.

 

 

2. 데이터 프리징이 가능한지 확인

1. TAB LOCK 으로 대량 변경 작업 진행 시 더 빠르게 처리할 수 있습니다.

   이는 ROW Lock 과 TAB Lock 에서 트랜잭션 로그가 쌓이는 방식에 대해 이해하고 있어야 합니다.

2. 이 때는 점검을 걸어야 하고, 서비스가 불가능 합니다.

 

 

3. 대량 DELETE 작업 시 INSERT 작업이 더 효율적인지 비교

1. ROW 별로 DELETE 작업을 진행하는 것보다 DELETE 대상이 아닌 데이터를 새로운 테이블에 INSERT 하는 작업이 효율적일 수 있습니다.

   프리징이 되었다는 가정에서 새로운 테이블로 INSERT 할 때는 원본 테이블에 Lock 을 잡지 않아도 됩니다.

   DELETE 원본 테이블   vs   INSERT INTO 신규 WITH(TABLOCK) SELECT 원본 테이블 WITH(NOLOCK)

2. DELETE 시 빈 페이지가 생기게 되는데, INSERT 로 새로 구성하는 경우 빈 페이지가 없기 때문에 부분범위 처리시 읽어야 하는 페이지를 줄일 수 있습니다.

3. 단, 새로운 테이블로 구성하게 되면 메타정보가 변경되면서 기존 쿼리의 실행계획이 변경될 수 있습니다.

 

 

4. 대량 UPDATE 작업 시 INSERT 작업이 더 효율적인지 비교

위와 비슷한 이유입니다.

 

 

5. 단위처리 할 수 있는지 확인

1. 현재 처리되고 있는 진행상황을 알 수 있어야 합니다.

   한번에 처리 도중 예측한 시간보다 작업시간이 훨씬 오래 걸려 취소해야 하는 경우 Rollback 에 걸리는 시간또한 예측할 수 없습니다.

 

 

6. 변경 시 원본 데이터를 보관

1. 작업이 예측과 다르게 된 경우, 해당 이유에 대해서 추적할 수 있어야 합니다.

 

 

7. 작업으로 쌓이는 트랜잭션 로그 크기 확인

1. 트랜잭션 로그가 많이 생성되는 경우 로그파일 크기를 키우는 것 또한 비용입니다.

   로그가 생성이 많이 될 것으로 보이면 크기를 미리 키워두는 것도 좋은 방법입니다.

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

VIEW에 있는 WITH SCHEMABINDING  (0) 2020.08.27
SP 검수 시 체크해야 할 리스트  (0) 2020.08.27
INDEX 인덱스 삭제 시 체크해야 할 리스트  (0) 2020.08.27
조인 조건자 없음  (0) 2020.08.27
DB 보안  (0) 2020.08.27

+ Recent posts