15
2017-Aug
[mysql] 저장엔진
작성자: Blonix
IP ADRESS: *.64.228.3 조회 수: 1472
출처 :: http://recoveryman.tistory.com/187
1. 저장 엔진이란?
1.1 저장 엔진이란 무엇인가?
MySQL의 기능은 크게 두 가지로 나눌 수 있습니다.
첫 번째는 접속 기능과 SQL 문의 내용을 사전에 조사하는 기능, 즉 데이터베이스의 상위 부분이고, 두 번째는 그 상위 부분의 지시를 받아 실제로 검색이나 파일을 조작하는 기능의 하위 부분입니다. 이 하위 부분을 '저장 엔진'이라고 합니다.
1.2 저장 엔진의 종류
MySQL에는 여러 가지의 저장 엔진이 있는데, 사용자는 목적과 자신의 취향에 따라 저장 엔진을 선택할 수 있습니다. 또한, A 테이블은 ◯ ◯ 저장 엔진, B 테이블은 Х Х 저장 엔진과 같은 방식으로 테이블별로 저장 엔진을 지정할 수 있습니다.
이처럼 사용자가 독립된 형태의 저장 엔진을 선택할 수 있는 것은 수많은 RDBMS 중에서도 MySQL만의 고유한 특징입니다.
MySQL의 주요 저장 엔진
저장 엔진 | 특징 |
MyISAM | MySQL 5.1까지의 기본 엔진. 트랜잭션을 지원하지 않는다. |
InnoDB | MySQL 5.5 이후의 기본 엔진. 트랜잭션을 지원한다. |
ISAM | MySQL의 기본이 되는 저장 엔진. 예전 형식으로, MySQL 5.0부터는 설치되지 않는다. |
MEMORY | 데이터를 모두 메모리상에 보관하며, 동작이 빠르다. |
MERGE | MyISAM의 여러 개의 테이블을 하나의 테이블처럼 다룬다. |
여기서는 처음부터 기본 엔진으로 설정되어 있는 InnoDB를 그대로 사용하겠습니다. 사실은 MySQL 5.1까지는 MyISAM이 기본 엔진으로 설정되어 있었습니다. 이 MyISAM은 당시의 InnoDB에 비하면 처리 속도가 매우 빨랐으나 안타깝게도 트랜잭션을 지원하지 않았습니다.
그래서 당시에는 트랜잭션을 사용하지 않을 때에는 MyISAM을, 사용할 때에는 InnoDB를 이용하기도 했습니다. 그러나 지금은 InnoDB의 처리속도가 많이 향상되었기 때문에, 여기서는 MyISAM은 사용하지 않겠습니다.
저장 엔진을 보다 효율적으로 사용하려면 저장 엔진별로 세심한 튜닝이 필요하고, 새로운 저장 엔진에 대한 연구도 필요합니다. 하지만 여기서는 기초를 확실히 하는 것을 목표로 하고 있기 때문에, 현시점에서는 InnoDB만 사용해서 설명할 것입니다. 단, 저장 엔진의 기능은 점점 진화하고 있습니다. MySQL을 사용하는 이상, 목적에 최적화된 저장 엔진이 있다면 그 엔진을 사용하는 것이 효율적입니다. 미래에 대비하여 여기에서는 저장 엔진을 변경하는 방법만 기억합시다.
MyISAM과 InnoDB는 어떻게 읽을까?
읽는 방법은 개인마다 다르지만, 일반적으로 MyISAM은 '마이아이삼', InnoDB는 '이노디비'라고 불리고 있습니다.
2. 저장 엔진 설정하기
2.1 저장 엔진 확인하기
그럼 지금까지 사용했던 테이블의 저장 엔진을 확인해 보겠습니다. 테이블의 상세한 정보를 표시할 때에는 SHOW CREATE TABLE 명령을 사용합니다.
SHOW CREATE TABLE tb;
저장 엔진은 'ENGINE=Х Х'를 통해 확인할 수 있습니다. 앞의 예에서는 테이블 tb에 InnoDB가 사용되고 있다는 것을 알 수 있습니다. 테이블을 만들 때 저장 엔진을 별도로 지정하지 않으면 기본 설정인 InnoDB가 선택됩니다.
MySQL 콘솔창 사용 팁 - 쌍반점(;) 대신 \G 사용하기
앞의 예에서 SHOW CREATE TABLE;과 같은 명령을 실행하면 1행에 표시하는 데이터가 많아서 외관상 보기가 매우 불편합니다. 이럴 때 명령문의 마지막에 쌍반점(;) 대신 \G를 사용해봅시다. 이때, G는 반드시 대문자를 사용합니다.
\G를 사용하면 다음과 같이 칼럼별로 알아보기 쉽게 표시됩니다.
SELECT 명령과 같이 표시할 칼럼이 많거나 표시할 항목이 길 때 사용하면 편리합니다. 꼭 기억해 두기 바랍니다.
2.2 저장 엔진 변경하기
테이블의 저장 엔진은 나중에 변경할 수도 있습니다. 여기에서는 InnoDB가 설정된 테이블 tb1A의 저장 엔진을 MyISAM으로 변경해 보겠습니다.
저장 엔진을 변경할 때에는 ALTER TABLE 명령을 사용합니다.
저장 엔진을 MyISAM으로 변경하기
ALTER TABLE 테이블_이름 ENGIN=MyISAM;
'Query OK'라고 표시되어도 저장 엔진이 변경되지 않는 경우가 있습니다. 반드시, SHOW CREATE TABLE tb1A;를 실행해서 MyISAM으로 변경 되었는지 확인합니다.