Guía y herramientas de ajuste del rendimiento de Oracle
¿Ha notado que su base de datos funciona más lento de lo habitual? Entonces es posible que necesites un toque de ajuste del rendimiento.La optimización del rendimientoen las bases de datos Oracle elimina los cuellos de botella que hacen que las aplicaciones no respondan y aumenta la carga que su base de datos puede manejar.
¿Qué es el ajuste del rendimiento de Oracle?
El ajuste del rendimiento es el proceso de administrar una base de datos para mejorar el rendimiento. El ajuste del rendimiento en las bases de datos de Oracle incluyeoptimización de declaraciones SQLy planes de ejecución de consultas para que las solicitudes puedan completarse de manera más eficiente.
La organización de una base de datos, las declaraciones SQL utilizadas para acceder a esos datos, determinan el nivel de recursos necesarios para responder a las consultas cuando una aplicación se comunica con la base de datos.
Problemas como declaraciones SQL mal optimizadas obligan a la base de datos a trabajar mucho más para recuperar información (lo que resulta en el uso de más recursos del sistema). Cuantos más recursos del sistema se utilicen, mayor será la posibilidad de que afecte la experiencia de los usuarios en las aplicaciones conectadas.
En una empresa, los usuarios informarán de una aplicación lenta a un administrador de base de datos, quien luego intentará identificar la causa raíz del problema. El administrador analiza el código del extracto y busca cuellos de botella en la base de datos. El proceso es extenso, ya que el administrador debe diagnosticar la causa raíz del problema antes de poder solucionarlo.
Monitoreo del desempeño en bases de datos Oracle: tiempo de respuesta y rendimiento
Al ajustar el rendimiento de una base de datos Oracle, hay dos métricas que son útiles para medir:
- Tiempo de respuesta– Cuánto tiempo tarda la base de datos en completar una solicitud.
- Rendimiento del sistema– El número de procesos completados en un período de tiempo.
Un tiempo de respuesta alto significa que una aplicación proporciona una experiencia de usuario lenta. Por otro lado, un bajo rendimiento del sistema significa que la base de datos solo tiene los recursos para gestionar una pequeña cantidad de tareas en un corto período de tiempo. Un administrador debe poder saber cómo intenta mejorar el rendimiento antes de realizar el ajuste.
La forma de optimizar una base de datos Oracle depende de sus objetivos y del tipo de aplicaciones que esté utilizando. Muchos objetivos, como tener un tiempo de respuesta rápido o un alto rendimiento, son contradictorios.
Ajustar tiempos de respuesta rápidos puede acelerar las consultas individuales realizadas por los usuarios pero sacrificar otras tareas en la carga de trabajo. Por el contrario, lograr un alto rendimiento tendría como objetivo optimizar el rendimiento de toda la carga de trabajo para admitir una mayor producción de transacciones por segundo (pero no necesariamente acelerar las consultas individuales).
El tipo de aplicación que estás utilizando marca la diferencia. Si está utilizando una aplicación de proceso de transacciones en línea (OLTP), entonces utilizaría el rendimiento para medir el rendimiento. Esto se debe al gran volumen de transacciones que la aplicación necesita gestionar.
Sin embargo, si estuviera utilizando un sistema de soporte de decisiones (DSS) con usuarios ejecutando consultas sobre todo, desde un puñado de registros hasta miles de registros, entonces mediría el rendimiento por el tiempo de respuesta (a menos que estuviera admitiendo muchos usuarios ejecutando consultas simultáneas).
Los dos tipos de ajuste: monitoreo proactivo y eliminación de cuellos de botella
Ahora que sabes qué es el ajuste del rendimiento, es importante observar los dos modelos principales de ajuste:
- Monitoreo proactivo
- Eliminación de cuellos de botella
Los administradores de bases de datos utilizan estos dos modelos para gestionar problemas de rendimiento y mantener las aplicaciones funcionando a un alto nivel.
Monitoreo proactivo
El monitoreo proactivo es el proceso de monitorear una base de datos para descubrir y abordar problemas de rendimiento de manera temprana en lugar de simplemente reaccionar cuando hay un problema. Con un monitoreo proactivo, los administradores revisarán periódicamente las bases de datos para identificar los signos de degradación del rendimiento.
La idea detrás del monitoreo proactivo es detectar problemas e ineficiencias antes de que se conviertan en problemas mayores en el futuro. Algunos problemas comunes que los administradores de bases de datos buscan incluyen:
- Eventos de espera de base de datos– Una gran cantidad de eventos puede afectar negativamente el rendimiento de la base de datos. Encontrar sesiones obstructivas y eliminarlas puede evitar la degradación del rendimiento.
- Promedio de carga– Monitorear el promedio de carga de un servidor le indicará si los recursos del servidor funcionan normalmente. Un promedio de carga alto puede resultar en un rendimiento lento de la base de datos.
- Sesiones de base de datos– Monitorear el número de sesiones activas puede impedir que alcances el máximo (lo que impedirá que puedas abrir nuevas sesiones).
Sin embargo, el seguimiento proactivo conlleva algunos riesgos. Cualquier cambio que realice un administrador puede resultar en una disminución del rendimiento de la base de datos. Los administradores pueden mitigar los riesgos siendo cautelosos antes de realizar nuevos cambios.
Eliminación de cuellos de botella
Los cuellos de botella son una de las causas más comunes de un rendimiento deficiente. Los cuellos de botella impiden que las solicitudes lleguen al destino y aumentan el tiempo de respuesta de las aplicaciones. Los cuellos de botella pueden deberse a una variedad de factores, desde declaraciones SQL mal codificadas hasta un alto uso de recursos.
La eliminación de cuellos de botella es más un proceso reactivo que un seguimiento proactivo. Un administrador identifica un cuello de botella y luego encuentra una manera de solucionarlo. Arreglar un cuello de botella es un proceso complejo y depende de cuál sea la causa raíz (y si es interna o externa). Recodificar declaraciones SQL es una solución para solucionar cuellos de botella internos, que deben abordarse primero.
Una vez que se han resuelto los cuellos de botella internos, el administrador puede comenzar a observar factores externos como el rendimiento de la CPU y el almacenamiento que podrían estar causando el problema. Un administrador puede elegir entre realizar cambios en la aplicación (o cómo se usa), Oracle o la configuración de hardware del host.
Cómo ajustar el rendimiento
El ajuste del rendimiento de una base de datos Oracle es un tema muy complejo porque hay muchos factores diferentes que pueden afectar el rendimiento de la base de datos. Para simplificar las cosas, veremos algunas formas básicas de optimizar el rendimiento.
1. Identificar consultas de alto costo
El primer paso para ajustar el código SQL es identificar consultas de alto costo que consumen recursos excesivos. En lugar de optimizar cada línea de código, es más eficiente centrarse en las sentencias SQL más utilizadas y tener la mayor huella de base de datos/E/S.
Una forma sencilla de identificar consultas de alto costo es utilizar Herramientas de monitoreo de bases de datos Oracle (A continuación analizamos algunas de estas plataformas con más detalle). Una herramienta útil es Análisis de Oracle SQL , que puede identificar sentencias SQL que consumen muchos recursos. Ajustar estas declaraciones le brindará el mayor retorno de su inversión de tiempo.
2. Minimizar la carga de trabajo (¡Utilice índices!)
Puede realizar la misma consulta de muchas maneras diferentes, por lo que resulta ventajoso escribir código que minimice la carga de trabajo tanto como sea posible. Si solo necesita una instantánea de los datos de una tabla, no tiene sentido procesar miles de filas que no necesita (¡lo único que está haciendo es desperdiciar recursos del sistema!). Un escaneo completo de la tabla consume más recursos de la base de datos y E/S.
Para eliminar el estrés de soportar una gran carga de trabajo, puede utilizar índices para acceder a pequeños conjuntos de filas en lugar de procesar toda la base de datos a la vez. Utilice índices en aquellos escenarios en los que se consulta una columna con regularidad.
3. Utilice conexiones con estado con aplicaciones
A veces, la causa del bajo rendimiento no proviene del código, sino de que la conexión sigue cayendo entre la aplicación y la base de datos. Si su aplicación no está configurada correctamente, entonces podría conectarse a la base de datos para acceder a una tabla y luego cancelar la conexión una vez que tenga la información que necesita.
Interrumpir la conexión después de acceder a la tabla es terrible para el rendimiento. En su lugar, intente mantener una conexión con estado para que la aplicación permanezca conectada a la base de datos en todo momento. Mantener la conexión evitará que se desperdicien recursos del sistema cada vez que la aplicación interactúa con la base de datos.
4. Recopile y almacene estadísticas del optimizador
Las estadísticas del optimizador son datos que describen una base de datos y sus objetos. La base de datos utiliza estas estadísticas para elegir el mejor plan de ejecución para las declaraciones SQL. Recopilar y almacenar periódicamente estadísticas del optimizador sobre los objetos de la base de datos es esencial para mantener la eficiencia.
La recopilación de estadísticas del optimizador garantiza que la base de datos tenga información precisa sobre el contenido de la tabla. Si los datos son inexactos, la base de datos puede elegir un plan de ejecución deficiente, lo que afectará la experiencia del usuario final. Las bases de datos de Oracle pueden recopilar automáticamente estadísticas del optimizador o usted puede hacerlo manualmente con el paquete DBMS_STATS.
Herramientas para monitorear el rendimiento de consultas de Oracle DB
Usar un agente de software para monitorear el rendimiento de las consultas SQL es la forma más efectiva de administrar el rendimiento de las consultas. Las herramientas de monitoreo del rendimiento de la base de datos pueden ayudar a identificar código SQL de bajo rendimiento y permitirle identificar la causa raíz de los problemas de rendimiento. El usuario puede ver el rendimiento de las consultas en un panel para no tener que buscar información manualmente.
Analizador de rendimiento de bases de datos SolarWinds (PRUEBA GRATUITA)
Analizador de rendimiento de bases de datos SolarWindses una herramienta que puede monitorear el rendimiento de consultas SQL en tiempo real. Puede ver una tabla de las principales sentencias SQL en su base de datos para ver las sentencias SQL de mayor impacto. Ver las declaraciones principales le permite centrar sus esfuerzos de corrección en aquellas declaraciones que tienen el mayor impacto en el rendimiento.
Ventajas:
- Sistema de gestión de bases de datos altamente intuitivo diseñado para implementaciones de bases de datos de tamaño mediano a grande.
- Monitorea en tiempo real y ofrece una serie de opciones de alerta y notificación que pueden integrarse en soluciones populares de asistencia técnica.
- La supervisión de umbrales ayuda a mantener a los equipos proactivos y a solucionar problemas antes de que afecten el rendimiento.
- Los paneles son altamente personalizables y se pueden adaptar a individuos o equipos.
- El análisis de consultas integrado ayuda a los administradores de bases de datos a crear consultas más eficientes
- Aprovecha el aprendizaje automático para identificar cuellos de botella en el rendimiento
Contras:
- Preferiría un período de prueba más largo
También hay una función de análisis de bloqueo, que le permite ver la jerarquía de bloqueo de la base de datos y ver la espera total causada. Ser capaz de ver aquellas consultas que oscurecen las rutas de otras consultas le indica dónde realizar cambios para mejorar el rendimiento. Puededescargar una prueba gratuita.
Analizador de rendimiento de bases de datos de SolarWinds Inicie una prueba GRATUITA de 14 días
dbForge Studio para Oracle (Oracle SQL Profiler)
Estudio dbForge para Oracle es un entorno de desarrollo integrado (IDE) que viene con Oracle SQL Profiler. Con el generador de perfiles, puede identificar las consultas con la mayor duración. También puede ver los planes de ejecución de consultas y las estadísticas de sesiones para obtener información adicional. Todos los cambios que realice se guardarán para que pueda volver a versiones anteriores si comete un error.
En la pestaña Estadísticas de sesión, puede comparar los resultados de nuevas consultas con versiones anteriores. Las diferencias están resaltadas en rojo y verde para que pueda identificar fácilmente el impacto en el rendimiento. Las estadísticas de sesión que puede monitorear incluyen la CPU utilizada por esta sesión y los tipos (filas). ¡La pestaña Estadísticas de sesión le permite asegurarse de que sus cambios realmente mejoren el rendimiento!
Ventajas:
- Ofrece características y funcionalidades adicionales más allá de Management Studio sin herramientas ni opciones innecesarias.
- Excelente descripción general del estado de múltiples bases de datos del servidor SQL
- Puede reescribir consultas y datos de perfil directamente desde la herramienta
Contras:
- Sólo se ejecuta en Windows
- Requiere Microsoft SQL Server Management Studio
¡Sintonice con un objetivo en mente!
Tener expectativas claras con un objetivo específico en mente es fundamental para mantener su base de datos y ajustar el sistema. El ajuste del rendimiento es más fácil cuando sabes lo que estás intentando lograr.
Por ejemplo, si desea minimizar el tiempo de respuesta de una aplicación para que complete las consultas en 1 a 3 segundos, puede tomar medidas para ajustarse a ese escenario. Eso significa diagnosticar cuellos de botella y problemas de rendimiento que ralentizan el tiempo de respuesta.
Poder consultar los objetivos también será útil cuando utilice un analizador de bases de datos. Podrá monitorear el uso del disco, la CPU y la red para identificar cómo se ve afectado el rendimiento. Cuanto mejor comprenda sus objetivos, mejor sabrá cómo optimizar sus recursos.
Preguntas frecuentes sobre el ajuste del rendimiento de Oracle
¿Cómo puedo mejorar el rendimiento de mis consultas de Oracle?
La indexación mejora la velocidad de recuperación de datos. Sin embargo, no indexe demasiado porque estos índices podrían entrar en conflicto y, de hecho, ralentizar la devolución de los resultados. La partición de tablas mejora la velocidad de acceso a los datos porque reduce la cantidad de registros que deben escanearse para devolver los resultados de una consulta. La partición toma todos los índices actualmente en la tabla y los duplica automáticamente para que se apliquen automáticamente a cada partición.
¿Qué es el ajuste del rendimiento de SQL?
El ajuste del rendimiento de SQL es el proceso de ordenar uniones en una consulta SQL para que extraigan registros a la máxima velocidad. Hay varios métodos que se pueden utilizar para mejorar las consultas SQL, como eliminar uniones externas y ordenar líneas en la cláusula WHERE para que se filtren tantos registros como sea posible de la primera tabla a la que accede la consulta, reduciendo así la cantidad de clasificación que debe realizarse en las otras tablas a las que accede la consulta.
¿Qué es el cuello de botella de Oracle?
Un cuello de botella es un punto en el proceso de acceso o respuesta de una base de datos que tiene capacidad limitada y, por lo tanto, ralentiza el acceso a los resultados porque solo se puede atender un número limitado de consultas. Esto es diferente de los bloqueos de recursos, que ocurren cuando un proceso retiene un recurso y no lo libera hasta que otro recurso esté disponible.