Según el título: ¿Hay una lista rápida de candidatos para las tablas para migrar a InnoDB? Y lo que debería seguir siendo MyISAM.
Alguna información adicional
- El sitio tiene una carga de lectura bastante pesada, pero inserta aproximadamente 10 nodos por hora, con etiquetas y demás.
- Hacemos un uso intensivo de CCK (una gran cantidad de tablas normalizadas en forma de
content_field%
). - También usamos Vistas para aproximadamente todos nuestros bloques y páginas; pero muchos de ellos son candidatos para el reemplazo con módulos personalizados (como para reducir las consultas a la base de datos y el peso de esas consultas).
- Todos los usuarios son anónimos; con la excepción de algunos editores y webmasters conectados.
performance
database
Berkes
fuente
fuente
Respuestas:
Debe convertir todos los datos a InnoDB para evitar problemas de bloqueo de la tabla. Sin embargo, aquí hay algunas cosas para pensar:
Indexación FULLTEXT
En la actualidad, solo MyISAM admite la indexación FULLTEXT. La indexación de FULLTEXT para InnoDB está actualmente en proceso para MySQL 5.6 pero no está lista para producción . Si tiene tablas de Drupal que tienen índices FULLTEXT, no se pueden convertir a InnoDB en este momento.
ACTUALIZACIÓN sobre indexación FULLTEXT
MySQL 5.6 ahora es GA (fuera de uso de producción). Pruebe la indexación FULLTEXT en InnoDB.
Para localizar esas tablas que tienen un
FULLTEXT
índice, ejecute esta consulta:Si no vuelven filas, convierta todas las tablas de InnoDB al contenido de su corazón. Escribí una publicación anterior sobre cómo convertir todas las tablas MyISAM a InnoDB usando solo mysql .
Replicación MySQL
Si tiene un entorno de lectura pesada, las lecturas pueden ir más rápido en MyISAM si hace lo siguiente:
--skip-innodb
/etc/my.cnf en todos los esclavos (convierte las tablas a MyISAM al cargar datos en el esclavo)ALTER TABLE tblname ROW_FORMAT=FIXED;
ROW_FORMAT=FIXED
en las páginas 72,73. Esto convertirá internamente todos los campos VARCHAR a CHAR. Aumentará la tabla MyISAM, pero los SELECT ejecutados en ella serán mucho más rápidos. Personalmente puedo dar fe de esto. Una vez tuve una mesa de 1.9GB. Cambié el formato conALTER TABLE tblname ROW_FORMAT=FIXED
. La mesa terminó 3.7GB. La velocidad de los SELECT contra ella fue 20-25% más rápida sin mejorar ni cambiar nada más.El único dolor de cabeza con esto es hacer que su aplicación sea consciente de los esclavos de lectura separados.
EPÍLOGO
Si está buscando otros beneficios que tiene cada motor de almacenamiento, consulte el DBA StackExchange:
Apr 14, 2011
: ¿Cuáles son las principales diferencias entre InnoDB y MyISAM?Sep 20, 2011
: Lo mejor de MyISAM e InnoDBMay 02, 2012
: ¿Qué motor de almacenamiento mysql elegir?May 03, 2012
: ¿Cuál es más rápido, InnoDB o MyISAM?fuente
Como su sitio web está en el lado de lectura pesada, simplemente convertiría todas las tablas a InnoDB. Entonces podrá optimizar el rendimiento de lectura al dimensionar el grupo de búferes InnoDB y el caché de consultas de manera adecuada. De esta manera, estamos logrando varios miles de consultas por segundo en los servidores de bases de datos dedicados en nuestra infraestructura de alojamiento Drupal.
fuente