[MySQL] 문자 인코딩, 데이터베이스 엔진

2020. 9. 29. 14:44Database/MySQL

1. 문자 인코딩

1) 인코딩 확인

// 기본 인코딩 확인
mysql> STATUS;

// 상세 인코딩 확인
mysql> SHOW VARIABLES LIKE 'c%';

// 데이터베이스 인코딩 확인
mysql> SHOW CREATE DATABASE [DB명];

// 테이블 인코딩 확인
mysql> SHOW CREATE TABLE [TABLE명];
mysql> SELECT table_name, table_collation FROM information_schema WHERE [조건];

2) 인코딩 설정

/etc/my.cnf 파일은 DBMS의 인코딩을 정의하는 파일이다.

[client]
default-character-set=utf8

[mysqld]
default-storage-engine=InnoDB
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling Symbolic links is recommended to prevent assorted security risks.
symbolic-links=0

init_connect=SET collation_connection=utf8_general_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[msqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

데이터베이스 및 테이블 생성 시 인코딩을 지정할 수 있으며, 인코딩을 변경할 수도 있다.

// 데이터베이스 생성 시 인코딩 설정
mysql> CREATE DATABASE [DB명] DEFAULT CHARACTER SET utf8;

// 데이터베이스 인코딩 변경
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8;

// 테이블 생성 시 인코딩 설정
mysql> CREATE TABLE [TABLE명](...) DEFAULT CHARACTER SET utf8;

// 테이블 인코딩 변경
mysql> ALTER TABLE [TABLE명] DEFAULT CHARACTER SET utf8;

// 테이블 내 이미 만들어져 있는 데이터까지 변경
mysql> ALTER TABLE [TABLE명] CONVERT TO CHARACTER SET utf8;

 

 

 

2. 데이터베이스 엔진

1) 데이터베이스 엔진

MySQL에는 그 특성에 따라 여러 종류의 데이터베이스 엔진이 존재한다. 가장 많이 알려져 있고 또 가장 많이 사용하고 있는 MyISAM과 InnoDB가 있다. 기존 MyISAM이 MySQL이 기본 엔진이었다면, MySQL 5.5 부터는 InnoDB가 기본 엔진으로 변경되었다.

2) MyISAM

상대적으로 높은 성능과 읽기 위주의 요청에 유리한 엔진이다. MyISAM은 테이블 단위로 Lock이 걸려 있기 때문에 두 가지 이상의 데이터를 동시에 INSERT/UPDATE가 할 수 없기 때문에 트랜잭션 지원이 안된다.

3) InnoDB

MyISAM과 달리 트랜잭션을 지원하며, 빈번한 쓰기, 수정, 삭제 시 처리 능력이 좋으며 디스크, 전원 등의 장애 발생 시 복구 성능도 좋다. 동시처리가 많은 환경에 적합하다.

4) 데이터베이스 엔진 조회 및 변경

// DBMS에서 지원하는 엔진 조회
mysql> SHOW ENGINES

// 테이블 엔진 조회
mysql> SHOW TABLE STATUS;
mysql> SELECT table_name, engine FROM information_schema.tables WHERE table_schema=[DB명];

// 기본 엔진 변경 (임시 설정)
mysql> SET GLOBAL STORAGE_ENGINE=InnoDB;

// 기본 엔진 변경 (영구 설정)
// my.cnf 설정 파일의 default-storage-engine으로 설정 가능

// 테이블 엔진 변경
mysql> ALTER TABLE [TABLE명] ENGINE=[ENGINE명];
728x90

'Database > MySQL' 카테고리의 다른 글

[MySQL] 뷰, 트랜잭션  (0) 2020.09.29
[MySQL] 외래키, 조인, 집합 연산자, 서브 쿼리  (0) 2020.09.29
[MySQL] 데이터베이스 스키마  (0) 2020.09.29
[MySQL] MySQL Client  (0) 2020.09.28