DB
[MySQL] InnoDB와 MyISAM 차이 (트랜잭션)
gracelove91
2020. 7. 7. 16:33
가장 큰 차이는 트랜잭션의 유무가 아닌가 싶다.
직접 테스트해보고 확인한 결과를 기록한다.
create table tab_myisam (
fdpk int not null,
primary key(fdpk)
)engine=MyISAM;
create table tab_innodb (
fdpk int not null,
primary key(fdpk)
)engine=InnoDB;
insert into tab_myisam (fdpk) values (3);
insert into tab_innodb (fdpk) values (3);
- tab_myisam과 tab_innodb를 생성했다. 스토리지엔진은 이름에 따라 각각 MyISAM과 InnoDB로 설정해줬다.
- 값을 넣어준다. 두 테이블 모두 fdpk 라는 컬럼에 3 이라는 값을 넣어줬다. 이제 실험!
insert into tab_myisam (fdpk) values(1), (2), (3);
insert into tab_innodb (fdpk) values(1), (2), (3);
- fdpk에 1, 2, 3을 넣는다.
- 우리가 예상하기로는 1, 2를 넣고 3을 넣는 순간 unique 제약 조건에 걸려서 모두 롤백되어야 한다.
- myisam엔진을 쓰는 테이블인 tab_myisam을 select 해보면, (select * from tab_myisam)
1,2,3 모두 값이 들어가있다. 트랜잭션을 지원하지 않기 때문! - 그에 반해 innodb 엔진을 쓰는 테이블인 tab_innodb를 select해보면, (select * from tab_innodb)
처음에 값을 넣어준 3 외에는 없는 걸로 나온다. 트랜잭션을 지원하기 때문이다!
```