Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ajustes de desempenho do InnoDB


Seu innodb_buffer_pool_size deve ser definido para a quantidade de dados e índices do InnoDB que você possui. Execute esta consulta e ela informará a configuração mínima recomendada para os dados atuais do Innodb do 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;

Se os dados do InnoDB excederem em muito a RAM instalada no servidor de banco de dados, recomendo 75% da RAM instalada na caixa. Portanto, se você tiver um servidor de 16 GB, use 12 G como innodb_buffer_pool_size.

Você também deve definir innodb_log_file_size para 25% de innodb_buffer_pool_size ou 2047M, o que for menor. Para alterar o arquivo ib_logfile0 e ib_logfile1, você deve:
mysql -uroot -p -e"SET GLOBAL innodb_fast_shutdown = 0;"
service mysql stop
rm ib_logfile0 ib_logfile1
service mysql start

Se você estiver usando o MySQL 5.5, defina o seguinte:
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=20000 (set this to your device's IOPs)

Se você mantiver os dados do MyISAM, execute esta consulta para a configuração ideal para 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;

ATUALIZAÇÃO 2013-02-13 12:55 EDT


Eu aprendi recentemente a não definir innodb_io_capacity muito alto, se for. Isso é especialmente verdadeiro em hardware de commodity e VMs: