suscríbete
Distribuir contenido

Tras superar el examen Certified MySQL Developer - I, he pensado que sería útil para aquellos que se estén planteándo empezar a estudiar para obtener la certificación publicar algunos consejos o ideas que he usado.

Esta lista está orientada a Mysql 5.0, pero hay muchos puntos que podrían ser genéricos para otros exámenes / sistemas / versiones.

  1. El primer paso a tomar para empezar el camino de la certificación es adquirir la guía oficial de estudio: MySQL 5.0 Certification Study Guide, cuesta entre 20 y 35 euros (según pilléis la oferta de Amazon), y es realmente útil por cuatro motivos:
    • Os permitirá acostumbraros a la terminología en inglés, ya que los exámenes están en este idioma.
    • Cubre los cuatro exámenes principales, los dos de desarrollador y los dos de DBA, por lo que con un solo libro lo abarcáis todo.
    • Trae un CD con muchísimas preguntas (con sus respuestas), separadas por tema y exámen.
    • Viene con un 25% de descuento para un exámen, y puesto que los examenes rondan los 180€, solamente esto ya amortiza el libro.
  2. Fijad una fecha de examen en cuanto empecéis a estudiar (pero después de recibir el libro, para aprovechar el descuento del examen). La idea de tener una fecha límite ayuda mucho a no procrastinar con el estudio. Y si finalmente la fecha que habéis escogido os viene realmente mal, podéis cambiarla online hasta 24 horas antes.

Este mediodía he ido a uno de los centros asociados de PearsonVUE para realizar el primer examen correspondiente a la certificación de desarrollador en MySQL 5.0.
¡Y lo he aprobado! (aquí la prueba, que se que hay mucho incrédulo suelto ;))

El aprobado estaba en acertar 43 de las 70 preguntas y he acertado 62.

Ahora a preparar la segunda parte, a ver si antes de final de año lo saco.

Para insertar automáticamente la fecha y la hora, es decir, el timestamp, en un campo de tipo TIMESTAMP en una tabla en MySQL podemos utilizar CURRENT_TIMESTAMP, siempre que estemos utilizando una versión de servidor Mysql superior a la 4.1.
Si se utiliza el timestamp automático en las inserciones, cuando se omita el campo en una inserción, éste tomara el valor de fecha y hora que tenga el servidor en ese momento. Para esto se debe usar la propiedad DEFAULT CURRENT_TIMESTAMP en la creación del campo.
Si se utiliza en las actualizaciones, cuando se produzca una sentencia UPDATE que omita el campo que tiene la propiedad en el timestamp, el campo tomará el valor actual de fecha y hora del servidor. Para esto se debe usar la propiedad ON UPDATE CURRENT_TIMESTAMP en la creación del campo.

Se pueden usar por separado, o combinadas:

Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones como actualizaciones
mysql> CREATE TABLE tabla_ejemplo1 (
                     fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
                           ON UPDATE CURRENT_TIMESTAMP
                     );
Query OK, 0 rows affected (0.09 sec)

Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones pero NO en actualizaciones
mysql> CREATE TABLE tabla_ejemplo2 (
                     fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP
             );
Query OK, 0 rows affected (0.03 sec)

Tabla con un campo timestamp que toma un valor de fecha automático en actualizaciones pero NO en inserciones
mysql> CREATE TABLE tabla_ejemplo3 (
                       fecha TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
            );
Query OK, 0 rows affected (0.02 sec)

Hay veces que realizamos operaciones de inserción que involucran valores autonuméricos y necesitamos averiguar el idetificador del último registro que hemos añadido para utilizarlo en verificaciones, o incluso en otras operaciones con la base de datos, como insertar registros hijos.

La función a utilizar en este caso sería last_insert_id(), a continuación muestro un ejemplo de su funcionamiento

He establecido un entorno de pruebas muy sencillo con un pequeño esquema que representa un sistema de autobuses y sus viajeros.

Optimizar el rendimiento de una base de datos puede ser una tarea muy compleja, ya que en muchas ocasiones no disponemos de suficiente información o la que tenemos nos hace intentar optimizar consultas o procesos que no merecerá la pena ser optimizados ya que el beneficio puede ser ínfimo.

MySQL pone a nuestra disposición una serie de parámetros y utilidades que pueden ahorrarnos mucho trabajo y facilitarnos la vida a la hora de intentar arreglar aquellas consultas de las que realmente podamos sacar una mejora sensible en el rendimiento.

El primer paso será activar el log dedicado al trazado de consultas lentas. Podémos comprobar fácilmente si lo tenemos ya activado utilizando este comando:

mysqladmin var |grep log_slow_queries
log_slow_queries | OFF

Si el resultado fuera ON, ya tenemos el parámetro activado, pero, al venir en estado OFF por defecto, lo más habitual será que no esté activado, por lo que deberemos activarlo.

Para sistemas Debian/Ubuntu, el fichero de configuración de MySQL normalmente estará en la ruta /etc/mysql/my.cnf , para activar la monitorización cambiaremos las siguientes líneas del fichero:

[mysqld]
long_query_time = 5
log-slow-queries = /var/log/mysql/mysql-slow.log

De esta forma le estamos indicando al servidor que monitoree las consultas más lentas de 5 segundos y guarde el log en /var/log/mysql/log-slow-queries.log (ambos parámetros se pueden ajustar a nuestras necesidades). Para que los cambios tengan efecto, se debe reiniciar el servidor MySQL (ojo, esto debe realizarse en un periodo en el que estemos seguros de que no va a afectar):

sudo /etc/init.d/mysql restart