2013-08-19 2 views
1

데이터베이스를 조정하기 위해 mysqltuner를 실행 중이며 매우 이상한 상황이 발생합니다. 전체 데이터베이스의 MyISAM (모든 테이블) 비록전체 데이터베이스가 MyISAM 임에도 불구하고 큰 InnoDB 데이터 크기가 필요합니까?

그것은 다음과 같이 말한다 :

[!!] InnoDB data size/buffer pool: 403.1M/128.0M 

데이터베이스의 기본 스토리지 엔진은 이노 (모든 테이블을 MyISAM에도 불구하고) 그래서 나는이 될 줄 알았는데 어떻게 든 문제를 일으켰지 만, default-storage-engine 값을 MyISAM으로 바꿨을 때 mysqltuner에서 똑같은 InnoDB 관련 경고를 볼 수 있습니다.

왜 이런 일이 발생하며 어떻게 수정합니까? InnoDB를 사용하지 않을 때는 InnoDB의 버퍼 풀에서 400M을 낭비하지 않을 것입니다.

참고 : 여기서는 MyISAM VS InnoDB에 대한 오래된 질문에 대해 논하지 않고, InnoDB가 사용하지 않는데도 InnoDB가 왜 내 리소스를 먹고 있는지 알아야합니다.

+0

'default-storage-engine'은 새로운 테이블만을위한 것입니다. 새 테이블을 작성할 때 엔진을 지정하지 않으면 기본값이 사용됩니다. –

+0

모든 테이블은 다른 서버에서 가져 왔기 때문에 MyISAM입니다.이 서버에서는 생성되지 않습니다. – jovan

답변

1

disambiguation : "데이터 크기"는 "버퍼 풀"이 아닙니다.

데이터 크기는 디스크의 데이터베이스 파일 크기입니다. innodb_data_file_path 서버 옵션을 통해 구성 할 수 있습니다.

버퍼 풀은 InnoDB 테이블 데이터와 인덱스를위한 버퍼로 사용되는 메모리 (RAM) 공간입니다. 구성 옵션은 innodb_buffer_pool_size입니다.

더 InnoDB의 테이블이 실제로 존재하지 않는 경우 다음
SELECT * FROM information_schema.tables WHERE engine='InnoDB'; 

, 당신은 rebuild the InnoDB tablespace 처음부터 (유일한 방법은 테이블을 줄일 수 있습니다


첫째, 확실히 더 InnoDB의 테이블이 인스턴스에 모두가 없는지 확인 이것은 MySQL의 성가신 누락 된 기능이다). InnoDB 테이블이 있어도, 사용되지 않는 공간을 되찾기 위해 테이블 ​​스페이스를 재 빌드 할 수있다. (더 많은 정보는 this answer을 보라).

innodb_buffer_pool_size을 5MB 미만으로 설정할 수 없습니다. 하지만 skip-innodb 옵션을 사용하면 InnoDB를 버퍼와 함께 비활성화 할 수 있습니다.

+0

글쎄, 사실, 나는 어리 석다. information_schema 테이블은 InnoDB이다. 나는 내 테이블 만 조사하고 있었다. 자, 내가 mysqltuner가 말하는 것과 InnoDB 버퍼 풀을 증가시켜야한다고 생각하니? 성능면에서 중요합니까? – jovan

+0

확실히 알기가 어렵습니다. 'SHOW ENGINE INNODB STATUS'로 풀 사용량을 확인하십시오 ("BUFFER POOL AND MEMORY"섹션을보십시오). 수영장이 가득차면 예. 큰 수영장을 이용하십시오. 이것은 자체적 인 질문이며 이러한 설정은 항상 사례별로 처리됩니다. – RandomSeed