sql >> Base de Datos >  >> RDS >> Mysql

Ajustes de rendimiento de InnoDB

Su innodb_buffer_pool_size debe establecerse en la cantidad de datos e índices de InnoDB que tiene. Ejecute esta consulta y le indicará la configuración mínima recomendada para los datos Innodb actuales de 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;

Si sus datos de InnoDB superan con creces la RAM instalada en el servidor DB, recomiendo el 75 % de la RAM instalada en la caja. Entonces, si tiene un servidor de 16 GB, use 12 G como innodb_buffer_pool_size.

También debe configurar innodb_log_file_size al 25% de innodb_buffer_pool_size o 2047M, el que sea menor. Para cambiar el archivo ib_logfile0 e ib_logfile1, debe:

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

Si está utilizando MySQL 5.5, configure lo siguiente:

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

Si va a conservar los datos de MyISAM, ejecute esta consulta para obtener la configuración 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;

ACTUALIZACIÓN 2013-02-13 12:55 EDT

He aprendido últimamente a no configurar innodb_io_capacity muy alto, en todo caso. Esto es especialmente cierto en el hardware básico y las máquinas virtuales: