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

¿Por qué MySQL InnoDB es mucho más lento en los escaneos de tablas completas que MyISAM?

En mi servidor con su configuración, mi rendimiento base es el siguiente:

  • InnoDB:5,71 s
  • MyISAM:2,50 s

Esto no está mal en mi libro, pero puede necesitar algunos ajustes.

El rendimiento de InnoDB se puede mejorar en varios frentes:

Aumentar innodb_buffer_pool_size

  • Esta es la variable de configuración de InnoDB más importante. Idealmente, debería ser el 70-80 % de su RAM disponible en un servidor dedicado a MySQL y InnoDB.
  • Aumentando innodb_buffer_pool_size en mi servidor a 2G (más que suficiente para esta prueba) disminuido el tiempo de InnoDB a 4.60s

Hacer id la CLAVE PRINCIPAL

  • InnoDB agrupa sus datos en función de la CLAVE PRINCIPAL. Cuando no declara uno, InnoDB genera uno aleatorio implícitamente. Tener una clave primaria secuencial (id) es más rápido que uno aleatorio.
  • Hacer que id sea la CLAVE PRIMARIA en mi servidor disminuyó el tiempo de InnoDB a 3.80s

Actualice su MySQL/InnoDB

Con MySQL 5.1+, MySQL admite motores de almacenamiento conectables. Específicamente el nuevo InnoDB Plugin .

El nuevo motor InnoDB proporciona numerosas mejoras de rendimiento que pueden tienen efectos significativos en este tipo particular de consulta.

Nota:

  • A partir de MySQL 5.1.38, el complemento InnoDB está incluido en MySQL
  • A partir de MySQL 5.1.43, el complemento InnoDB no solo está incluido, sino que es el motor predeterminado para MySQL