2011-03-02 2 views
10

큰 테이블을 myISAM에서 InnoDB로 전환 중입니다. 전환이 의미있는 이유에 대해서는 많은 논의가 있었지만 테이블을 잘 수행하는 동안 어떻게해야하는지에 대해서는별로 중요하지 않았습니다.InnoDB 성능 조정

데이터베이스에서 InnoDB 및 MyISAM 테이블을 사용한다고 가정하면 성능 향상을 위해 MySQL conf 파일에서 변경해야하는 매개 변수가 있습니까?

퍼포먼스를 조정할 수있는 다른 기본값은 무엇입니까?

+4

톤. 매뉴얼과 MySQL 성능 블로그를 읽어보십시오. 두 스토리지 엔진을 모두 사용하려면 두 가지 모두에 대한 모든 매개 변수를 설정해야합니다. InnoDB의 경우 버퍼 풀 크기와 트랜잭션 커밋 유형으로 시작한다. –

+0

큰 테이블이란 무엇을 의미합니까 (얼마나 많은 공연?)? 어떤 OS를 사용합니까? – Sacx

답변

19

귀하의 innodb_buffer_pool_size은 귀하가 보유한 InnoDB 데이터 및 색인의 양으로 설정되어야합니다. 이 쿼리를 실행하고 당신의 InnoDB의 데이터까지 DB 서버에 설치된 RAM을 초과하는 경우 최소 MySQL의 현재 이노 디비 데이터

SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999), 
SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_innodb_buffer_pool_size 
FROM (SELECT SUM(index_length) KBS FROM information_schema.tables WHERE 
engine='InnoDB') A,(SELECT 3 pw) B; 

설정을 권장 당신을 말할 것이다, 나는 상자에 설치된 RAM의 75 %를 권장합니다. 따라서 16GB 서버가 있다면 innodb_buffer_pool_size로 12G를 사용하십시오.

또한 innodb_log_file_size를 innodb_buffer_pool_size의 25 % 또는 2047M으로 설정해야합니다. 파일 ib_logfile0 및 ib_logfile1라는를 변경하려면 다음을 수행해야합니다

innodb_read_io_threads=64 
innodb_write_io_threads=64 
innodb_io_capacity=20000 (set this to your device's IOPs) 

당신의 MyISAM 데이터를위한 이상적인 설정에 대한이 쿼리를 실행 유지할 경우 :

mysql -uroot -p -e"SET GLOBAL innodb_fast_shutdown = 0;" 
service mysql stop 
rm ib_logfile0 ib_logfile1 
service mysql start 

당신이 MySQL을 5.5을 사용하는 경우, 다음을 설정 key_buffer_size :

SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999), 
SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_key_buffer_size 
FROM (SELECT SUM(index_length) KBS FROM information_schema.tables 
WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql')) A, 
(SELECT 3 pw) B; 

UPDATE 2013 년 2 월 13 일 동부 서머 타임 12시 55분

내가 가진 요즘 알게되면 innodb_io_capacity을 매우 높게 설정하지 마십시오. 이 상품의 하드웨어 및 가상 머신에 특히 사실이다 : 그들의

+0

이것은 대단한 질문입니다. 질문 : 왜 innodb_io_capacity @ 20000에 대해 담요를 추천 했습니까? 그 번호가 서버의 디스크 IOPS와 일치해야합니까? –

+0

@ ClaytonDukes 당신은 절대적으로 옳습니다. 나는 그 종류의 하드웨어를 가진 웹 호스팅 클라이언트를 가지고있다. 극단적 인 숫자를 유감스럽게 생각합니다. – RolandoMySQLDBA