Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ajustements des performances d'InnoDB

Votre innodb_buffer_pool_size doit être défini sur la quantité de données et d'index InnoDB dont vous disposez. Exécutez cette requête et elle vous indiquera le paramètre minimum recommandé pour les données Innodb actuelles 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 vos données InnoDB dépassent de loin la RAM installée sur le serveur de base de données, je recommande 75 % de la RAM installée sur la boîte. Donc, si vous avez un serveur de 16 Go, utilisez 12 Go comme innodb_buffer_pool_size.

Vous devez également définir innodb_log_file_size à 25 % de innodb_buffer_pool_size ou 2047 M, selon la valeur la plus petite. Pour modifier le fichier ib_logfile0 et ib_logfile1, vous devez :

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

Si vous utilisez MySQL 5.5, définissez les éléments suivants :

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

Si vous souhaitez conserver les données MyISAM, exécutez cette requête pour le paramètre idéal pour 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;

MISE À JOUR 2013-02-13 12:55 EDT

J'ai appris récemment à ne pas définir innodb_io_capacity très élevé, voire pas du tout. Cela est particulièrement vrai pour le matériel et les machines virtuelles de base :