Cuando se trata de MySQL, no hay comparación entre los motores de almacenamiento, excepto que se divide en dos categorías básicas:
MySQL presenta el uso de varios motores de almacenamiento
En cuanto a los motores de almacenamiento enumerados, los únicos que cumplen con ACID son InnoDB y NDB. ¿Por qué es importante mencionar esto? Dos razones:
- Otros motores de almacenamiento simplemente no se benefician con la presencia de más núcleos, que no sean E / S de disco básico, uso de CPU y rendimiento general.
- El código para cada motor de almacenamiento no transaccional, que dicta básicamente 14 operaciones internas independientemente del motor de almacenamiento, no fue diseñado para aprovechar el acceso a múltiples núcleos.
InnoDB bajo MySQL 5.5, InnoDB Plugin) y XtraDB de Percona Server tienen opciones que puede configurar para acceder a múltiples núcleos (Percona Server lo ha estado haciendo por más tiempo). De hecho, Percona inyecta alrededor de 30,000 líneas de código específicamente para mejorar el rendimiento de InnoDB con cada nueva versión GA del código fuente MySQL. Podemos estar seguros de que Oracle ha incluido sus propias mejoras de su propio grupo de expertos para ejecutarse dentro de InnoDB para la operación multinúcleo (desde MySQL 5.1.38).
Con la necesidad de realizar MVCC en los datos junto con el bloqueo de fila / página, el rendimiento de la transacción ahora se puede instrumentar, medir y configurar.
Si hay una cosa que he aprendido sobre el uso de múltiples núcleos, es que debe ajustar InnoDB de manera efectiva y no solo confiar en InnoDB de inmediato .
ACTUALIZACIÓN 2011-09-20 08:03 EDT
Con respecto a que InnoDB se beneficie de todos los núcleos, debemos mantener las cosas en perspectiva. Los núcleos también deben atender otros asuntos (SO, Disco, Memoria, Aplicaciones, Monitoreo, etc.) en el Servidor de Base de Datos. Para aquellos con presupuestos modestos, muchos tienden a tener un servidor de base de datos que también proporciona NFS, monitoreo desde Munin, soporte de aplicaciones para JBoss, PHP, y la lista continúa. Si desea que MySQL, más específicamente InnoDB, use más núcleos, el servidor de base de datos debe estar dedicado exclusivamente a MySQL y el sistema operativo / disco / memoria debe atender únicamente a MySQL . Dada esta perspectiva, InnoDB involucrará más núcleos sin ninguna duda .
En cuanto a InnoDB Plugin, se mencionó simplemente para mostrar iniciativas anteriores para tener un mejor InnoDB por parte de MySQL (eh, Oracle. Lo siento, todavía no sale de la lengua). Las nuevas variables para convocar más actividad central se hicieron evidentes a partir de MySQL 5.1.38.
Por ejemplo, innodb_read_io_threads e innodb_write_io_threads (ambos desde MySQL 5.1.38) asignan el número especificado de hilos para lecturas y escrituras. El valor predeterminado es 4 y el máximo es 64. ¡La configuración predeterminada y máxima es tan diferente (4 - 64) que muestra que InnoDB es tan multiproceso e intensivo en núcleos como lo configura !
Percona dirigió las necesidades de la comunidad MySQL para acceder a más núcleos con InnoDB. En consecuencia, MySQL comenzó a seguir su ejemplo. Tengo que admitir que Oracle (yuck) hizo las mejoras necesarias para una mayor actividad principal.