InnoDB는 데이터, 인덱스, 데이터사전, 롤백세그먼트(UNDO LOG)를 테이블스페이스라고 불리우는 파일에 보존한다.
테이블 스페이스는 1개이상의 파일(또는 raw파일)으로 구성되어 데이터베이스디렉토리내에 ibdata1등의 이름파일로 작성된다.
InnoDB테이블스페이스의 최대 사이즈는 64T바이트이다.
기본적으로 mysqld의 옵션, innodb_data_home_dir옵션에 지정되는 디렉토리 밑에 파일이 작성된다.
그러나 innodb_data_file_path의 지정에 따라서 다른 디렉토리에 작성하는 것도 가능하다.
이 지정방법은 innodb_data_home_dir에서 상대패스로 지정됨으로 주의해야한다.
복수의 파일을 사용하는 경우에는 설정파일 my.cnf(또는 my.ini)의 innodb_data_file_path에 지정한다.
복수의 테이블스페이스를 사용하는 경우
innodb_data_file_path=/disk1/data/datafile:1G;/disk2/data/datafile2:1G
값의 서식은 다음과 같다.
- 파일명:사이즈[;파일명:사이즈]
- 파일명:사이즈:autoextend
- 파일명:사이즈:autoextend:max:사이즈
파일명뒤에 콜론(:)으로 사이즈(바이트)를 지정한다. (단위로서는 K,M,G가 사용가능하다. )
파일정의를 여러개 할 경우에는 세미콜론(;)으로 지정한다.
다음과 같이 스페이스를 넣으면 「 data2」처럼 스페이스가 들어간 파일명이 됨으로 조심해야한다.
data1:10M; data2:20M
마지막으로 지정된 파일에 대해서만 autoextend라는 키워드를 지정하는 것이 가능하다.
이것은 영역이 부족하게 되었을 경우 파일을 자동으로 확장하는 것을 의미한다.
자동확장의 한계치를 지정할 때에는 autoextend뒤에 :max:사이즈 를 붙인다.
한번 지정한 autoextend키워드를 생략할 때에는 그 시점에서의 파일 사이즈를 지정해 둘 필요가 있다. 사이즈는 1024바이트의 배수이다.
또, 다음과 같은 것들을 주의해야한다.
- 한번 작성한 데이터파일의 기술순서를 바꾸어서는 안된다.
- 테이블 스페이스를 한 번 작성한 후에 데이터파일을 지우는 것은 불가능하다.
- 테이블 스페이스를 한 번 작성한 후에 기술의 최후에 새로운 데이터 파일을 추가하는 것은 가능하다.
- 데이터 파일의 명칭과 패스변경은 가능하다.