블로그 내의 모든 예시와 실습은 VMware workstation16.2.3, Centos7을 활용 합니다.

DBMS 기본 인코딩 확인

  • mariadb> status;
  • MySQL 기본 패키지는 기본 인코딩이 latin1 으로 설정되어 있다.
  • 하지만 우리는 utf-8로 이미 설정했다.

인코딩1

  • mariadb>show variables like ‘c%’;

인코딩2

데이터베이스 인코딩 확인

인코딩3

(DEFAULT CHARACTER SET 부분)

데이터베이스 생성 시 인코딩 설정

  • mariadb> create database (DB명)default character set (문자셋) [ collate (콜레이션) ];

인코딩4

테이블 생성 시 인코딩 설정

  • mariadb>create table 테이블 이름 default character set (문자셋) [ collate (콜레이션) ];

인코딩5

기존 테이블 인코딩 변경

  • mariadb> alter table (테이블명) default character set (문자셋) [ collate (콜레이션) ];
    • 테이블 내 이미 만들어져 있는 데이터는 변경되지 않는다.

인코딩6

  • mariadb> alter table (테이블명) convert to character set (문자셋) [ collate (콜레이션) ];

인코딩7

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;

인코딩8

  • mariadb> select table_name,engine from information_schema.tables where table_schema =’DB명’;

인코딩9

DBMS 에서 지원하는 엔진 종류 확인

  • mariadb>show engines;
  • 기본엔진 확인 기능

인코딩10

기본 엔진 변경(임시 설정)

  • 시스템 재 부팅 시 설정 원복이 된다.
  • mariadb>set global storage_engine=InnoDB;

인코딩11

인코딩12

인코딩13

기본 엔진 변경(영구 설정)

  • mariaDB 설정 파일에서 변경(# vim /etc/my.cnf)
  • [mysqld] 설정 안에 default-storage-engine=[엔진명] 추가

인코딩14

인코딩15

인코딩16

테이블 엔진 변경

  • mariadb> alter table (테이블명) engine=(엔진명);