04 octubre 2012

De optimizaciones de MySQL

Hace ya un tiempo que no escribo ninguna entrada en el blog debido a la cantidad de trabajo que me está viniendo encima, que viendo los tiempos que corren, quizás hay que pensar que es más una cuestión de fortuna que de desgracia.

Sigamos con lo que me interesa. El hecho es que mi grupo se va a hacer cargo de un despliegue web de un cliente. El despliegue es servicio un servidor web Apache con PHP, una base de datos MySQL. Al trabajar en el mundo de la consultoría, para bien o para mal, hay otro grupo que hace el "delivery", es decir, ellos preparan las instalaciones y me las traspasan. En este caso, el cliente estaba bastante cabreado con el delivery de bases de datos. Es común pensar que MySQL es una base de datos de juguete, y entonces lo que hacen las consultoras es coger a un administrador de base de datos de Oracle, que es una base de datos de verdad, y lo ponen a preparar la entraega. En nuestro caso ha pasado, que el cliente no sólo no es tonto, sino que encima sabe técnicamente y ha llegado un momento en el que ha visto que no se ha optimizado la base de datos sino que la base de datos era un cuello de botella.

Finalmente nos han traspasado a nosotros el Delivery de la base de datos, lo hemos hecho y el cliente está un poco más contento porque ahora la base de datos funciona bien. Ahora yo me pregunto, ¿tengo que hacer yo la documentación de algo que me tienen que traspasar?.

Respecto a las optimizaciones nos dedicamos a seguir las recomendaciones de la web de mysql, o en caso de duda, las de mysqlperformance.

Finalmente la sensación que tengo es que la mejora en la base de datos viene dada por el aumento de dos variables:

innodb_read_io_threads
innodb_write_io_threads

Con 12 cores situamos los parámetros anteriores en 24, y da la sensación de que esa ha sido la mejora sustancial.

Ahora se ha traspasado la responsabilidad a Apache, pero realmente por mucho que optimicemos, hay una seguridad del 90% de que haya que optimizar el código php, y norlmalmente esta es la parte menos flexible.

No hay comentarios: