Las ventajas y desventajas de usar procedimientos almacenados en la base de datos

No he hecho un proyecto de servidor en muchos años. Recientemente, varios proyectos están relacionados con el servidor, y han aparecido muchos problemas relacionados con el rendimiento. Uno de los proyectos involucra ese negocio. Sáquelo y compártelo con todos.

1. Antecedentes

El proceso comercial del producto generalmente es el siguiente: deslizar la tarjeta de identificación para verificar en exceso, el extremo del dispositivo genera una identificación de registro de verificación excesiva y la información de texto de la tarjeta de identificación y la información de la imagen de la tarjeta de identificación deben cargarse en el servidor S1 y el servidor de imágenes S2, respectivamente, donde la información de la imagen de la tarjeta de identificación en la base de datos del servidor Se guarda la URL de la foto de identificación en el servicio de imágenes S2.
Si la información de texto obligatoria se carga correctamente en el servidor S1, y luego se carga la imagen de la tarjeta de identificación, inevitablemente afectará el tiempo de carga de la imagen. Si no se impone este límite obligatorio, la URL de la imagen de carga y el tiempo de almacenamiento de información de texto no se pueden determinar en sucesión. No se puede determinar si los datos de URL y la información de texto se ejecutan en la base de datos del servidor mediante inserción o actualización. En este momento, es necesario lidiar con el error de inserción y luego reiniciar Para las operaciones de actualización, puede considerar el uso de procedimientos almacenados en este momento.
Sobre el tema del uso de procedimientos almacenados, hable con el departamento de I + D del lado del servidor para decidir si usar procedimientos almacenados, por lo que debemos comprender las ventajas y desventajas de los procedimientos almacenados.

2. Ventajas

1. Velocidad de ejecución: para SQL muy simple, el procedimiento almacenado no tiene ninguna ventaja. Para lógica empresarial compleja, porque la base de datos se ha analizado y optimizado una vez cuando se crea el procedimiento almacenado. Una vez que se ejecuta el procedimiento almacenado, se guardará una copia del procedimiento almacenado en la memoria, de modo que la próxima vez que se ejecute el mismo procedimiento almacenado, se pueda invocar directamente desde la memoria, por lo que la velocidad de ejecución será más rápida que el SQL ordinario.    
2. Reduzca la transmisión de la red: el proceso de almacenamiento se ejecuta directamente en el servidor de la base de datos, todo el acceso a los datos se realiza dentro del servidor de la base de datos, no hay necesidad de transferir datos a otros servidores, por lo que reducirá cierta transmisión de la red.
3. Mantenibilidad: los procedimientos almacenados a veces son más fáciles de mantener que los programas, porque los procedimientos almacenados en el lado de la base de datos se pueden actualizar en tiempo real. Algunos errores modifican directamente la lógica empresarial en el procedimiento almacenado sin modificar el código del terminal. 
4. Seguridad mejorada: mejore la seguridad del código y evite la inyección de SQL. Esta declaración SQL también se puede hacer.
5. Escalabilidad: las operaciones de la aplicación y la base de datos se separan y se realizan de forma independiente en lugar de estar juntas. Facilite la futura expansión y optimización del mantenimiento de DBA.

3. Desventajas

1. El SQL en sí mismo es un lenguaje de consulta estructurado, pero no está orientado a objetos. Es esencialmente un lenguaje de procedimiento. Frente a la lógica empresarial compleja, el procesamiento de procedimientos será difícil. Al mismo tiempo, SQL es bueno para la consulta de datos en lugar del procesamiento de lógica de negocios. Si coloca toda la lógica de negocios en procedimientos almacenados, viola este principio.
2. Si necesita cambiar los parámetros del procedimiento almacenado de entrada, o si desea cambiar los datos devueltos por él, aún necesita actualizar el código en el ensamblado para agregar parámetros, actualizar llamadas, etc., lo que probablemente sea más engorroso en este momento.
3. El desarrollo y la depuración son complicados: debido a problemas de IDE, el desarrollo y la depuración de los procedimientos almacenados es más difícil que los procedimientos generales, pero esto no es un problema para I + D con habilidades en bases de datos. 4. No hay forma de aplicar el caché. Aunque existen métodos como tablas temporales globales que se pueden usar para el almacenamiento en caché, también aumentan la carga en la base de datos. Si la concurrencia de caché es severa y a menudo se requieren bloqueos, la eficiencia es realmente preocupante.
5. No admite la agrupación en clúster, el servidor de la base de datos no puede expandirse horizontalmente o la base de datos se corta (corte horizontal o vertical). Después de cortar la base de datos, el proceso de almacenamiento no está claro en qué base de datos se almacenan los datos.


IV. Resumen

1. El uso apropiado de los procedimientos almacenados puede mejorar el rendimiento del servidor.
2. Los procedimientos almacenados no deben usarse a gran escala, y los DBA deben estar equilibrados al diseñar y mantener bases de datos.
3. Con la aparición de muchos ORM, muchas ventajas de los procedimientos almacenados no son obvias.
4. Combinado con el negocio real del proyecto, no se recomienda utilizar procedimientos almacenados para operaciones simples de base de datos con lógica empresarial. La complejidad requiere datos en tiempo real elevados. Puede considerar la optimización del diseño a partir de los desencadenantes de procedimientos almacenados.

Finalmente, volvamos a nuestro negocio de proyectos. Si se usa o no, debe combinarse con si el cliente tiene altos requisitos sobre la naturaleza en tiempo real de la información de la imagen de la tarjeta de identificación. Finalmente, confirme con el gerente de producto del proyecto que la información de la imagen de la tarjeta de identificación se puede retrasar la carga sin conexión, luego el proceso de almacenamiento se puede eliminar por completo.

发布了142 篇原创文章 · 获赞 258 · 访问量 16万+

Supongo que te gusta

Origin blog.csdn.net/conconbenben/article/details/103655760
Recomendado
Clasificación