ㄱ. 목적

1. Mysql의 테이블을 MyISAM 방식에서 InnoDB 방식으로 변경하는 방법을 알아본다.

ㄴ. 비교

1. MyISAM

장점 : 항상 테이블 명세에 row count를 가지고 있기 때문에

select count(*) from TABLE 이런식의 명령을 사용할 때 엄청 빠르다.

단점 : 많은 단점이 있지만 제일 큰 단점은 row level locking이 아닌 table level locking을 지원하기 때문에 한 테이블에 많은 접근이 이루어질수록 속도가 느려짐.

또한 트렌젝션을 지원하지 못하기 때문에 delete update를 잘못 사용 할 경우 백업 안하였을 경우에 큰 아픔이 따름.


2. InnoDB

장점 : 트랜젝션 지원, row level Locking 지원(ms-sql도 row level locking을 지원하지만 한 테이블에 locking이 많아질 경우 lock escalation(테이블 전체에 락이 걸리는 경우)가 있는데 mysql의 InnoDB에는 없음)

+ 트랜젝션이란? 

 정확성을 보장하기 위해 완전히 종료해야하는 데이터베이스 처리의 논리적 단위를 표현하는 개념.
대부분의 DBMS에서는 데이터의 일관성 및 동시성을 보장하기 위해 트랜잭션을 제공.


단점 : 풀 텍스트 인덱스를 지원 못함, 속도가 약간 느림, 테이블의 row 수의 정보를 가지고 있지 않기 때문에 select count(*) from TABLE 같은 식의 명령을 내릴때 innodb_buffer_pool에 해당 테이블의 인덱스 정보가 모두 들어가 있지 않다면 다시 스토리지 엔진이 하나하나 수를 계산하여 결과를 보여주기 때문에 매우 느림( 단 인덱스 컬럼으로 where 조건을 주어 count 하면 MyISAM과 동일한 속도를 보임)


ㄷ. 본론

1. 흔히 바꾸는 명령어는 다음과 같다.

alter table 테이블_이름 engine=InnoDB;

 하지만 위와 같은 명령어를 통해 테이블의 정보를 변경 할 경우, 실제로 운영하는 서비스의 처리속도가 떨어질 수 있다. 

 단순한 변환 명령보다 테이블을 새로 만드는 과정을 거치는 것이 좋다.


2.  다음과 같이 제일 마지막 부분의 ENGINE=InnoDB; 와 같은 구문을 첨가함으로써 InnoDB 테이블을 생성 가능하다.

CREATE TABLE customers (a INT, b CHAR (20), INDEX (a)) ENGINE=InnoDB;


3. 생성 후 다음과 같은 명령어로 InnoDB로 생성되었는지 확인 할 수 있다.

SHOW TABLE STATUS FROM test LIKE 'customers'


ㄹ. 결론

1. Mysql 에서 테이블을 InnoDB로 바꾸고 생성하는 법을 배워보았다.

2. 무조건 InnoDB만이 좋은 것은 아니다.


Posted by 시크한공돌이
,

1. 목적

ㄱ. Mysql의 DB, Table 생성 방법과 레코드 추가, 컬럼의 수정 방법을 알아본다.


2. 본론

ㄱ. 먼저 DB 생성 방법을 알아보도록 한다. 
    DB 생성은 다음과 같은 명령어로 생성한다.

create database createTest;

create database DB이름;


ㄴ.  다음은 테이블 생성 방법이다.

CREATE TABLE userInfo ( memberNo INT primary key auto_increment not null, memberId VARCHAR(20) not null, memberPw VARCHAR(40) not null, mail VARCHAR(50) );

CREATE TABLE 테이블명 ( 필드이름 자료형 추가, memberId VARCHAR(20) not null, memberPw VARCHAR(40) not null, mail VARCHAR(50), ........... );

a. 자료형은 다음과 같음

mysql 자료형 모음


ㄷ. 다음은 레코드 삽입 방법을 알아보자.

INSERT INTO table_name (field1, field2, ...) VALUES (value1, value2, ...)
INSERT INTO 테이블이름 (field1, field2, ...) VALUES (value1, value2, ...)

ㄹ. 필드의 속성 변경 방법을 알아보자

alter table userInfo modify column mail int;

alter table 테이블이름 modify column 필드명 자료형;

ㅁ. 필드의 이름 및 속성 변경하는 법을 알아보자

alter table userInfo change mail memberMail VARCHAR(50);

alter table 테이블명 change 이전컬럼명 바뀔컬럼명 자료형;


3. 결론

ㄱ. Mysql에 DB 생성, table 생성, 레코드 삽입, 컬럼의 수정에 대하여 알아보았다.

Posted by 시크한공돌이
,