PHP y MySql una estrecha relación

Por el 27 de Diciembre de 2006

en: Programacion

La estrecha relación entre PHP y MySql es algo que conocemos hace años.

Ultimamente se esuchan muchas opiniones acerca de los nuevos objetos mejorados de MySql hablamos de (mysqli) y (PDO):

¿Que es mysqli?

La extensión mysqli permite acceder a la funcionalidad proveida por MySQL 4.1 y superior. Más información acerca del servidor de base de datos MySQL puede ser encontrada en http://www.mysql.com/

Más información

No se exactamente cuáles son las caracteristicas nuevas que nos ofrecen pero echando un vistazo al manual las más relevantes que aprecio son , codificación, transacciones y declaraciones elaboradas.

(Aquí os dejo un enlace a Zend.com, un articulo que discute las supuestas mejoras de mysqli)

¿Que es PDO?

La extension para PHP (PDO) define un ligero interfaz, para el acceso a bases de datos.

Más información

Como mysqli, también ayuda con declaraciones elaboradas.
Sin embargo, para MySQL, no hace todo lo que hace mysqli. Lo más detacable es charset y funcionalidad de codificación. Pero, para los nuevos usuarios (especialmente ésos que son de Perl, ASP, etc.) es probablemente un buen punto de partida.

Declaraciones elaboradas

“El protocolo cliente/servidor de MySQL prevee el uso de declaraciones elaboradas. Esta capacidad utiliza la estructura de datos de la declaración MYSQL_STMT devuelta por la función mysql_stmt_init ().
La ejecución preparada es una manera eficiente de ejecutar una declaración más de una vez. La declaración primero se analiza para prepararla para la ejecución. Entonces se ejecuta una o más veces a la vez, usando el conjunto de declaraciones devueltas por la función de la inicialización.”

Una de las mayores ventajas que se han escuchado sobre las declaraciones elaboradas es que reduce el tiempo de ejecución de las sentencias MySql, aquí hay algunas pruebas de selects con PDO y mysqli con declaraciones elaboradas, recogidas en esta pagina dealnews.

Las pruebas

Hay dos tipos de pruebas. En todos los casos, pruebas han sido realizadas varias veces. La mejor marca para cada prueba fue registrada.

Select

Un consulta select de 100 filas en una tabla que contiene información de un foro.

select
phorum_messages.author, phorum_messages.datestamp, phorum_messages.email,
phorum_messages.message_id, phorum_messages.meta, phorum_messages.moderator_post,
phorum_messages.modifystamp, phorum_messages.parent_id, phorum_messages.sort,
phorum_messages.status, phorum_messages.subject, phorum_messages.thread,
phorum_messages.thread_count, phorum_messages.user_id, phorum_messages.viewcount,
phorum_messages.closed
from
phorum_messages use index (list_page_float)
where
modifystamp > 0 and forum_id = 12 and status = 2 and parent_id = 0 and sort > 1
order by
modifystamp desc
limit 0, 100

Medir el tiempo de una sola consulta no daría datos demasiado útiles por eso se realizan algunas pruebas más que dan como resultado lo siguiente, se muestran el número máximo de repeticiones de la consulta dada en un segundo:

tipo req/s
————————
mysqli…………..164
mysql……………162
PDO………………88
mysqli (elaboradas)..86
PDO (elaboradas)…..81

Como puedes ver decepciona la velocidad de PDO.Sin embargo nos puede alegrar ver que mysqli ofrece el mismo rendimiento que mysql. Tambien queda claro que utilizar las declaraciones elaboradas no es nada rápido.

Insert

La prueba siguiente es insertar 10.000 filas en una tabla. Cada consulta una cantidad al azar de datos en el campo texto. Aqui os dejo la prueba:

CREATE TABLE `testing_mysql` (
`id` int(10) unsigned NOT NULL auto_increment,
`char_field` varchar(255) NOT NULL default ”,
`text_field` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM

MySQL soporta lo que llama insert extendidos. Básicamente, puedes enviar una consulta con multiples valores, utilizando –opt con el mysqldump, se crean dumps usando este formato.
En la siguiente prueba se utilizan estos métodos y los utilizados en la prueba anterior con las declaraciones elaboradas.

extension time
————————–
pdo (extendido)….18.17s
mysqli (extendido).18.40s
mysql (extendido)..18.46s
pdo (preparadas)…25.04s
mysqli(preparadas).36.93s
mysqli………….50.43s
mysql…………..53.09s
pdo…………….59.96s

Los resultados no son los esperados. Usar los inserts extendidos optimiza la velocidad del servidor.

Conclusión

Rendimiento

Para el mejor rendimiento deberías escoger entre mysql y mysqli siendo las dos muy parecidas en cuanto a resultados. Aunque la mas recomendable debe ser mysqli puesto que nos ofrece mejores opciones para optimizar la velocidad.
PDO no es el formato que ofrece mayor rendimiento por lo tanto su uso no es demasiado recomendado.

Características

Por características el mejor es mysqli con la posibilidad de fijar las preferencias de la conexión y otras muchas opciones que sin duda alguna superan las de mysql.

Facilidad de uso

La extensión mysql esta ya totalmente probada y es utilizada pos millones de usuarios, hay numerosa documentación sobre como usarla, para muchos usuarios a simple vista es mucho más atractiva por otro lado mysqli parece ofrecer mejor rendimiento y la migracion de una extension a otra es sencilla solo habrá que cambiar unos cuantos parametros.
PDO es sin embargo unicamente recomendable para desarrolladores que vengan de otros lenguajes como ASP o Perl por su facilidad de uso.Sin embargo no lo recomendariamos para los usuarios PHP que buscan un alto rendimiento.

Y el ganador es…

Mysqli que es sin duda un mysql – mejorado. Ofrece más características y un gran rendimiento.

Fuente del artículo

3 Respuestas a PHP y MySql una estrecha relación

Avatar

Hely Rojas

8 de Julio de 2007 a las 11:38 pm

Porque me Gusta MySQL

1. Cuando a mi cansada maquina le doy (Ctrl + Supr) y veo la cantidad de recursos del sistema que consume SQLserver frente a los pocos que consume MySQL.. 3 Puntos

2. Despues de observar los (odiosos) procesos alternos a SQLserver que hacen llenar la de por si llena lista de procesos.

3. La simple, tonta y eficaz interfaz de usuario de MySQL frente a la Elegante, Completa, Compleja, (tiene mas botones que el trasbordador) Interfaz de Usuario de SQLserver.

4. La humildad del proceso MySQL, frente a la Ostentosa, Robusta y Escalable…

5. Que si no estoy mal es motor de datos usados por goooogle.

6. Que les enseño a los Grandes a ofrecer versiones GRATIS de sus productos, eso incluye a SQLserver y Oracle.

7. Que es FREE

Claro que no comparto cosas como las odiosas comillas. pero en fin, el mundo es perfecto, pero no ideal.

Avatar

ruslanpk

23 de Enero de 2009 a las 12:22 pm

О сайте вам скажу харашо получилось

вот так

Руслан

Avatar

pepe

24 de Octubre de 2009 a las 5:16 pm

buena tutorial yo igual ami se serviomucho jeje
hay otros tutoriales en you tube
sobre eseprograma

como tambien aqui

w w w . paginawebysistemas . com

Dejar un comentario

Patrocinadores

¿Interesado en patrocinar TuFunción?

Suscripción

Primera División