Entradas

Mostrando entradas de mayo, 2013

CPU does not support crc32 instructions

Imagen
Una de las cosas que me sorprendió al instalar MySQL 5.6.10 fue en el log de inicio ver la siguiente instrucción CPU does not support crc32 instructions ¿que son las instrucciones crc32 ? Es nueva instrucción que se utiliza para acelerar el cálculo de sumas de comprobación CRC32 . Esta instrucción es parte del conjunto SSE4.2, y al igual que la mayoría de las instrucciones SSE, es bastante inútil. ¿qué son las instrucciones SSE ? Son instrucciones que mejoras las posibilidades de nuestro procesador, dependiendo de la CPU de nuestro servidor tendrá unas u otras. Al parecer hasta MySQL 5.6.10 aparecía el texto CPU does not support crc32 instructions en algunos procesadores que si soportan esta instrucción, es un bug de MySQL que se ha corregido en MySQL 5.6.11. Cómo sabes si estamos utilizando estas instrucciones, muy sencillo, lo veremos en el log de mysql bajo el siguiente texto: Not using CPU crc32 instructions . ¿cómo saber si en efecto mi CPU no soporta las instrucciones SS

Optimizando MySQL 5.6 innodb_flush_method

Imagen
El parámetro innodb_flush_method es el método que utilizará MySQL para vaciar los datos y logs que vaya recopilando durante su funcionamiento. Este post en realidad será una traducción del manual de MySQL y otras fuentes del inglés porque como se verá la configuración ideal es a base de prueba y error. Veamos un glosario de términos necesarios para entender este post fsync La función fsync () puede ser utilizada por una aplicación para indicar que todos los datos asociados  a archivos abiertos serán transferidos al dispositivo de almacenamiento asociado con el archivo descrito de una manera dependiente de la implementación del sitema. La función fsync no se detiene hasta que el sistema ha completado la acción o hasta que se detecta un error. La función fsync () obliga a todas las operaciones actuales en la cola de entrada / salida asociadas con un archivo a la sincronización. Todas las operaciones de E / S se realizan cuidando la integridad del archivo al finalizar el proceso de

Optimizando MySQL 5.6 innodb_buffer_pool_size

Imagen
Uno de los parámetros de configuración que hablé en el artículo anterior era innodb_buffer_pool_size , como su nombre indica es el buffer de almacenamiento de innodb, mientras mayor sea este valor menores serán las lecturas y escrituras en el disco duro y por consiguiente mayor será la velocidad de las operaciones. Lo único malo es que este buffer va directamente a la memoria RAM con lo cual si es poca tenemos que ajustarnos. El valor por defecto en MySQL 5.6.10 son 100 MB y lo que se recomienda en un servidor dedicado es el 80 % de la memoria RAM, pero bueno siendo MySQL muy pocos utilizamos un servidor dedicado para ello casi siempre compartimos con apache y otros servicios con lo cual lo mejor es ir probando configuraciones hasta dar con la ideal, yo tengo 3 GB de RAM y por ahora he puesto un buffer de 700 MB y no he notado carga en el servidor pero si una mejoría increíble en el acceso a disco. Os dejo las gráficas. Veamos el comportamiento del buffer innodb, nótese el cambio dr

Optimizando InnoDB en MySQL 5.6

Imagen
Realmente MySQL 5.6 no es la panacea, trae, según los desarrolladores, muchas mejoras en InnoDB, yo a simple vista no he podido observar ninguna salvo una ligera mejora en la velocidad, aún no he probado el FULL TEXT INDEX. Lo que si se nota nada más actualizar MySQL es el aumento exponencial de los ficheros asociados a innodb, fundamentalmente el fichero ibdata. Mysql guarda las tablas en un fichero denominado ibdata1, y aunque trunques las tablas y las vacíes, este fichero no decrece. Lo recomendable cuando instalas MySQL 5.6 (o actualizas a esta versión) es hacer un backup de cada tabla (así es más fácil la restauración en caso de error), borrar todas las tablas y las carpetas asociadas en /var/lib/mysql (salvo la de mysql), borrar los archivos de log de innodb (ib_logfile0 y ib_logfile1) y el archivo ibdata1. Una vez hemos hecho esto modificamos nuestro archivo my.cnf ubicado en /etc/ y ponemos las siguientes líneas: innodb_autoinc_lock_mode=0 innodb_file_per_table=1 innodb_fl

MySQL 5.6.11 error 1146

Al parece hay algún tipo de error en la instalación de algunas versiones de MySQL o en la actualización de algunas (a mi me ha pasado actualizando de la 5.6.10 a la 5.6.11), en el cual te pueden dar los siguientes errores: ERROR 1146 (42S02) at line 36: Table 'mysql.innodb_table_stats' doesn't exist ERROR 1146 (42S02) at line 45: Table 'mysql.innodb_index_stats' doesn't exist ERROR 1146 (42S02) at line 73: Table 'mysql.slave_relay_log_info' doesn't exist ERROR 1146 (42S02) at line 102: Table 'mysql.slave_master_info' doesn't exist ERROR 1146 (42S02) at line 120: Table 'mysql.slave_worker_info' doesn't exist Sin embargo si entras en un administrador de MySQL como SQLYog puedes ver que las tablas existen pero luego al intentar abrirlas te sale el error Error CODE: 1146 TABLE ‘mysql.innodb_table_stats’ doesn’t exist Esto ocurre al tener activada en nuestro my.cnf la opción innodb_file_per_table. Al parecer al actualizar MySQ