개요
InnoDB 엔진을 사용하는 테이블의 파일 구조
구성 환경
Mysql-5.7 버전
각 Storage Engine 테이블의 파일 명명
InnoDB 테이블 : 테이블의 데이타는 테이블스페이스에 저장되고, 테이블 구조 파일은 database 디렉토리에 <테이블이름>.frm 형태로 존재
MyISAM 테이블 : 데이타베이스 디렉토리에 <테이블이름>.frm(테이블 구조 파일), <테이블이름>.MYD(데이타 파일), <테이블네임>.MYI(인덱스 파일) 형태로 존재
InnoDB 파일 구조
tablespace(system tablespace file + file-per-table tablespace + general tablespace + undo tablespace + Global Temporary Tablespace) + redo log file
1. tablespace
1.1 system tablespace
- 테이블스페이스 이름 : innodb_system
- InnoDB Storage Engine을 사용하는 테이블의 데이타및 인덱스 저장, 하나 또는 그 이상의 data file로 구성됨
- storage area for the InnoDB data dictionary, the doublewrite buffer, the change buffer, and undo logs
- mysql 설치시 디폴트로 ibdata 파일이 있음
- InnoDB table 생성시 TABLESPACE 옵션 지정하지 않으면 default taplespace 됨
- 환경변수 : innodb_data_file_path, innodb_data_home_dir
예) innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
1.2 file-per-table tablespace
- single InnoDB table로 데이타와 인덱스 포함
- 환경변수 innodb_file_per_table = ON 으로 설정시 활성화 됨
- 테이블 생성시 테이블의 구조 파일은 table_name.frm, 데이타 및 인덱스는 table_name.ibd 식으로 .frm, .ibd 확장자 이름으로 생성됨
1.3 general tablespace
- 하나의 data file로 구성됨, shared tablespace로 create tablespace 명령어로 생성
- system tablespace도 general tablespace에 포함됨
1.4 undo tablespace
- undo tablespace는 system tablespace 사용(8 미만 버전)
- 환경변수 : innodb_rollback_segments
1.5. Global Temporary Tablespace
- 환경변수 : innodb_temp_data_file_path
2. redo log file
일반적인 작동에서는 테이블 데이타 변경 요청을 기록, crash recovery 동안에는 불완전한 트랜잭션의 의해 쓰여진 데이타를 정정
- mysql 설치시 디폴트로 ib_logfile0,ib_logfile1 파일이 있음
- 환경변수 :
innodb_log_file_size : redo log 파일의 크기
innodb_log_files_in_group : redo log 파일의 갯수
innodb_log_group_home_dir : redo log 파일 생성 디렉토리
InnoDB 테이블스페이스, 테이블 관리
1. general tablespace 생성
mysql> CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.ibd' ENGINE=INNODB;
** tablespace는 myisam 엔진을 사용할 수 없음
2. general tablespace 삭제
mysql> drop tablespace ts1 ;
3. genreral tablespace 조회
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES where SPACE_TYPE='General' ; +-------+------+------+-------------+------------+-----------+---------------+------------+---------------+-----------+----------------+ | SPACE | NAME | FLAG | FILE_FORMAT | ROW_FORMAT | PAGE_SIZE | ZIP_PAGE_SIZE | SPACE_TYPE | FS_BLOCK_SIZE | FILE_SIZE | ALLOCATED_SIZE | +-------+------+------+-------------+------------+-----------+---------------+------------+---------------+-----------+----------------+ | 3 | ts1 | 2048 | Any | Any | 16384 | 0 | General | 4096 | 131072 | 131072 | +-------+------+------+-------------+------------+-----------+---------------+------------+---------------+-----------+----------------+ 1 row in set (0.00 sec) mysql> |
4. 모든 InnoDB tablespace 조회
mysql> select tablespace_name,file_name,file_type from information_schema.files ; +------------------+-------------------------------+------------+ |
5. table 생성시 TABLESPACE 지정
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1 ;
6. table의 TABLESPACE 변경
mysql> ALTER TABLE t1 TABLESPACE ts2 ;
'DBMS > MySQL' 카테고리의 다른 글
[MySQL] mysqldump 백업 (0) | 2019.11.29 |
---|---|
[MySQL] 바이너리 로그 파일 (0) | 2019.11.28 |
[mysql] 기본 명령어 (0) | 2019.11.27 |
[MySQL] mysql connector-J 설치 (0) | 2019.09.20 |
[MySQL] 설치(Source Code) (0) | 2019.09.18 |