Cómo optimizar el rendimiento de las declaraciones SQL
La optimización de sentencias SQL consiste en convertir sentencias SQL de bajo rendimiento en sentencias SQL con el mismo propósito y excelente rendimiento.
La optimización automática de SQL con inteligencia artificial utiliza tecnología de inteligencia artificial para reescribir automáticamente declaraciones SQL y encontrar la declaración SQL equivalente con el mejor rendimiento.
Optimización del rendimiento de la base de datos
El ciclo de vida de un sistema de base de datos se puede dividir en tres etapas: diseño, desarrollo y producto terminado. La optimización del rendimiento de la base de datos durante la fase de diseño tiene el menor costo y el mayor beneficio. La optimización del rendimiento de la base de datos en la etapa del producto terminado tiene el costo más alto y el beneficio más bajo.
La optimización de la base de datos generalmente se puede realizar optimizando la red, el hardware, el sistema operativo, los parámetros de la base de datos y las aplicaciones. El método de optimización más común es la actualización de hardware. Según las estadísticas, las mejoras de rendimiento obtenidas al optimizar la red, el hardware, el sistema operativo y los parámetros de la base de datos suman sólo alrededor del 40% de la mejora del rendimiento del sistema de la base de datos. El 60% restante de la mejora del rendimiento del sistema proviene de la optimización de las aplicaciones. Muchos expertos en optimización creen que optimizar las aplicaciones puede mejorar el rendimiento del sistema en un 80%.
Optimización de aplicaciones
La optimización de aplicaciones generalmente se puede dividir en dos aspectos: código fuente y declaraciones SQL. Dado que implica cambios en la lógica del programa, la optimización del código fuente es muy costosa en términos de tiempo y riesgo, y tiene un efecto limitado en la mejora del rendimiento del sistema de bases de datos.
¿Por qué deberíamos optimizar las declaraciones SQL?
Las declaraciones SQL son la única forma de operar la base de datos y desempeñan un papel decisivo en el rendimiento del sistema de base de datos.
Las sentencias SQL consumen entre 70 y 90 recursos de la base de datos.
Las declaraciones SQL son independientes de la lógica de programación y la optimización de las declaraciones SQL no afectará la lógica del programa.
Las declaraciones SQL se escriben de diferentes maneras y las diferencias de rendimiento son muy grandes.
Las sentencias SQL son fáciles de aprender, pero difíciles de dominar.
El método tradicional para optimizar las declaraciones SQL es optimizar las declaraciones SQL mediante la reescritura manual. Los DBA o programadores senior intentan reescribir la declaración SQL analizando el plan de ejecución de la declaración SQL y confiando en la experiencia, y luego comparan los resultados y el rendimiento para tratar de encontrar una declaración SQL con mejor rendimiento. Este enfoque tradicional no puede encontrar todas las formas posibles de escribir declaraciones SQL y depende de la experiencia humana, lo que requiere mucho tiempo.
La historia del desarrollo de la tecnología de optimización SQL
La primera generación de herramientas de optimización SQL son las herramientas de análisis del plan de ejecución. Este tipo de herramienta extrae el plan de ejecución de la base de datos para la declaración SQL de entrada e interpreta el significado de las palabras clave en el plan de ejecución.
La herramienta de optimización SQL de segunda generación solo puede proporcionar sugerencias para agregar índices. Genera sugerencias sobre si aumentar los índices analizando el plan de ejecución de la declaración SQL de entrada.
La herramienta de optimización SQL de tercera generación no solo analiza el plan de ejecución de la declaración SQL de entrada, sino que también realiza un análisis de sintaxis en la declaración SQL de entrada y genera sugerencias de mejora de escritura después del análisis.
Optimización automática de SQL de inteligencia artificial
Figura 1 Diagrama de optimización automática de SQL de inteligencia artificial
La optimización automática de SQL de inteligencia artificial apareció a finales de la década de 1990. Actualmente en el campo de las bases de datos comerciales, LECCO Technology Limited posee esta tecnología y proporciona un producto de optimización automática que utiliza esta tecnología, LECCO SQL Expert, que admite plataformas de bases de datos Oracle, Sybase, MS SQL Server e IBM DB2. Los módulos proporcionados por este producto para las etapas de desarrollo y mantenimiento de aplicaciones de bases de datos incluyen: optimizador de sintaxis SQL, entorno de depuración y desarrollo integrado (IDE) PL/SQL, escáner, monitor de base de datos, etc.
El principio de funcionamiento del optimizador de sintaxis SQL de su módulo principal es: ① Ingrese una declaración SQL de origen ② El "motor de búsqueda de retroalimentación de inteligencia artificial" reescribe la declaración SQL de entrada de acuerdo con la estructura y el índice de la base de datos detectados para generar N, etc. salida; ③ Las N declaraciones SQL equivalentes generadas se envían al "motor de búsqueda de comentarios de inteligencia artificial" para reescribirlas hasta que no se puedan generar nuevas salidas o se alcance el límite de búsqueda ④ Filtre las declaraciones SQL de salida y seleccione Generar declaraciones SQL con diferentes; planes de ejecución; ⑤ Realizar pruebas por lotes en las declaraciones SQL obtenidas para encontrar la declaración SQL con el mejor rendimiento.
Ejemplo de optimización automática de LECCO SQL Expert
Supongamos que extraemos esta declaración SQL del código fuente (la declaración SQL también se puede obtener a través del escáner o monitor integrado):
p>SELECCIONE RECUENTO (*)
DEL EMPLEADO
swheresEXISTS (SELECCIONE 'X'
DEL DEPARTAMENTO
swheresEMP_DEPT = DPT_ID
Y DPT_NAME COMO 'AC')
Y EMP_ID EN (SELECCIONE SAL_EMP_ID
DE EMP_SAL_HIST B
swheresSAL_SALARY > 70000)
Después de presionar el botón "Optimizar", SQL Expert completó el proceso de optimización en 10 segundos y reescribió y generó 2267 declaraciones SQL equivalentes en estos 10 segundos. Entre ellas, 136 declaraciones SQL tienen diferentes planes de ejecución.
A continuación, podemos realizar una prueba de ejecución por lotes en las 136 sentencias SQL generadas por la reescritura automática para seleccionar la sentencia SQL equivalente con el mejor rendimiento. Presione el botón "Ejecución por lotes", seleccione "Declaración SQL de mejor tiempo de ejecución" en la página "Condición de terminación" y presione "Aceptar".
Después de ejecutar la prueba durante unos minutos, podemos encontrar que SQL124 tiene el tiempo de ejecución y el tiempo de respuesta más cortos. La velocidad de ejecución mejora aproximadamente 22,75 veces (el tiempo de ejecución de la declaración SQL de origen es 2,73 segundos y el tiempo de ejecución de SQL124 es 0,12 segundos). Ahora podemos poner SQL124 en el código fuente y finalizar el trabajo de optimización de una declaración SQL.
La "capacitación para aprender haciendo" mejora el nivel de desarrollo de SQL
LECCO SQL Expert no solo puede encontrar las mejores declaraciones SQL, sino que también proporciona "capacitación para aprender haciendo". También puede enseñar a desarrolladores y administradores de bases de datos cómo escribir las declaraciones SQL de mejor rendimiento. El "Comparador de SQL" de LECCO SQL Expert puede indicar las diferencias entre el SQL de origen y el SQL candidato.
Tomando los resultados de optimización anteriores como ejemplo, para ver la diferencia en la escritura entre la declaración SQL de origen y SQL124, podemos presionar el botón "Comparador" para comparar SQL124 y la declaración SQL de origen. El "Comparador SQL" muestra las diferencias entre SQL124 y la declaración SQL de origen en azul. Si selecciona la casilla de verificación "Comparación bidireccional", el "Comparador SQL" puede mostrar las diferencias entre dos declaraciones SQL en azul. Por supuesto, también podemos seleccionar dos de la declaración fuente y la declaración SQL reescrita para comparar.
De los resultados de la comparación, podemos ver que el SQL124 reescrito reescribe el primer Existe en In; fusiona cadenas vacías en el campo DPT_ID para inducir a la base de datos a ejecutar la subconsulta primero en
<. p> (SELECT DPT_ID||''FROM DEPARTMENT
WHERE DPT_NAME LIKE 'AC')
al completar la subconsulta Finalmente, realice una unión de bucle anidado ( Unión de bucle anidado) con la tabla EMPLOYEE.
Si le resulta difícil comprender el cambio por escrito, también puede hacer clic en la casilla de verificación "Plan de ejecución" para comprender las diferencias comparando los planes de ejecución de las dos declaraciones SQL. Durante el proceso de visualización del plan de ejecución, si hay algo que no comprende, puede hacer clic en el "Botón de información SQL" y luego hacer clic en la parte del plan de ejecución que no comprende en el sistema de ayuda contextual de LECCO SQL Expert. proporcionará una explicación de esa parte del plan de ejecución.
En el "Comparador SQL", después de seleccionar la casilla de verificación "Información estadística", puede obtener una comparación detallada de la información estadística de las dos sentencias SQL cuando se están ejecutando, lo cual es útil para aprender diferentes Los métodos de escritura SQL y el consumo de recursos de bases de datos son útiles.
Características del módulo de optimización LECCO SQL Expert
Las características principales del módulo de optimización LECCO SQL Expert son: optimización automática de declaraciones SQL exclusivas "motor de búsqueda de comentarios" en la base de conocimientos de inteligencia artificial; declaraciones SQL con excelente rendimiento; encuentre todas las declaraciones SQL equivalentes y posibles planes de ejecución; garantice los mismos resultados; el analizador de sintaxis SQL avanzado puede manejar las declaraciones SQL más complejas y puede reescribir declaraciones SELECT, SELECT INTO, UPDATE, INSERT y DELETE; las declaraciones SQL de mejor rendimiento para aplicaciones y bases de datos a través de ejecuciones de prueba proporcionan tiempos de nivel de microsegundos, que pueden optimizar las aplicaciones web y el procesamiento de transacciones en línea con una gran cantidad de usuarios. Las declaraciones SQL cortas proporcionan a los desarrolladores "; capacitación "aprender haciendo" para mejorar rápidamente las habilidades de programación SQL de los desarrolladores; proporcionar sistemas de ayuda para el plan de ejecución sensible al contexto y ayuda sobre el estado de ejecución de SQL; no conjeturas ni sugerencias, sino una solución única de reescritura de SQL.
Escriba declaraciones SQL de nivel experto
La aparición de LECCO SQL Expert hace que la optimización de SQL sea extremadamente simple. Siempre que pueda escribir declaraciones SQL, puede ayudar a los usuarios a encontrar las mejores declaraciones SQL. Buena interpretación escrita. LECCO SQL Expert no sólo puede encontrar todas las soluciones de optimización posibles en poco tiempo, sino también determinar la solución de optimización más eficaz mediante pruebas reales. En comparación con los métodos de optimización de bases de datos anteriores, LECCO SQL Expert ha llevado la tecnología de optimización de bases de datos a un nuevo nivel técnico. Los métodos de optimización de bases de datos que se basan en la experiencia humana, consumen mucho tiempo y están sujetos al pensamiento humano, han sido eficientes y ahorran tiempo. y preciso. Con la ayuda del "Asistente LECCO" integrado, incluso un desarrollador SQL novato puede escribir rápida y fácilmente declaraciones SQL de nivel experto.