블로그 내의 모든 예시와 실습은 VMware workstation16.2.3, Centos7을 활용 합니다.
DBMS 기본 인코딩 확인
- mariadb> status;
- MySQL 기본 패키지는 기본 인코딩이 latin1 으로 설정되어 있다.
- 하지만 우리는 utf-8로 이미 설정했다.
- mariadb>show variables like ‘c%’;
데이터베이스 인코딩 확인
(DEFAULT CHARACTER SET 부분)
데이터베이스 생성 시 인코딩 설정
- mariadb> create database (DB명)default character set (문자셋) [ collate (콜레이션) ];
테이블 생성 시 인코딩 설정
- mariadb>create table 테이블 이름 default character set (문자셋) [ collate (콜레이션) ];
기존 테이블 인코딩 변경
- mariadb> alter table (테이블명) default character set (문자셋) [ collate (콜레이션) ];
- 테이블 내 이미 만들어져 있는 데이터는 변경되지 않는다.
- mariadb> alter table (테이블명) convert to character set (문자셋) [ collate (콜레이션) ];
mysql 데이터베이스 엔진 = 스토리지 엔진(storage engine)
- MySQL에는 그 특성에 따라 여러 종류의 데이터베이스 엔진(스토리지 엔진 이라고도 한다.)이 존재
- 가장 많이 알려져 있고 또 가장 많이 사용하고 있는 엔진은 MyISAM과 InnoDB가 있다.
- 기존 MyISAM이 MySQL의 기본 엔진이였다면 MySQL 5.5부터는 InnoDB가 기본 엔진으로 변경됐다.
- InnoDB 특징
- 트랜젝션 지원
- 빈번한 쓰기/수정/삭제 시 처리 능력 향상
- 디스크 , 전원 등의 장애 발생시 복구 성능 향상
- 동시처리가 많은 환경에 적합
- Row 단위 Locking
- MyISAM 특징
- 상대적으로 높은 성능, 읽기 위주의 요청에 유리
- MyISAM은 트랜젝션 지원이 안된다.
- 여려 SQL문을 실행한 후 commit 또는 rollback 하는 기능이 없다.
- 테이블 단위로 Lock이 걸리기 떄문에 테이블에 두 가지 이상의 데이터를 동시에 insert/update 할 수 없다.
- 데이터가 거의 고정되어 있고 읽기가 많이 발생하는 경우에는 그 성능 효과를 충분히 발휘할 수 있다.
- 테이블 단위 Locking
테이블 엔진 조회
- mariadb> show table status;
- mariadb> select table_name,engine from information_schema.tables where table_schema =’DB명’;
DBMS 에서 지원하는 엔진 종류 확인
- mariadb>show engines;
- 기본엔진 확인 기능
기본 엔진 변경(임시 설정)
- 시스템 재 부팅 시 설정 원복이 된다.
- mariadb>set global storage_engine=InnoDB;
기본 엔진 변경(영구 설정)
- mariaDB 설정 파일에서 변경(# vim /etc/my.cnf)
- [mysqld] 설정 안에 default-storage-engine=[엔진명] 추가
테이블 엔진 변경
- mariadb> alter table (테이블명) engine=(엔진명);