-
-
MSSQL에서 운영 DB에서 개발 DB로 데이터를 이동할 때, "그냥 데이터만 옮기면 되겠지?" 하고 생각할 수 있지만, 실제로는 몇 가지 중요한 점검 사항이 필요합니다.
데이터 이동 후 시스템이 정상적으로 작동하고 성능도 최적화될 수 있도록 하는 과정을 살펴볼게요.
이 글에서는 데이터 이동 후 반드시 점검해야 할 주요 단계를 쉽고 간단하게 설명할 거예요.
1. 데이터 삭제 및 초기화
먼저, 데이터를 옮기기 전에 기존 데이터를 삭제해야 합니다.
DELETE문을 사용하면 데이터를 삭제할 수 있지만, 외래 키 관계가 있을 때는 외래 키 제약을 먼저 비활성화하는 것이 좋아요.
삭제 후에는 외래 키를 다시 활성화하는 걸 잊지 마세요.
-- 외래 키 비활성화
ALTER TABLE 테이블명 NOCHECK CONSTRAINT ALL;
-- 데이터 삭제
DELETE FROM 테이블명;
-- 외래 키 재활성화
ALTER TABLE 테이블명 CHECK CONSTRAINT ALL;
이렇게 외래 키를 비활성화한 후 데이터를 삭제하면, 다른 테이블과의 연결이 깨지지 않도록 할 수 있어요.
2. 자동 증가값 수동 처리 설정
운영 DB에서 개발 DB로 데이터를 옮길 때, 자동 증가값(IDENTITY)을 제대로 처리하는 것이 중요합니다.
보통 자동 증가값은 MSSQL에서 자동으로 관리하지만, IDENTITY_INSERT를 사용해 수동으로 관리할 수도 있어요.
데이터를 삽입한 후에는 IDENTITY_INSERT를 반드시 OFF로 설정해야 해요.
-- 자동 증가값 수동 설정 ON
SET IDENTITY_INSERT 테이블명 ON;
-- 데이터 삽입 후 자동 증가값 수동 설정 OFF
SET IDENTITY_INSERT 테이블명 OFF;
이렇게 하면 데이터 삽입 시 자동 증가값이 충돌하지 않게 되고, 이후 자동 증가값은 자연스럽게 동작하게 됩니다.
3. 자동 증가값 초기화 확인
데이터를 삽입한 후, 자동 증가값이 제대로 초기화되었는지 꼭 확인해야 해요.
DBCC CHECKIDENT 명령어를 사용해서 자동 증가값을 리셋할 수 있습니다.
보통 0부터 시작되도록 설정하는 것이 좋습니다.
-- 자동 증가값 초기화 (시드를 0으로 설정)
DBCC CHECKIDENT ('테이블명', RESEED, 0);
이렇게 하면 자동 증가값이 올바르게 리셋되었는지 확인할 수 있어요.
4. 참조 무결성 및 외래 키 관계 확인
외래 키 제약은 데이터의 무결성을 보장하는 중요한 요소예요.
데이터 옮긴 후, 외래 키가 제대로 설정되었는지 확인해야 합니다.
외래 키 관계가 깨지면 데이터 무결성이 훼손될 수 있기 때문에, 꼭 점검해야 합니다.
-- 외래 키 관계 확인
SELECT
fk.name AS FK_name,
tp.name AS Parent_table,
ref.name AS Referenced_table
FROM
sys.foreign_keys fk
INNER JOIN sys.tables tp ON fk.parent_object_id = tp.object_id
INNER JOIN sys.tables ref ON fk.referenced_object_id = ref.object_id;
외래 키를 다시 설정하려면 아래와 같이 할 수 있습니다.
-- 외래 키 제약 설정
ALTER TABLE 자식테이블
ADD CONSTRAINT fk_제약_이름 FOREIGN KEY (자식컬럼) REFERENCES 부모테이블(부모컬럼);
5. 테이블 트리거 점검
트리거는 데이터가 삽입되거나 수정될 때 자동으로 실행되는 스크립트입니다.
데이터 이동 후 트리거가 제대로 동작하는지 확인해야 해요.
예를 들어, 트리거가 중복되거나, 잘못 동작할 경우에는 데이터를 제대로 처리할 수 없을 수 있거든요.
-- 트리거 확인
SELECT name
FROM sys.triggers
WHERE parent_id = OBJECT_ID('테이블명');
-- 트리거 비활성화
DISABLE TRIGGER 트리거명 ON 테이블명;
-- 트리거 활성화
ENABLE TRIGGER 트리거명 ON 테이블명;
트리거가 비활성화된 상태에서 데이터 이동 후, 트리거를 다시 활성화해 주세요.
6. 인덱스 및 통계 재생성
대량의 데이터를 삽입하면, 인덱스와 통계가 효율적으로 작동하지 않을 수 있어요.
이 경우, 인덱스를 재구성하고 통계를 갱신해야 성능을 최적화할 수 있습니다.
인덱스 재구성
-- 모든 인덱스 재구성
ALTER INDEX ALL ON 테이블명 REBUILD;
통계 재생성
-- 모든 테이블의 통계 업데이트
UPDATE STATISTICS 테이블명;
이렇게 하면 쿼리 성능이 빨라질 수 있어요!
7. 트랜잭션 로그 및 데이터베이스 백업
데이터 이동 후에는 트랜잭션 로그와 데이터베이스 백업을 꼭 해두는 것이 좋아요.
예기치 않은 상황에서 데이터를 복구할 수 있도록 준비하는 것이죠.
트랜잭션 로그 백업
BACKUP LOG 데이터베이스명 TO DISK = '백업파일경로\로그백업.trn';
전체 데이터베이스 백업
BACKUP DATABASE 데이터베이스명 TO DISK = '백업파일경로\전체백업.bak';
백업을 하고 나면, 트랜잭션 로그 파일을 축소할 수도 있어요.
-- 트랜잭션 로그 축소
DBCC SHRINKFILE (로그파일명, 1);
이렇게 하면 로그 파일을 최적화할 수 있습니다.
8. 데이터 검증
마지막으로, 데이터를 잘 옮겼는지 검증하는 단계가 필요합니다.
데이터 무결성, 참조 관계, 데이터 타입 등을 확인해서 오류가 발생하지 않도록 해야 해요.
간단한 검증 쿼리를 실행해보세요.
-- 데이터 검증 예시
SELECT COUNT(*) FROM 테이블명;
검증을 통해 데이터가 제대로 이동되었는지 확인하고, 쿼리 성능도 테스트해 보세요.
운영 DB에서 개발 DB로 데이터를 이동하는 작업은 단순한 데이터 복사 이상의 작업이 필요합니다.
자동 증가값, 외래 키, 트리거, 인덱스, 통계 등 여러 요소를 점검하고 최적화하는 것이 중요하죠.
이 글에서 설명한 단계를 하나씩 차근차근 진행하면, 데이터 이동 후 시스템이 안정적이고 최적화된 상태로 유지될 수 있습니다.
이제 데이터 이동이 완료된 후, 시스템이 문제없이 작동하는지 확인하고, 성능도 점검해보세요.
'프로그래밍 > DB' 카테고리의 다른 글
SQL Server에서 SET IDENTITY_INSERT 사용하기 (0) | 2024.12.06 |
---|---|
SQL 명령어 DELETE, TRUNCATE, DROP의 차이점 (0) | 2024.12.05 |
운영 DB에서 개발 DB로 데이터 복사하는 가이드 (DBeaver 사용) (0) | 2024.12.04 |
MySQL too many connections 에러 발생 해결 방법 (0) | 2024.10.25 |
MySQL 스키마 생성과 테이블 생성에 대해서! (0) | 2024.09.30 |
MySQL Workbench를 이용한 DB 접속 방법에 대해서! (0) | 2024.09.30 |
MySQL 접속 툴 MySQL Workbench 설치에 대하여! (0) | 2024.09.30 |
MySQL 다운로드 및 설치에 대하여! (0) | 2024.09.30 |