본문 바로가기

DBMS/MySQL & MariaDB

MySQL 저장 엔진과 트랜잭션 처리 (1)


MY SQL에서 트랜잭션을 사용하려면 우선 자신이 사용하는 MySQL의  저장 엔진이 무엇인지부터 확인해야합니다. 

저장 엔진이란 데이터베이스에 대해 SELECT, INSERT, DELETE, UPDATE 하는데 사용하는 기본 소프트웨어 컴포넌트를 말합니다.


1. 저장 엔진(Storage Engine)


엔진 

특징 

환경

 ISAM 

 MySQL 5.0 이전의  기본 엔진.

 

 MyISAM 

 MySQL 5.1까지의 기본 엔진. 트랜잭션 미지원.

읽기 전용 또는 읽기 작업일 때 주로 사용.

 InnoDB 

 MySQL 5.5 이후의 기본 엔진

커밋, 롤백 크래시 - 복구 기능을 갖춘 MySQL 트랜잭션 엔진.

가장 많이 사용됨.

 MEMORY 

모든 데이터를 RAM 저장, Heap 엔진으로 알려져있다.


NDBCLUSTER 환경에서 사용됨.


 MERGE 

 MyISAM의 여러 개의 테이블을 하나의 테이블처럼 다룬다. 

VLDB 환경에 적합.












MEMORY

최근에는 InnoDB 또한 모든 데이터를 메모리에 보관할 수 있는 NDBCLUSTER을  제공하므로 잘 사용되지않음.  MySQL 레퍼런스 메뉴얼 참고


MySQL의 저장 엔진에는 여러 가지가 존재합니다. 그 중 가장 많이 사용하는 MyISAM과 InnoDB를 기준으로 포스팅 하도록 하겠습니다.


 InnoDB

MyISAM 

 트랜잭션 지원

트랜잭션 미지원 

COMMIT, ROLLBACK, 외래키등 다양한 기능지원

 복합 검색 가능

INSERT, UPDATE, DELETE 처리 속도가 빠름

SELECT 처리 속도가 빠름 

 데이터 무결성 보장

Full-Text 인덱스 지원

Row 단위 락

 Table 단위 락



트랜잭션 처리를 할 수 있는 DB는 InnoDB 밖에 없습니다. MyISAM은 테이블 단위로 락이 걸리기 때문에 테이블에 두가지 이상의 

데이터를 동시에 INSERT 하거나 UPDATE 할 수 없기 때문입니다.  따라서 정리하자면 MyISAM 저장 엔진 같은 경우에는 주로 SELECT, 

즉 조회 작업이 많은 경우에 사용하는 것이 일반적이고, InnoDB는 데이터를 변경하는 퍼포먼스가 많은 곳에 사용하는것이 일반적입니다.


만일 InnoDB가 아닌 다른 저장엔진을 사용하면서 트랜잭션 처리를 하고싶다면?

다행히도 MySql은 테이블마다 다른 저장엔진을 지정할 수 있습니다. 따라서 사용하고 있는 저장엔진에 추가로 InnoDB 저장엔진을 설정 해주면 됩니다. 하지만 저장엔진을 추가로 설정해줄 경우 백업 방식이나 LOCK 레벨이 다르기 때문에 사용이 까다로워지므로 알맞은 저장엔진을 설정 해주는 것이 좋습니다. 


(1) 저장엔진 확인

     - show table status; 

     - MySql 접속 → 확인 할 데이터베이스로 이동 → 데이터베이스 툴을 통해 DDL 정보를 확인 혹은 show create table 테이블명; 



(2) 저장엔진 변경 


ALTER TABLE 테이블명 ENGINE = 엔진명; 


(3) 테이블 생성시 저장엔진 추가


CREATE TABLE 테이블명 (컬럼1,컬럼2...) ENGILE = 엔진명;



'DBMS > MySQL & MariaDB' 카테고리의 다른 글

MySQL 백업 및 복원  (0) 2020.02.18
MySQL 기본 명령어  (0) 2019.03.05
MySQL 저장 엔진과 트랜잭션 처리 (2)  (0) 2017.11.06