2010-03-12 23 views
5

Recientemente estaba revisando un blog y noté algunos puntos sobre el uso de PDO en mysql y cambió mi opinión sobre el PDO. Los puntos son:PDO en el rendimiento de mysql

  1. declaraciones preparadas nativos no pueden aprovechar las ventajas de la caché de consultas, resultando en un rendimiento inferior.

  2. declaraciones preparadas nativos no pueden ejecutar los tipos certains de consultas, como "VER LAS TABLAS"

  3. nativo preparado estados no se comunican correctamente longitudes de columna para ciertas otras consultas "VER", dando lugar a resultados confusos.

  4. Llamar a los procedimientos almacenados varias veces utilizando declaraciones nativas preparadas hace que la conexión caiga.

¿Alguien puede comentar sobre esto por favor?

Quería el caché de consultas en mi aplicación web. Me estoy preparando para mover mi aplicación web para hacer uso de PDO después de considerar problemas de rendimiento con mi sitio web. ¿Alguien puede por favor sugerirme?

Gracias de antemano.

+1

Deberías haber agregado el enlace a ese blog que creo que es [este] (http://wezfurlong.org/blog/2006/apr/using-pdo-mysql/). El autor ha aclarado que "cuando escribí esto en 2006, sí, era cierto" y "no tengo idea de si esto se resolvió o no posteriormente", lo espero después de varios años ". cuando alguien señaló que el primer punto es incorrecto. Entonces, la respuesta aceptada a continuación puede no ser aplicable ahora. –

Respuesta

5

Bueno

  • usted tiene razón para el primer punto
  • el espectáculo y VER tablas son comandos que no se usan comúnmente en la mayoría de los casos de uso
  • Iam usando statemends preparados en combinación con procedimientos almacenados y no tener sin embargo, experimentaron tales problemas.

Usted puede usar el siguiente comando para habilitar la caché de consulta:

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); 

Este comando está disponible desde PHP 5.1.3 solamente.

2

Declaraciones preparadas hace uso de caché de consultas, pero tiene condiciones:

Desde el 5.1 Doc:

Befor e MySQL 5.1.17, las declaraciones preparadas no usan el caché de consultas. Comenzando con 5.1.17, declaraciones preparadas utilizan el caché de consultas bajo ciertas condiciones, que varían en función del método de preparación:

  • declaraciones que se emiten mediante el protocolo binario utilizando mysql_stmt_prepare() y mysql_stmt_execute().
  • Declaraciones que se emiten utilizando el protocolo de texto (no binario) con PREPARACIÓN y EJECUTAR. Consulte la Sección 12.6, "Sintaxis SQL para declaraciones preparadas".

la que el 5.5 Doc reafirma como: declaraciones

preparados que se emiten mediante el protocolo binario utilizando mysql_stmt_prepare() y mysql_stmt_execute(), están sujetas a limitaciones en el almacenamiento en caché. La comparación con las declaraciones en el caché de consultas se basa en el texto de la declaración después de la expansión de? marcadores de parámetros. La declaración se compara solo con otras declaraciones en caché que se ejecutaron utilizando el protocolo binario. Es decir, para propósitos de caché de consultas, las declaraciones preparadas emitidas usando el protocolo binario son distintas de las declaraciones preparadas emitidas usando el protocolo de texto.

+0

"Antes de MySQL 5.1.17, las declaraciones preparadas no usan el caché de consultas. A partir de 5.1.17, las declaraciones preparadas usan el caché de consultas bajo ciertas condiciones, que difieren según el método de preparación: ... Declaraciones que se emiten utilizando el protocolo binario que usa mysql_stmt_prepare() y mysql_stmt_execute() " – thomasrutter

+0

@thomasrutter - Buena idea citar el documento en lugar de solo vincularlo. He agregado la documentación para ser más útil. – SeanDowney

+0

También hay algunas calificaciones debajo de ese texto; por ejemplo, el almacenamiento en caché se realiza después de la expansión de "?" parámetros, y hay algunas cosas que se deben tener en cuenta según si usa PREPARE y EXECUTE o si usa las funciones de API prepare(), etc. – thomasrutter

Cuestiones relacionadas