SQL Performance Analyzer Oracle Database

En ocasiones después de hacer un cambio sobre la configuración de una BD, ya sea memoria asignada, versión del optimizador, etc… es necesario obtener una evidencia que demuestre que lo que se ha hecho mejora o no el rendimiento.

SQL Performance Analyzer ( SPA ) un paquete que aparece por primera vez en la versión 11g. Básicamente lo que hace es utilizar un SQL Tuning Set y realizar un test de todas las operaciones incluidas en el mismo calculando:

  • Planes de ejecución
  • Tiempos de CPU

La documentación oficial está aqui.

Partimos de un SQL Tuning Set (STS) creado en la entrada SQL Tuning Set Oracle Database llamado sh_workload
Continue reading

SQL Access Advisor Oracle Database

Una vez más cuando tenemos problemas de rendimiento cualquier ayuda es poca, Oracle Database ofrece el SQL Access Advisor que nos ayudará ofreciendo recomendaciones para mejora el rendimiento del entorno, indices nuevos, planes de ejecución, etc..  de un SQL Tuning Set (entre otras posibles entradas)

En esta entrada vamos a ver como utilizar el SQL Access Advisor (SAA), que ofrecerá recomendaciones del tipo:

  • Particionado de tablas
  • Creación de índices
  • Creación de vistas materializadas
  • Generación de estadisticas.

Que podemos aplicar para mejorar el rendimiento de la BD.

La documentación oficial está aqui.

Partimos de un SQL Tuning Set (STS) creado en la entrada SQL Tuning Set Oracle Database.
Continue reading

SQL Tuning Advisor Oracle Database

Cuando tenemos problemas de rendiemiento cualquier ayuda es poca, Oracle Database ofrece el SQL Tuning Advisor  (STA) que nos ayudará ofreciendo recomendaciones para mejora el rendimiento del entorno, indices nuevos, planes de ejecución, etc..  de un SQL Tuning Set (entre otras posibles entradas)

En esta entrada vamos a ver como utilizar el SQL Tuning Advisor, que ofrecerá recomendaciones que podemos aplicar para mejorar el rendimiento de la BD.

La documentación oficial está aqui.

Partimos de un SQL Tuning Set (STS) creado en la entrada SQL Tuning Set Oracle Database.

Continue reading

SQL Tuning Set Oracle Database

En esta entrada vamos a ver como crear un SQL Tuning Set (STS) que posteriormente podemos utilizarlo de diversas formas.

Un SQL Tuning Set (STS), es un conjunto de operaciones sobre la BD que puede ser creado desde el caché, desde snapshost, SQLID…

Una vez tenemos definido el SQL Tuning Set (STS), podemos utilizarlo con:

  • SQL Tuning Advisor
    Obtiene recomendaciones para mejora el rendimiento del entorno, indices nuevos planes, etc..  de un sqlset (entre otras posibles entradas)
  • SQL Performance Analyzer
    Obtiene los planes de ejecución y tiempos, etc… de un sqlset (entre otras posibles entradas), se pueden comparar diferentes tasks, habiendo realizado cambios de parametrización de la BD, estructuras, etc…
  • SQL Access Advisor
    Obtiene recomendaciones de vistas materializadas o índices para mejorar el rendimiento.
  • Transportarlo a otra base de datos, para utlizarlo con los 3 paquetes anteriores en un entorno diferente.

Continue reading

Generar carga de trabajo en Oracle Database

Cuando generamos entornos de laboratorio o pruebas y que requieren actividad a nivel de BD, el primer obstáculo que nos encontramos es ¿como genero actividad?

Pues bien, tenemos una utilidad que es una marvilla para generar carga: http://dominicgiles.com/swingbench.html

Esta utilidad s epuede ejecutar en Windows o Linux y en la versión 2.5 (que es la que se ha utilizado al escribir esto), requiere Java 1.8.

Continue reading

Optimizador Oracle, activar y desactivar características (Oracle DB)

Con cada versión o release de Oracle Database, se añaden nuevas funcionalidades y correcciones de bugs en el optimizador, esto en principio es bueno pero cualquier modificación de código puede incluir nuevos bugs.

Right Decision, Wrong Decision Road SignCuando actualizamos de una versión de Oracle a otra superior es posible que algunas consultas funcionen realmente mal, esto se puede solucionar con un workaround del tipo (si hemos migrado a 11gr2 desde 10.2.0.4 por ejemplo):

 

Source   
ALTER session SET optimizer_features_enabled='10.2.0.4';

o para hacerlo permanente:

Continue reading

Oracle reconstruir índices y estado

En tablas donde hay cambios constantemente como un mantenimiento más de la BD, hay que reconstruir los índices B-TREE de forma periódica, por ejemplo (la sintaxis es más compleja):

Source   
ALTER INDEX SCOTT.PK_EMP REBUILD;

Un B-TREE ideal tiene todas las ramas perfectamete equilibradas, un B-TREE degradado puede ofrecer tiempos de búsqueda lineales en lugar de logarítmicos debido a un fuerte desequilibrio.

Para determinar si un índice debe ser reconstruido:

Continue reading

Oracle estadísticas base de datos, generación, velocidad y actividad redolog (Oracle DB)

Cada nueva versión del optimizador cada vez es más dependiente de las estadísticas, la calidad de ellas puede ser suficiente para una versión anterior pero para la actual no.

Como regla general se ha de analizar una tabla (en casacada, es decir incluyendo índices) cuando se realizan modificaciones importantes sobre ella. Por ejemplo:

  • truncates
  • Insert into .. select …
  • Cualquier inserción, actualización y borrado masivo (se entiendo por masivo que afecte a más de un 20% del total de los registros)

Las estadísticas se pueden obtener de muchas maneras, algunas más rápidas que otras (estimaciones parciales, completas, etc…) y con más o menos generación de redologs.

Por ejemplo si usamos el paquete DBMS_STATS (https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS059) concretamente el subprograma GATHER_TABLE_STATS (https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68582), la sintaxis es muy similar para los subprogramas:

Continue reading

Pasar redologs de sistema de ficheros a RAW

No es una cosa que me guste especialmente, pero es posible que nos encontremos con personas que digan que si el rendimiento de la BD mejora mucho con los redolog en raw, frente a un sistema de ficheros (ext4 por ejemplo).

Para salir de dudas podemos trabajar con los redologs en modo RAW de forma muy sencilla. Vamos a poner un ejemplo hecho en Red Hat 4, con una BDD de pruebas con 3 redologs de 51 MB cada uno:

Source   
[oracle@clu01 DBU]$ ls -l
total 1502076
-rw-r-----  1 oracle oinstall   9748480 Jun 25 20:38 control01.ctl
-rw-r-----  1 oracle oinstall   9748480 Jun 25 20:38 control02.ctl
-rw-r-----  1 oracle oinstall   7061504 Jun 12 11:36 control03.ctl
-rw-r-----  1 oracle oinstall  52429312 Jun 25 11:06 redo01.log
-rw-r-----  1 oracle oinstall  52429312 Jun 25 10:39 redo02.log
-rw-r-----  1 oracle oinstall  52429312 Jun 25 10:39 redo03.log
-rw-r-----  1 oracle oinstall 545267712 Jun 25 20:38 sysaux01.dbf
-rw-r-----  1 oracle oinstall 744497152 Jun 25 20:38 system01.dbf
-rw-r-----  1 oracle oinstall  20979712 Jun 23 21:22 temp01.dbf
-rw-r-----  1 oracle oinstall  36708352 Jun 25 20:38 undotbs01.dbf
-rw-r-----  1 oracle oinstall   5251072 Jun 25 20:38 users01.dbf

Continue reading

MySQL tuning variables, parámetros para el motor INNODB

Continuando con el tuning MySQL ahora vamos a tocar de forma específica el motor INNODB.

Esta entrada está relacianada con la «MySQL, tuning de parámetros para cualquier motor«, vamos a trabajar a partir de estados y según el resultado ver que variables podemos modificar para mejorar los resultados.

En la entrada «Variables y estados en MySQL» ya se trató el tema de las variables y estados del servidor.

La documentación de todos las variables la podemos encontrar en:
http://dev.mysql.com/doc/refman/5.5/en/dynamic-system-variables.html

Continue reading