Ver Mensaje Individual
  #13 (permalink)  
Antiguo 16/12/2008, 08:41
kurroman
 
Fecha de Ingreso: junio-2004
Mensajes: 266
Antigüedad: 19 años, 10 meses
Puntos: 8
Respuesta: ¿Cuando usar procedimientos almacenados?

Algunas puntualizaciones:

Cita:
Iniciado por gnzsoloyo Ver Mensaje
De modo que cierta desnormalización es posible por razones de eficiencia para el usuario.
Y por facilidad de interacción con los datos almacenados también.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Hay que ver de qué SP estamos hablando, en qué base y con qué datos.
Amén.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Sobre que los SP pueden disminuir la carga de trafico entre el cliente y el servidor, eso es cierto pero sólo bajo un criterio: cuando la tarea se realice off-line. Si usas SP para tareas en que el cliente (la aplicación) espera respuesta o resultado, generas una sobrecarga de tráfico hasta que la tarea del SP se termine y los resultados retornen.
Yo creo (y es una opinión) que vas a tener más problema por la conexión que tengas entre las máquinas que por la duración del SP, así que más problemas tendrás si te dedicas a enviar varias senticias SQL que un SP. En esa frase que dije, pongamos tráfico de red + ahorros de recursos de la máquina que gestiona la interfaz para completarla y cobre aún mas sentido.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Además, debes considerar que si se realizarán UPDATE, DELETE o INSERT dentro del SP, estos requieren transacciones y bloqueos de tablas que no se liberan hasta que el SP no lo hace..., por lo que los SP aumentan el riesgo de deadlocks si no están bien programados y las tareas son largas.
Pero si haces lo mismo en código, ¿también usarás transacciones no? No obstante en InnoDB los bloqueos son a nivel de registro, no de tablas y un SP de por sí ya es una unidad. (Igual no te he entendido bien en este punto)


Cita:
Iniciado por gnzsoloyo Ver Mensaje
Aún con todas estas cosas, son uno de los medios más eficientes para realizar tareas que no se resuelven con un SELECT * FROM...
Mas eficientes, mas mantenibles, te dan mayor escalabilidad del sistema y te permite separar mejor las tareas entre grupos de trabajo.

Así que yo recomiendo usarlos.
__________________
WebSenior