Pregunta

Estoy citando parte de la respuesta que he recibido por otra pregunta de la mina:

En PHP/MySQL mundo diría yo los procedimientos almacenados son no-go

Me gustaría saber:¿Es así?Por qué?¿Por qué no?

[editar]me refiero a esto como una cuestión general, sin una necesidad específica en la mente[/edit]

¿Fue útil?

Solución

I desarrollar y mantener una gran PHP/MySQL de la aplicación.Aquí está mi experiencia con procedimientos almacenados.

A lo largo del tiempo nuestra aplicación se ha vuelto muy complejo.Y con toda la lógica en el php lado, algunas de las operaciones de consulta de la base de datos con más de 100 cortos consultas.

MySQL es tan rápido que el rendimiento fue aceptable, pero no genial.

Tomamos la decisión en nuestra última versión del software para mover algunos de los que la lógica de los procedimientos almacenados para las operaciones complejas.

Hemos conseguido un aumento de rendimiento significativo debido al hecho de que no nos tiene que enviar los datos de ida y vuelta entre PHP y MySQL.

Estoy de acuerdo con el de otros carteles aquí que PL/SQL no es un lenguaje moderno y es difícil de depurar.

Línea De Base:Los Procedimientos almacenados son una gran herramienta para ciertas situaciones.Pero yo no recomendaría el uso de ellos a menos que usted tiene una buena razón.Para aplicaciones simples, procedimientos almacenados no vale la pena la molestia.

Otros consejos

Cuando el uso de procedimientos almacenados con MySQL, necesitará utilizar el mysqli interfaz en PHP y no regular mysql la interfaz.

La razón de esto es debido al hecho de que los procedimientos almacenados a menudo va a devolver más de 1 conjunto de resultados.Si lo hace, la API de mysql no puede manejar y se obtiene errores.

La interfaz mysqli tiene funciones para el manejo de estos múltiples conjuntos de resultados, funciones tales como mysqli_more_results y mysqli_next_result.

Tenga en cuenta que si devuelve un conjunto de resultados en todo el procedimiento almacenado, entonces usted necesita para utilizar estas Api, como por el procedimiento almacenado 1 conjunto de resultados de la ejecución real y, a continuación, 1 adicional para cada conjunto de resultados intencionalmente devuelto por el procedimiento almacenado.

Generalmente me quedo lejos de procedimientos almacenados, porque se suma a la carga a la base de datos que es de un 99% de las veces, el mayor cuello de botella.Añadir un nuevo servidor php no es nada comparado con hacer de su base de datos MySQL replicar.

¿Tiene una necesidad específica de la mente que hace que los consideras?Los procedimientos almacenados son mucho menos portátil que "llanura" SQL, que generalmente es por qué la gente no quiere hacer uso de ellos.También, después de haber escrito una parte justa de PL/SQL, debo decir que el procedimiento de la escritura de código añade complejidad y no sólo muy moderno o comprobables.Que puede ser útil en algunos casos especiales en los que usted necesita para optimizar, pero yo sin duda lo piense dos veces.Jeff ha opiniones similares.

Esta es una cuestión subjetiva.

Creo personalmente que incluyen todos los cálculos dentro de PHP y solo usar MySQL como una tabla.

Pero, Si usted siente que es más fácil de usar procedimientos almacenados, a continuación, por todos los medios, ir adelante y hacerlo.

Yo no diría que "los procedimientos almacenados son un no-go", yo diría "no los uso sin una buena razón".

MySQL procedimientos almacenados particularmente horrible sintaxis (Oracle y MSSQL son bastante horrible demasiado), el mantenimiento de ellos sólo complica su aplicación.

Hacer uso de un procedimiento almacenado si usted tiene un (medibles) que la razón para hacerlo, de lo contrario no.Esa es mi opinión de todos modos.

Hay posiblemente una fobia de los procedimientos almacenados de mysql, en parte por no ser abrumadoramente potente ( en comparación con Postgresql e incluso MSSQL, mysqls procedimientos almacenados son muy poca ).

En el plus:Ellos hacen interactuar con ella de más de un idioma más fácil.

Si alguien afirma que "el uso de los procedimientos almacenados es mala porque no es portable a diferentes bases de datos"entonces, por supuesto, esto significa que ellos piensan que es probable que cambie de base de datos, lo que significa que en vez de decir que creo que no debería estar usando mysql.

Es popular el uso de ORM en estos días, pero yo, personalmente, creo ORM es un BadThing (Pregunta:82882)

Yo creo que el uso de los procedimientos almacenados pueden ofrecer algún tipo de abstracción en ciertas aplicaciones, como en cualquier lugar que iba a utilizar el mismo fragmento de código SQL para actualizar o agregar los mismos datos, luego puede crear el procedimiento almacenado save_user($attr.....) más que repetir lo mismo todo el lugar.

Acordada la sintaxis es peludo y si la utiliza para MSSQL y oracle sprocs hay diferencias que pueden fustrate.

También debe ser consciente de que los procedimientos almacenados no eran admitidos en Mysql antes de la versión 5.0. http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html También los procedimientos almacenados tendían a ser un poco raro en esa implementación.Ahora que Mysql 5.1 está empezando a surgir en el salvaje veo más uso de procedimientos almacenados con Mysql.

Me hacen un uso limitado de los procedimientos almacenados, y funciona bien.Yo soy el plomo dev para una de mis empresas clientes, trabajando en su e-comm sitio web.El cliente dispone de un sistema de valores, hemos implementado un conjunto de procedimientos almacenados en su sistema y construido un API para comunicarse con él.Esto nos permitió resumen de su base de datos y que podría implementar la lógica de los procedimientos almacenados.Simples pero cumplen el requisito de negocio muy bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top