Colección de citas famosas - Slogan de motivación - Se produjo un error mientras ideacms ejecutaba la instrucción SQL.

Se produjo un error mientras ideacms ejecutaba la instrucción SQL.

SQL (lenguaje de consulta estructurado) es un lenguaje estándar para definir y manipular datos en bases de datos relacionales y es la interfaz entre los usuarios y las bases de datos. Este artículo toma el lenguaje SQL como ejemplo para explicar brevemente cómo la base de datos Oracle ejecuta declaraciones SQL.

1. Fase básica

Cuando el usuario ejecuta una declaración SQL (aquí está el lenguaje de manipulación de datos de valor principal DML), la declaración se envía primero al servidor Oracle a través de la conexión y luego el proceso del servidor procesa la declaración. Las etapas básicas del proceso del servidor que procesa declaraciones SQL son: analizar, ejecutar y devolver resultados.

1. Análisis (en sí mismo)

El análisis se refiere a verificar la sintaxis y la semántica de la declaración SQL, generar el plan de ejecución de la declaración SQL y almacenar la declaración SQL y el plan de ejecución. en el área SGA * * * En el área compartida de SQL.

Durante el proceso de análisis, el proceso del servidor realizará las siguientes operaciones:

Buscar en el * * * área SQL del área SGA para verificar si existen las mismas declaraciones SQL y sus planes de ejecución. Si es así, ejecute la instrucción SQL directamente. Esto puede mejorar el rendimiento de Oracle.

Si no hay una declaración SQL, verifique la sintaxis de SQL. Si la sintaxis es incorrecta, se devolverá un mensaje de error de sintaxis al cliente.

Si la sintaxis es correcta, la semántica de la declaración SQL se verifica consultando el diccionario de datos para determinar si los nombres de la tabla y la columna son correctos. Si los nombres de la tabla y la columna son incorrectos, se devolverá un mensaje de error semántico al cliente.

Si la semántica es correcta, los objetos correspondientes se bloquearán para evitar que otros usuarios cambien la estructura de estos objetos (o los eliminen) durante el análisis.

Comprueba si el usuario tiene permiso para acceder al objeto correspondiente. Si los permisos correspondientes no están disponibles, se devuelve al cliente un mensaje de error de permisos insuficientes.

Si tiene los permisos adecuados, el optimizador de la declaración SQL determinará el mejor plan de ejecución para la declaración SQL.

Asigne espacio para declaraciones SQL en el área * * * SQL del área SGA y cargue las declaraciones SQL y sus planes de ejecución en él para su ejecución.

2. Ejecución

Ejecución significa que el proceso del servidor ejecuta la declaración SQL de acuerdo con su plan de ejecución. Durante este período, el proceso del servidor realiza las siguientes operaciones:

Determinar si el bloque de datos del objeto manipulado se ha leído en el área de caché de datos del área SGA. Si el bloque de datos está en el caché de datos, opere directamente en el caché.

Si el bloque de datos no está en el caché de datos, lea el bloque de datos del dispositivo de almacenamiento físico correspondiente al archivo de datos, busque el bloque de datos libre en el caché de datos y coloque los datos leídos p>

Para declaraciones de actualización y eliminación, bloquee las filas que deben modificarse o eliminarse para que otros procesos no modifiquen las mismas filas hasta que finalice la transacción. Para las declaraciones de selección e inserción, no es necesario bloquear filas porque los datos no se modificarán.

3. Devolver resultados

Para la declaración de selección, durante la fase de ejecución, los resultados de la consulta (o las filas marcadas) deben devolverse al proceso del usuario. Los resultados de la consulta de unión deben ordenarse, pero también se ordenan utilizando el área de clasificación del grupo compartido o incluso el segmento temporal del espacio de tabla temporal. Los resultados de la consulta siempre se muestran en formato de lista. Dependiendo del tamaño de los resultados de la consulta, puede devolverlos todos a la vez o revisarlos varias veces. Para otras declaraciones DML, el estado de ejecución exitosa o fallida se devuelve cuidadosamente al proceso del usuario.