2011-01-27 1 views
1

InnoDB 사용에 대해 매우 혼란스러워합니다. 저장 용량이 제한적인 서버를 가지고 있고 InnoDB 테이블이 10MB 자동 확장에서 기본 크기 테이블을 생성한다는 것을 읽었습니다.InnoDB "autoextend"기능

"자동 확장"기능을 이해하지 못합니다. 한 테이블에 대해 10MB를 초과하면 MySQL은 자동으로 메모리를 증가시킵니다 (10MB + 10MB)?

그래서 모든 테이블의 기본 제한을 변경할 수 있습니까? 예를 들어

:

  • 표 = 기본 10MB의;
  • 표 2 = 기본 0.5MB;

가능합니까?

답변

3

innodb_file_per_table을 활성화하지 않으면 인스턴스의 모든 데이터베이스에있는 모든 InnoDB 데이터가 하나의 파일 집합 (구성 파일에 정의 됨)에 저장됩니다.

파일 세트에 여유 공간이없는 경우 세트의 마지막 파일 크기는 autoextend 매개 변수 (기본값 :)로 지정된 청크에서 증가합니다.

InnoDB은 세트의 마지막 파일 만 커집니다.

innodb_file_per_table을 사용하면 각 테이블마다 자체 테이블 공간이 사용됩니다. 이 파일은 항상 하나의 파일 (db 디렉토리에 있음)에 저장되며이 파일의 청크는 4M입니다. 이것은 변경할 수 없습니다.

+0

좋아, 어떻게이 파일의 크기를 확인할 수 있습니까? 18 테이블이 있다면 18 * 10MB = 180MB가되어야합니까? 어디에서 innodb_file_per_table을 설정할 수 있습니까? 내가 쿼리를 수행 할 때 그것을 설정해야합니다 : "CREATE TABLE table1 .... ENGINE = InnoDB"? – CeccoCQ

+0

@Cecco : 'MySQL' 데이터 디렉토리에서 찾으십시오. 기본적으로'ibdata1'라고 불립니다. 이 파일은 새 데이터를 테이블에 추가 할 때 자동으로 커지기 때문에 사전에 공간을 할당 할 필요가 없습니다. – Quassnoi

+0

@Cecco : 설정 파일의'[mysqld]'섹션에'innodb_file_per_table'을 설정할 수 있습니다. '* NIX'에서는 대개'/ etc/my.cnf'에 있습니다. – Quassnoi