En el gráfico Tendencia de rendimiento, puede hacer clic en el identificador SQL seleccionado para aumentar el detalle de rendimiento explícito para el SQL seleccionado. Además de la información general sobre SQL, también podrá ver gráficos detallados para las siguientes áreas:
Que se puede hacer para mejorar el rendimiento de las consultas en Oracle 11
La siguiente es una lista de algunos consejos que Ranjan Gupta, autor original, pueden ser utilizados como guía para escribir y revisar consultas SQL personalizadas. Esto no es de ninguna manera una lista exhaustiva para obtener los mejores resultados, pero puede servir como referencia para evitar las trampas comunes al trabajar con Oracle SQL:
17. Siempre es mejor escribir instrucciones SQL separadas para diferentes tareas, pero si debe usar una declaración SQL, entonces puede hacer una declaración muy compleja un poco menos compleja usando el operador UNION ALL
30. Las consultas tienden a empeorar a medida que envejecen debido al aumento de volumen, cambios estructurales en la base de datos y la aplicación, actualizaciones, etc. Utilice Automatic Workload Repository (AWR) y Automatic Database Diagnostic Monitor (ADDM) para comprender mejor el cambio en el plan de ejecución y el rendimiento de consultas principales durante un período de tiempo.
Descargos de responsabilidades: Esta lista de verificación se puede usar como referencia al solucionar problemas de rendimiento en la Base de datos Oracle. Si tiene algun comentario o referencial de alguna de ellas por favor me la deja saber en los comentarios y podemos hacer una consulta mas profunda al respecto.
La solución y la reparación de consultas erróneas, así como la resolución de problemas de rendimiento pueden implicar horas (o días) de investigación y pruebas de errores. A veces podemos reducir rápidamente ese tiempo identificando patrones de diseño comunes que son indicativos de un TSQL de bajo rendimiento.
El desarrollo del reconocimiento de estos patrones para estas zonas de ojos súper críticos, de detectar errores puede permitirnos enfocarnos inmediatamente en lo que es más probable que sea el problema. Mientras que contrariamente el ajuste del rendimiento a menudo puede estar compuesto por horas de recopilación de eventos extendidos, seguimientos, planes de ejecución y estadísticas, y la posibilidad de ser capaz de identificar posibles escollos rápidamente puede provocar un cortocircuito en todo ese trabajo.
Es muy importante mencionar que la indexación de texto completo es una característica en SQL Server que puede generar índices que permitirán la búsqueda de cadenas flexibles en columnas de texto. Es necesario recordar que esto incluye búsquedas con comodines, pero también búsquedas lingüísticas de contexto que utilizan las reglas de un idioma determinado para tomar decisiones inteligentes sobre si una palabra o frase son lo suficientemente similares y adecuadas al contenido de una columna como para considerarse una adecuada coincidencia. Si bien es flexible, es importante mencionar que el texto completo es una característica adicional que debe instalarse, configurarse y mantenerse. Para algunas aplicaciones que están muy centradas en cadenas, esta de manera muy crítica puede ser la solución perfecta! Se proporciona un enlace al final de este artículo con más detalles sobre esta característica, lo que puede hacer con ella, cómo instalarlo y configurarlo.
Es importante mencionar que Después de una discusión de por qué la iteración puede causar un rendimiento deficiente, es ahora que vamos a explorar un escenario en el que contrariamente se tiene la situación en el que la iteración MEJORA el rendimiento. Un componente de optimización aún no discutido aquí es la contención. Debemos recordar de que cuando realizamos cualquier operación contra los datos, se puede observar que se tienen bloqueos contra cierta cantidad de datos para garantizar que los resultados sean consistentes y no interfieran con otras consultas que otros además de nosotros están ejecutando en contraposición de los mismos datos.
Esta advertencia es útil porque nos permite saber que a diferencia de otras circunstancias que existe una solución potencialmente más fácil para mejorar el rendimiento de las consultas. Por otra parte también tiene un lado obscuro ya que también es engañoso porque un índice adicional puede no ser la mejor manera de resolver un problema de atraso y de latencia. El texto verde nos proporciona todos los detalles de un nuevo índice, pero tenemos que hacer un poco de trabajo antes de considerar tomar el consejo de SQL Server:
Una tabla subindexada no sirve para efectuar las consultas de lectura de manera efectiva. Por tanto, de manera ideal, las consultas más comunes ejecutadas en una tabla deberían beneficiarse de los índices. Las consultas menos frecuentes se evalúan caso por caso y se indexan cuando son beneficiosas. Recordemos que cuando se soluciona un problema de rendimiento en tablas que tienen pocos o ningún índice no agrupado, entonces es probable que el problema sea de baja indexación. Es importante mencionar que, en estos casos, puede sentirse facultado para agregar índices para mejorar el rendimiento según sea necesario!
Resulta en esta circunstancia que el optimizador de consultas en SQL Server se enfrenta al mismo desafío que cualquier optimizador de consultas relacionales: por cuanto se requiere encontrar un buen plan de ejecución frente a muchas opciones en un lapso de tiempo muy corto. Esto da como resultado en un juego de ajedrez y que requiere evaluar de manera muy anticipada cada uno de los movimientos tras movimientos. Con cada evaluación, se descarta una gran cantidad de planes similares al plan subóptimo, o deja uno a un lado como un plan candidato. Más tablas en una consulta equivaldrían a un tablero de ajedrez más grande. Con significativamente más cantidad y variables de opciones disponibles, SQL Server tiene más trabajo por hacer, pero no puede tomar mucho más tiempo para determinar el plan a utilizar.
De manera impresionante se puede observar que Esto es solo para 12 tablas! Imagine una consulta en 20, 30 o 50 tablas! Pese a que el optimizador a menudo puede reducir esos números muy rápidamente eliminando franjas enteras de opciones subóptimas, se tiene que enfatizar que sin embargo las probabilidades de que pueda hacerlo y generar un buen plan disminuyen a medida que aumenta el recuento de tablas.
Es muy relevante el considerar que, en la mayoría de los casos, cuando unimos un gran número de tablas, podemos dividir la consulta en unidades lógicas más pequeñas que se pueden ejecutar por separado. Recordamos que, para la consulta del ejemplo anterior en las 12 tablas, podríamos eliminar fácilmente algunas tablas no utilizadas y dividir la recuperación de datos en dos consultas separadas:
El recuento de tablas representa un costo verdaderamente considerable para los planes de ejecución deficientes, por cuanto la situación hace que se obliga al optimizador de consultas a examinar un conjunto de resultados más grande y efectuar de forma importante el descartar resultados potencialmente más válidos en la búsqueda de un gran plan en menos de un segundo. Por el contrario, si usted está evaluando una consulta de bajo rendimiento que tiene un recuento de tabla muy grande, intente dividirla en consultas más pequeñas. Es posible que esta táctica no siempre proporcione una mejora significativa, pero a menudo resulta en una acción mucho más eficaz cuando se han explorado otras vías y hay muchas tablas que se están leyendo mucho en una sola consulta.
Debemos recordar que las sugerencias de consulta a menudo se usan cuando tenemos un problema de rendimiento y afortunadamente al agregar una sugerencia de manera rápida y mágica se soluciona. Hay bastantes sugerencias disponibles en SQL Server que afectan los niveles de aislamiento, los tipos de unión, el bloqueo de tablas y más. Recuerde que según la regla de las compensaciones del trade-off, si bien las sugerencias pueden tener usos legítimos, presentan un peligro para el rendimiento por muchas razones:
En este artículo se analizó y se discutió una variedad de errores de consulta comunes que pueden derivar y conducir a un bajo rendimiento. Dado que son relativamente fáciles de identificar sin una investigación exhaustiva, nosotros podríamos utilizar este conocimiento para mejorar nuestro tiempo de respuesta ante emergencias de latencia o rendimiento. Como se podrá observar esta situación que se muestra es solo la punta del iceberg, pero proporciona un excelente punto de partida para encontrar los puntos débiles en un script.
Para que un extremo de origen de Oracle se conecte a la base de datos para una tarea de cambio de captura de datos (CDC), es posible que deba especificar atributos de conexión adicionales. Esto puede ser cierto para una tarea de carga completa y de los CDC o para una tarea exclusiva de los CDC. Los atributos de conexión adicionales que especifique dependen del método que utilice para acceder a los registros de rehacer: Oracle LogMiner oAWS DMS Binary Reader.
Cuando la fuente de Oracle utilice ASM, puede trabajar con opciones de alto rendimiento en Binary Reader para procesar transacciones a escala. Estas opciones incluyen atributos de conexión adicionales para especificar el número de subprocesos paralelos (parallelASMReadThreads) y el número de búferes de lectura anticipada (readAheadBlocks). La combinación de estos atributos puede mejorar significativamente el desempeño de la tarea de los CDC. Los siguientes ajustes proporcionan buenos resultados para la mayoría de las configuraciones de ASM.
También debe elegir un punto de partida adecuado para los CDC. Por lo general, al hacer esto, querrá identificar el punto de procesamiento de la transacción que captura la primera transacción abierta desde la que iniciar la CDC. De lo contrario, la tarea de los CDC puede omitir transacciones abiertas anteriores. Para una base de datos de origen de Oracle, puede elegir un punto de inicio nativo de los CDC basándose en el número de cambio del sistema (SCN) de Oracle para identificar esta transacción abierta más temprana. Para obtener más información, consulte Realizar la replicación comenzando desde un punto de inicio de CDC. 2ff7e9595c
Comments