Conocimientos avanzados de SQL - procedimiento almacenado

Definición de procedimiento almacenado

Un procedimiento almacenado es en realidad una o más sentencias SQL que se han precompilado en un procedimiento ejecutable. La función del procedimiento almacenado se puede completar llamando y pasando parámetros.

CREAR PROC | PROCEDIMIENTO nombre_procedimiento
[{@parameter_datatype} [=valor_predeterminado] [SALIDA],
{@parameter_datatype} [=valor_predeterminado] [SALIDA],
....
]
AS
sql_statements
GO

Los procedimientos almacenados se pueden crear con o sin parámetros. Los que no tienen parámetros generalmente son funciones que se pueden completar ejecutando algunas declaraciones que no necesitan pasar parámetros. Con parámetros, son declaraciones SQL que necesitan pasar parámetros, como en el ejemplo anterior. Se pasan dos parámetros a la declaración SQL. Para aquellos con parámetros, se debe definir el tipo de parámetro, para los tipos de caracteres, se debe definir la longitud y agregar un valor predeterminado a los parámetros es opcional.

Ventajas de los procedimientos almacenados

mejorar el rendimiento

Las declaraciones SQL se analizan y compilan cuando se crea el procedimiento. Los procedimientos almacenados están precompilados. Cuando un procedimiento almacenado se ejecuta por primera vez, el optimizador de consultas lo analiza y optimiza, y proporciona un plan de almacenamiento que finalmente se almacena en la tabla del sistema, de modo que esta sobrecarga se pueda ahorrar cuando se ejecute el procedimiento. .

Reducir la sobrecarga de la red

Cuando se llama al procedimiento almacenado, solo es necesario proporcionar el nombre del procedimiento almacenado y la información de parámetros necesaria, lo que reduce el tráfico de la red.

Facilidad de portabilidad de código

Los profesionales de bases de datos pueden modificar el procedimiento almacenado en cualquier momento, pero no tiene ningún efecto en el código fuente del programa de aplicación, lo que mejora en gran medida la portabilidad del programa.

mayor seguridad

El administrador del sistema puede restringir la autoridad de un determinado procedimiento almacenado para evitar que usuarios no autorizados accedan a los datos. Cuando se llama al procedimiento a través de la red, solo es visible la llamada al procedimiento ejecutado. Por lo tanto, los usuarios malintencionados no pueden ver los nombres de objetos de tablas y bases de datos, incrustar sus propias declaraciones Transact-SQL ni buscar datos críticos.

El uso de parámetros de procedimiento ayuda a evitar ataques de inyección SQL. Debido a que la entrada de parámetros se trata como valores literales en lugar de código ejecutable, es más difícil para un atacante insertar comandos en declaraciones Transact-SQL dentro de los procedimientos y comprometer la seguridad.

Los procesos se pueden cifrar, lo que ayuda a ofuscar el código fuente.

Desventajas de los procedimientos almacenados

El procesamiento lógico es difícil.

SQL en sí es un lenguaje de consulta estructurado, pero no está orientado a objetos. Es esencialmente un lenguaje de procedimientos. Frente a una lógica empresarial compleja, el procesamiento de procedimientos será muy 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, violará este principio.

Modificar parámetros es complejo

Si necesita realizar cambios en los parámetros ingresados ​​en el procedimiento almacenado, o cambiar los datos que devuelve, aún necesitará actualizar el código en el ensamblado para agregar parámetros, actualizar llamadas, etc., lo cual puede ser engorroso a estas alturas.

El desarrollo y la depuración son complicados.

Debido a problemas de IDE, el desarrollo y la depuración de procedimientos almacenados es más difícil que los procedimientos generales.

No se puede aplicar el caché

Aunque existen métodos como las tablas temporales globales para el almacenamiento en caché, también aumentan la carga sobre la base de datos. Si la concurrencia de la caché es grave y a menudo se requieren bloqueos, la eficiencia es realmente preocupante.

clúster no compatible

El servidor de la base de datos no se puede escalar horizontalmente ni la base de datos se puede cortar (horizontal o verticalmente). Una vez cortada la base de datos, el procedimiento almacenado no sabe en qué base de datos están almacenados los datos.

Los procedimientos almacenados se utilizan ampliamente en sistemas con volúmenes de negocios pequeños: toda la lógica se entrega a la base de datos para su procesamiento y algunas funciones lógicas se pueden completar rápidamente. Sin embargo, para sistemas con un volumen de negocios relativamente grande, el uso de procedimientos almacenados generalmente está prohibido porque la presión sobre la base de datos es demasiado grande.

Supongo que te gusta

Origin blog.csdn.net/qq_58778333/article/details/130229286
Recomendado
Clasificación