Delirios de un Informático

Delirando sobre informática, fotografía, programación, móviles y mucho más desde 2003

Cómo “tracear” consultas SQL

votar
Archivado en Programacion con fecha 28/May/2009 - 3 comentarios
Ver en Bitacoras.com - Etiquetado con: , ,

Localizar y optimizar consultas SQL problemáticas es muy laborioso y complejo a veces. Uno de los mayores problemas con los que me he encontrado, es localizar exactamente desde dónde se ha ejecutado esa consulta para así reproducir el problema lo más fielmente posible en un entorno de desarrollo.

Un SHOW PROCESSLIST permite visualizar la lista de consultas que se están ejecutando, con su tiempo y el host desde donde se ha realizado la conexión pero sin más información, cuando lo realmente interesante es ¿desde dónde se ha ejecutado esta consulta?. La solución es muy sencilla: utilizar comentarios SQL dentro de las consultas.

Hoy en día, cualquier aplicación mínimamente grande utiliza una capa de abstracción (bien integrada en un framework, bien propia) por lo que no suele resultar difícil interceptar las consultas para añadir los comentarios. Si combinamos esto con funciones como debug_backtrace() de PHP (o su equivalente en Ruby o Python), tendremos una valiosísima información, ya que es posible determinar desde qué función, clase+metodo e incluso la línea concreta:

SELECT /* controlador test, metodo database, linea 17 */ field1, field2 FROM table

Este pequeño truco faciltará mucho el trabajo de detectar consultas conflictivas especialmente en casos en los que se ejecutan desde muchos lugares en diferentes archivos, y a efectos prácticos el rendimiento no se ve mermado.

Antes de comentar...

Puedes escribir lo que quieras, pero por favor hazlo respetando a los demás y en relación al tema que se está tratando. Todo comentario insultante o fuera de lugar será eliminado

Está permitido utilizar las siguientes etiquetas HTML para formatear tu comentario: <a> <b> <blockquote> <i> <u>. Además también puedes utilizar estos emoticonos:

:) :( :'( :P ;) :D XD :O :S 8) :$ (A) (L) (K) |) (6) :@ +o( :|

Puedes enviar referencias a esta anotación utilizando esta dirección

Comentarios

Ek' Lamat dijo hace 204 días:

wow… me parece genial!!

TBS dijo hace 204 días:

Sencillo, práctico y muy útil.

“Tracear” artesanalmente consultas SQL referenció hace 200 días:

[...] solución bastante artesanal para tracear consultas SQL. Cuando leia mis feeds y leí el título de Cómo “tracear” consultas SQL entré inmediatamente debido a que desconocía un método para realizar esta tarea. Lo que suele [...]

Haz tu comentario

Nombre Correo electrónico Página web

Delirios de un Informático :: Gestionado con WordPress :: Alojado en Bitacoras.com :: Licenciado bajo Creative Commons