Fogeaters, Light The World.

15

2017-Aug

[mysql] 저장엔진

작성자: title: MoonBlonix 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으로 변경 되었는지 확인합니다.


profile
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15126
112 [jQuery] Ajax 옵션 설명 title: MoonBlonix 2017-09-15 1441
111 [jQuery] 페이지 부분 새로고침 + 1 title: MoonBlonix 2017-09-13 1128
110 정규표현식 분석 + 1 title: MoonBlonix 2017-09-12 1089
109 [php/mysql] 모든 uft-8 한글 인코딩 문제 title: MoonBlonix 2017-09-12 1497
108 [php] AES / mcrypt 양방향 대칭키 암호화/복호화 + 3 title: MoonBlonix 2017-08-28 1239
107 [php/jQuery/Ajax] 파일 업로드 구현 title: MoonBlonix 2017-08-28 1462
106 [jQuery] ajax 사용 기초 title: MoonBlonix 2017-08-19 1462
105 [php] 서버 용량 구하기 title: MoonBlonix 2017-08-15 1353
104 [jQuery] 레이어 팝업 title: MoonBlonix 2017-08-15 1490
103 [php/jQuery] 선택된 다수의 체크박스 값 넘기기 / 체크박스 제어 + 2 title: MoonBlonix 2017-08-15 1476
102 [mysql] 저장 프로시저 / 저장 함수 / 트리거 title: MoonBlonix 2017-08-15 1511
» [mysql] 저장엔진 title: MoonBlonix 2017-08-15 1472
100 [mssql / mysql] sql 트랜잭션(Transaction) + 1 title: MoonBlonix 2017-08-14 1508
99 [mysql] mysqli_fetch_row() mysqli_fetch_assoc() mysqli_fetch_array() 차이 title: MoonBlonix 2017-08-08 1482
98 [javascript/jQuery] Ajax의 흐름과 예제 title: MoonBlonix 2017-08-05 1539
97 [web] html 게시글 에디터 title: MoonBlonix 2017-08-05 1456
96 [mysql] JOIN 쿼리 사용하기 title: MoonBlonix 2017-08-05 1458
95 [mysql] 인덱스 (Index) 사용 방법 및 설명 + 2 title: MoonBlonix 2017-08-05 1716
94 [mysql] TEXT 타입, INT 타입 title: MoonBlonix 2017-08-05 1517
93 [mysql] 성능 향상 전략 + 4 title: MoonBlonix 2017-08-05 1468