Características de mysql_unbuffered_query() en PHP

PHP MySQLA muchos programadores de PHP les debe sonar la función mysql_unbuffered_query(), que por el nombre se deduce que es como la función mysql_query() pero sin pasar por el buffer, no? Un razonamiento rápido y obvio. Pero hay que definir mejor que es lo que realiza y como lo realiza, y cuales son sus ventajas y desventajas para poder decidir cuando utilizar una o otra función.

mysql_unbuffered_query() realiza una peticion SQL a MySQL, que puede ser un SELECT, UPDATE, SHOW, EXPLAIN, DELETE, … Las filas que devuelve la petición no son almacenadas en un búfer como lo ha hace mysql_query().

Las ventajas que ofrece son:

  • Ahorrar en recursos del sistema, porque cuando la cantidad de datos devuelta por la petición es considerable, esta no es almacenada en memoria.
  • Poder empezar a tratar las primeras filas del resultado que es devuelta por MySQL, sin esperar a que MySQL acabe la ejecución de la petición y sean devueltas todas las filas.

Las desventajas de mysql_unbuffered_query() son:

  • No se pueden utilizar las siguientes funciones:
    • mysql_num_rows(): obviamente, si MySQL aún no ha acabado la petición, no podemos saber el número de filas que va a retornar cuando acabe.
    • mysql_data_seek(): al no tener todas las filas del resultado, no esta permitido mover el puntero interno libremente a la fila que se quiera.
  • No se puede realizar otra petición SQL a la base de datos hasta que la petición no haya finalizado, y haya retornado todas las filas del resultado. Por lo tanto, si las operaciones que se van a hacer sobre las filas tienen peticiones SQL, tendrán que esperar a que finalice la petición de la base de datos. Un ejemplo didáctico sería, que si nuestro script hace un SELECT a la base de datos, y por cada registro queremos hacer un UPDATE, hasta que el SELECT no devuelva todos los registros, no se podrá hacer ningún UPDATE o otra petición.

En resumen, esta función puede optimizar nuestra aplicación en los casos que se hacen peticiones que ocupan mucho espacio, o peticiones en que nos urge empezar a trabajar con las filas y no son operaciones que realizan más peticiones a la base de datos.

Un comentario en “Características de mysql_unbuffered_query() en PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>