MySQL 8.0 테이블스페이스 관리 방법 변경 내용 feat.테이블 스페이스 삭제한다면?!
안녕하세요.
MySQL 8.0에서의 테이블스페이스 관리 방법에 대해 변경된 내용과 사용 예제를 정리하겠습니다. 바로 시작합니다.
innodb_file_per_table_tablespace
MySQL 8.0을 새로 설치하였을 때 설정되는 default tablespace 옵션입니다. 다른 설정이 없으면 기본 적용입니다. 각 테이블마다 테이블 스페이스를 하나씩 만들어 관리됩니다. 압축 같은 다양한 테이블스페이스 옵션 등을 이용해서 각 테이블 별로 유연한 관리가 가능합니다.
general tablespace
우리가 아는 일반적인 테이블 스페이스 관리 방법입니다. ibd 파일을 하나 만들어 놓고, (default는 systeminnodb system tablespace) 한 ibd 파일에 여러 테이블의 데이터를 저장하는 방법 입니다. auto extened를 지원하지만 제한적입니다.마지막에 생성된 파일 하나에만 auto extened 옵션을 사용할 수 있습니다.
general tablespace 방식은 파일 시스템 오버해드가 덜하며, 메타데이터 크기를 줄일 수 있는 장점이 있습니다.
undo tablespace
이전에는 초기 설치 시엔 생성되지 않기에 원할 때 생성하여 사용할 수 있었지만, MySQL 8.0부터는 설치 후 다른 설정 없이 2개가 기본으로 생성됩니다.
<innodb_file_per_table_tablespace 사용 예제>
-- 테이블을 두 개 만듭니다. moonbk, moonbk_1
-- /var//var/lib/mysql 에 가면 테이블이 있는 스키마와 이름이 같은 president 폴더가 보입니다. 폴더를 확인해봅니다. 위에서 만든 테이블 이름과 같은 ibd 파일이 두 개 보입니다.
-- 다시 DB에서 moonbk_1 테이블을 drop 해봅니다.
-- 테이블 스페이스 파일이 있던 president 폴더를 다시 확인해보니 moonbk_1 파일이 삭제된 걸 확인할 수 있습니다.
-- 다시 처음과 같이 moonbk_1 테이블을 만들고, 테이블 스페이스 파일이 생성된 것을 확인 후, 이번에는 테이블을 drop 하지 않고 파일을 먼저 지워 봅니다.
-- 테이블 스페이스 파일을 삭제했는데도 moonbk_1 테이블이 조회됩니다. 데이터도 insert 되고요.
-- 하지만 그건 트릭이었습니다. 메모리의 트릭... 테이블 스페이스를 삭제하였으나 해당 정보가 메모리에 있었기에 조회도 되고, insert 도 되었습니다. 해당 세션을 종료 후 다시 접속하거나, 아래 그림처럼 mysql을 재시작하면 해당 테이블은 더 이상 조회되지 않습니다.
-- 아래 그림처럼 말이죠.
이번에는 mysql 8.0의 테이블 스페이스 관리에 대해서 알아보았습니다.
어떤가요? 간단하죠? ^^
감사합니다.
by.sTricky
'Database > mariaDB administrator' 카테고리의 다른 글
mysql 에러 메시지 Global Error Message Reference 조치 방안 (1) | 2020.03.17 |
---|---|
mysql 테이블 한글 insert 안될때 조치 방안 (4) | 2020.03.13 |
MySQL의 다양한 실행 프로그램 mysqld_safe, mysql.server, mysqld_multi feat.mysqld (0) | 2020.02.18 |
[mariadb] autocommit 설정과 트랜잭션 개념과 성질 (0) | 2020.01.30 |
[mariadb] 유저별 권한 관리, 권한 목록 종류, DB 권한 관리의 필요성, 권한 조회 (0) | 2020.01.13 |