Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 외래 키(Foreign Key) 검사 비활성화 방법과 주요 이점

MySQL 외래 키 검사 비활성화 및 다시 활성화하기

MySQL에서는 SET 구문 하나만으로 세션 단위의 외래 키 검사(foreign key checks)를 간단히 끄거나 켤 수 있습니다. 대량의 데이터를 옮기거나 스키마를 변경할 때 유용하게 활용됩니다.

1. 외래 키 검사 비활성화

mysql> SET foreign_key_checks = 0;
Query OK, 0 rows affected (0.00 sec)

2. 외래 키 검사 다시 활성화

mysql> SET foreign_key_checks = 1;
Query OK, 0 rows affected (0.00 sec)

작업이 모두 끝난 후에는 반드시 값을 1로 되돌려야 합니다. 검사가 꺼진 상태로 방치되면 잘못된 참조 값이 저장될 수 있어 데이터 무결성이 손상될 위험이 있습니다.

외래 키 검사를 비활성화하면 얻는 이점

1. 부모·자식 테이블에 임의의 순서로 데이터 입력 가능

외래 키 검사가 활성화되어 있으면 반드시 부모 테이블 → 자식 테이블 순서로 데이터를 입력해야 합니다. 하지만 검사를 비활성화하면 두 테이블에 어떤 순서로든 자유롭게 데이터를 적재할 수 있습니다. 덤프 파일을 복원하거나 대규모 데이터를 마이그레이션할 때 작업 속도와 편의성이 크게 향상됩니다.

2. 참조 중인 테이블도 삭제 가능

외래 키 제약 조건으로 참조되고 있는 테이블은 검사가 켜져 있는 동안에는 DROP TABLE로 삭제할 수 없습니다. 검사를 일시적으로 비활성화하면 참조 관계와 상관없이 해당 테이블을 삭제할 수 있습니다.

주의: 외래 키 검사 비활성화는 어디까지나 임시적인 운영 편의 기능입니다. 필요한 작업(데이터 적재, 테이블 삭제 등)이 완료되면 즉시 다시 활성화하고, CHECK TABLE 등으로 데이터 정합성을 점검하는 것이 안전합니다.