MySQL 디비 테이블 엔진 MyISAM -> InnoDB 변경
페이지 정보
본문
InnoDB는 mySQL 에서 사용하는 데이터베이스 엔진입니다
트랜젝션 세이프 스토리지 엔진으로서 대용량 데이타를 처리 할 때 많은 장점이 있습니다.
또한 InnoDB는 오라클과 비슷한 기능을 제공합니다
(commit, reollback, 장애복구, row-level locking, 외래키 등)
1. InnoDB 장단점
1-1. 장점
우수한 성능
다수의 사용자가 동시접속을 할 수 있고, 대용량 데이터 처리를 할 수 있다.
데이터 테이블과 인텍스를 테이블 스페이스에 저장하고 테이블 스페이스는 파일과 파티션으로 구성되어 있다.
따라서 성능이 우수하다
데이터 무결성 보장
InnoDB 설계시 데이터 무결성에 중점을 두었기 때문에 데이터 무결성이 좋다
장애 복구 기능
단순하게 장애 복구를 하지 않고 논리적으로 장애 복구를 수행한다
1-2. 단점
Deadlock 발생
NODE간 데이터 체크로 인해서 Deadlock이 발생할 가능성이 존재함
많은 자원 소모
대용량 처리를 하게 된다면, 순간적으로 많은 자원을 소모한다.
데이타 복구의 어려움
단순하게 파일 백업으로 복구하는게 아니라 특정한 방법으로 복구를 수행함
2. MyISAM vs InnoDB
2-1. InnoDB가 유리한 경우
대용량의 데이터를 컨트롤 하는 경우
트랜잭션 관리가 필요한 경우
복구가 필요한 경우
정렬( order by ) 등의 구문이 들어가는 경우
IUD (insert , update , delete) 등이 빈번하게 발생하는 경우 (Row-level locking 때문)
2-2. MyISAM 이 유리한 경우
select 위주의 작업만 필요한 경우
전문 검색이 필요한 경우
트랜잭션이나 복구등이 필요없을 경우
한번에 대량의 데이터를 입력하는 배치성 테이블
3. InnoDB 에서 MyISAM 으로 변경하는 이유
오래된 mysql 버전에서는 MyISAM 이 default Engine 으로 사용되었고
I/O 가 빠르다는 장점과 sequence 를 지원하지 않는 mysql의 특성 때문에 MyISAM 를 사용하는 시스템이 많았음.
그러나 Row-level locking 인 InnoDB에 비해 Table-level locking 인 MyISAM 은 dml이 많은 시스템에선 한계가 있고
거듭된 향상으로 InnoDB의 속도도 MyISAM 과 차이없을 만큼 빨라지는 등 특별한 이유가 아니면 InnoDB 사용이 권장됨
4. 변경 방법
4-1. phpMyAdmin 쿼리창에서 변경
> alter table 테이블명 engine=innodb;
4-2. 기존 테이블을 덤프 후 새로 innodb 로 생성
참고자료
https://sarc.io/index.php/mariadb/1126-myisam-innodb
https://neocan.tistory.com/396?category=854152
트랜젝션 세이프 스토리지 엔진으로서 대용량 데이타를 처리 할 때 많은 장점이 있습니다.
또한 InnoDB는 오라클과 비슷한 기능을 제공합니다
(commit, reollback, 장애복구, row-level locking, 외래키 등)
1. InnoDB 장단점
1-1. 장점
우수한 성능
다수의 사용자가 동시접속을 할 수 있고, 대용량 데이터 처리를 할 수 있다.
데이터 테이블과 인텍스를 테이블 스페이스에 저장하고 테이블 스페이스는 파일과 파티션으로 구성되어 있다.
따라서 성능이 우수하다
데이터 무결성 보장
InnoDB 설계시 데이터 무결성에 중점을 두었기 때문에 데이터 무결성이 좋다
장애 복구 기능
단순하게 장애 복구를 하지 않고 논리적으로 장애 복구를 수행한다
1-2. 단점
Deadlock 발생
NODE간 데이터 체크로 인해서 Deadlock이 발생할 가능성이 존재함
많은 자원 소모
대용량 처리를 하게 된다면, 순간적으로 많은 자원을 소모한다.
데이타 복구의 어려움
단순하게 파일 백업으로 복구하는게 아니라 특정한 방법으로 복구를 수행함
2. MyISAM vs InnoDB
2-1. InnoDB가 유리한 경우
대용량의 데이터를 컨트롤 하는 경우
트랜잭션 관리가 필요한 경우
복구가 필요한 경우
정렬( order by ) 등의 구문이 들어가는 경우
IUD (insert , update , delete) 등이 빈번하게 발생하는 경우 (Row-level locking 때문)
2-2. MyISAM 이 유리한 경우
select 위주의 작업만 필요한 경우
전문 검색이 필요한 경우
트랜잭션이나 복구등이 필요없을 경우
한번에 대량의 데이터를 입력하는 배치성 테이블
3. InnoDB 에서 MyISAM 으로 변경하는 이유
오래된 mysql 버전에서는 MyISAM 이 default Engine 으로 사용되었고
I/O 가 빠르다는 장점과 sequence 를 지원하지 않는 mysql의 특성 때문에 MyISAM 를 사용하는 시스템이 많았음.
그러나 Row-level locking 인 InnoDB에 비해 Table-level locking 인 MyISAM 은 dml이 많은 시스템에선 한계가 있고
거듭된 향상으로 InnoDB의 속도도 MyISAM 과 차이없을 만큼 빨라지는 등 특별한 이유가 아니면 InnoDB 사용이 권장됨
4. 변경 방법
4-1. phpMyAdmin 쿼리창에서 변경
> alter table 테이블명 engine=innodb;
4-2. 기존 테이블을 덤프 후 새로 innodb 로 생성
참고자료
https://sarc.io/index.php/mariadb/1126-myisam-innodb
https://neocan.tistory.com/396?category=854152
댓글목록
등록된 댓글이 없습니다.