2009-07-20 71 views

Respuesta

15

Los procedimientos almacenados le darán un pequeño aumento de rendimiento, pero sobre todo son para realizar tareas que son difíciles o imposibles de hacer con una simple consulta. Los procedimientos almacenados son excelentes para simplificar el acceso a los datos para muchos tipos diferentes de clientes. Los administradores de bases de datos los adoran porque controlan cómo se usa la base de datos en lugar de dejar esos detalles al desarrollador.

Mire los índices y el diseño de la mesa adecuada para obtener un mejor rendimiento.

2

En MySQL o en cualquier otro servidor SQL como MSSQL u Oracle, los procedimientos almacenados aumentan drásticamente la velocidad de las consultas implicadas porque ya están compiladas. Los procedimientos almacenados son más seguros que las consultas directas y, como objetos en la base de datos, pueden ser administrados por el propietario, lo que brinda el acceso correcto a cada usuario.

Utilizando procedimientos almacenados, también puede ocultar la lógica de las consultas y procedimientos y proporcionar al equipo de desarrollo y otros programadores una "caja negra" en la que insertan parámetros y reciben resultados.

Procedimientos definitivamente almacenados rocas !!!!

Desde MySQL 5.1 Documentación: Los procedimientos almacenados pueden ser particularmente útiles en ciertas situaciones:

Cuando múltiples aplicaciones de cliente están escritos en diferentes idiomas o trabajar en diferentes plataformas, pero tienen que realizar las mismas operaciones de bases de datos.

Cuando la seguridad es primordial. Los bancos, por ejemplo, usan procedimientos y funciones almacenados para todas las operaciones comunes. Esto proporciona un entorno coherente y seguro, y las rutinas pueden garantizar que cada operación se registre correctamente. En dicha configuración, las aplicaciones y los usuarios no tendrían acceso directo a las tablas de la base de datos, pero solo pueden ejecutar rutinas almacenadas específicas.

Las rutinas almacenadas pueden proporcionar un mejor rendimiento porque se necesita enviar menos información entre el servidor y el cliente. La desventaja es que esto aumenta la carga en el servidor de la base de datos porque la mayor parte del trabajo se realiza en el lado del servidor y menos en el lado del cliente (aplicación). Considere esto si muchas máquinas cliente (como servidores web) son atendidas solo por uno o unos pocos servidores de bases de datos.

Las rutinas almacenadas también le permiten tener bibliotecas de funciones en el servidor de la base de datos. Esta es una característica compartida por los lenguajes de aplicación modernos que permiten dicho diseño internamente (por ejemplo, mediante el uso de clases). El uso de estas características del lenguaje de la aplicación cliente es beneficioso para el programador incluso fuera del alcance del uso de la base de datos.

+0

MySQL NO compila procedimientos almacenados antes de ejecutarlos en una sesión establecida a partir de la versión actual –

2

Ampliamente simplificado - El rendimiento del procedimiento almacenado es igual o marginalmente mejor que el código a costa de la carga del servidor db. Como la mayoría de los sistemas db se preocupan por el acceso multiusuario y usan hardware básico para el servidor db, es probable que el uso del código que descarga el servidor db sea el que gane en general. Con servidores DB de gama alta,> 4 núcleos,> 32 gb ram, la carga de SP a menudo no es un problema.

Procedimientos almacenados;

  1. transferencia de menos datos en la consulta - mejora mínima velocidad de código bien escrito
  2. análisis & almacenamiento en caché es "un poco mejor" - mejora de la velocidad mínima para el código bien escrito
  3. mover la carga de ejecución para el servidor db frente a cliente (s) (servidores web), potencialmente extendiendo la carga en muchos sistemas. - las mejoras de velocidad dependen en gran medida del código real y de la cantidad de datos, incluidos los datos "en exceso" transferidos. Una gran cantidad de código transfiere más datos de los que realmente se utilizan (bibliotecas db, consultas mal escritas, seleccione *, etc.)

No optimice anticipadamente.

Los procedimientos almacenados tienen muchos más beneficios que la velocidad, la seguridad ocupa un lugar destacado en la lista.

En un entorno único programador, los beneficios pueden ser compensados ​​por la curva de aprendizaje de programación SP, SP marco de pruebas, múltiples métodos de control de revisión - SP y el código, etc ..

aprendizaje y el uso de una prueba y perfiles de marco se Responda esto de manera definitiva y lo guiará para proporcionar un mejor "rendimiento" a su aplicación que simplemente elegir SP o consultas ad-hoc.

Responda a "¿vale la pena?" - Si no tiene un marco de pruebas/creación de perfiles en su lugar, solo estará adivinando. Cualquier respuesta basada en mi código y hardware probablemente sea irrelevante en el tuyo.

Mi experiencia en el mundo real en muchas aplicaciones web Perl/TCL/PHP/C usando procesos almacenados DB (Sybase, Oracle, MS SQL, MySQL, Postgres) NO mejora mucho el rendimiento en general. Pero todavía los uso a menudo, solo por otras razones que el rendimiento. Pueden mejorar en gran medida una consulta compleja específica, pero rara vez es la mayor parte del código y el tiempo de procesamiento general.

8

Yikes No me gustaría que alguien lea estas respuestas y obtenga una impresión equivocada. Existen algunas diferencias realmente importantes entre las implementaciones "Stored Whatever" en "MySQL" frente a "SQL server/Oracle".

Ver: http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/

Cada persona que hace esta pregunta supone algo sobre aplicación del procedimiento almacenado de MySQL; creen incorrectamente que los procedimientos almacenados se compilan y almacenan en un caché de procedimiento almacenado global, similar al caché de procedimientos almacenados en Microsoft SQL Server [1] o Oracle [2].

Esto está mal. Flat-out incorrecto.

Aquí está la verdad: cada conexión al servidor MySQL mantiene su propio caché de procedimientos almacenados.

Tómese un minuto para leer el resto del artículo y los comentarios. Es corto y tendrás una mejor comprensión de los problemas.

Cuestiones relacionadas