Linux/SQL

[DBMS] 데이터베이스 엔진 (Database Engine)

GGkeeper 2021. 11. 30. 00:08

• mysql 데이터베이스 엔진 = 스토리지 엔진(storage engine)

MySQL에는 그 특성에 따라 여러 종류의 데이터베이스 엔진(스토리지 엔진 이라고도 함)이 존재 

가장 많이 알려져 있고 또 가장 많이 사용하고 있는 엔진은 MyISAM과 InnoDB가 있음

기존 MyISAM이 MySQL의 기본 엔진이었다면 MySQL 5.5부터는 InnoDB가 기본 엔진으로 변경됨

 

InnoDB 특징

트랜젝션 지원

빈번한 쓰기/수정/삭제 시 처리 능력 향상

디스크, 전원 등의 장애 발생시 복구 성능 향상

동시처리가 많은 환경에 적합

Row 단위 Locking

 

MyISAM 특징

상대적으로 높은 성능, 읽기 위주의 요청에 유리

MyISAM은 트랜젝션 지원이 안됨

여러 SQL문을 실행한 후 commit 또는 rollback 하는 기능이 없음

테이블 단위로 Lock이 걸리기 때문에 테이블에 두 가지 이상의 데이터를 동시에 insert/update할 수 없음

데이터가 거의 고정되어 있고 읽기가 많이 발생하는 경우에는 그 성능 효과를 충분히 발휘할 수 있음

테이블 단위 Locking

 


• 테이블 엔진 조회

mysql> show table status;

mysql> select table_name,engine from information_schema.tables where table_schema=‘DB명';


• DBMS 에서 지원하는 엔진 종류 확인

mysql> show engines;

기본 엔진 확인 가능


• 기본 엔진 변경(임시 설정)

시스템 재 부팅 시 설정 원복 됨

mysql> set global storage_engine=InnoDB;

mysql 재 접속 후 확인


• 기본 엔진 변경(영구 설정)

mysql 설정 파일에서 변경(# vim /etc/my.cnf)

[mysqld] 설정 안에 default-storage-engine=<엔진명> 추가

서비스 재시작

systemctl restart mariadb


• 테이블 엔진 변경

mysql> alter table <테이블명> engine=<엔진명> ;