문제
다음 상황에서 발생할 수 있는 가장 심각한 문제는?
SQLCREATE TABLE 주문 ( 주문번호 INT PRIMARY KEY, 고객번호 INT, 주문금액 DECIMAL(10,2) ) ENGINE=MyISAM;
SQLINSERT INTO 주문 VALUES (1, 100, 50000);
START TRANSACTION;
SQLINSERT INTO 주문 VALUES (2, 101, 75000);
-- 시스템 장애 발생
① 주문번호 1번 데이터가 손실된다 ② 주문번호 2번 데이터가 자동으로 커밋된다 ③ 테이블 구조가 손상된다 ④ 외래키 제약조건이 위반된다
정답
2번
해설
MyISAM 스토리지 엔진은 트랜잭션을 지원하지 않으므로 START TRANSACTION을 사용해도 INSERT 문이 즉시 커밋된다. 따라서 장애가 발생해도 2번 데이터는 이미 저장되어 있다. InnoDB와 달리 롤백이 불가능하다. ① 1번은 트랜잭션 이전에 삽입되어 안전하다. ③ 데이터 문제이지 구조 손상은 아니다. ④ 외래키 제약조건이 정의되지 않았다.