Como vimos en el post anterior, Auto Indexing es un sistema experto que emula el trabajo que un especialista en performance realiza normalmente en una base de datos, supervisando la carga de trabajo en la base de datos y determinando si hay algún índice que pueda ayudar a mejorarla. Esta nueva característica es una evolución de los Advisors disponibles desde Oracl 10g, y tal como ocurría con los mismos, hay diversas vistas del diccionario de datos que permiten conocer como está configurada esta característica y que índicas han sido creados por la misma.

 

Vistas de Configuración

Una vez habilitada la opción, podemos ver los detalles de configuracion de la misma consultando la vista "DBA_AUTO_INDEX_CONFIG"

 


SELECT parameter_name, parameter_value FROM dba_auto_index_config;

PARAMETER_NAME                    PARAMETER_VALUE

AUTO_INDEX_DEFAULT_TABLESPACE
AUTO_INDEX_MODE                   IMPLEMENT
AUTO_INDEX_REPORT_RETENTION       31
AUTO_INDEX_RETENTION_FOR_AUTO     373
AUTO_INDEX_RETENTION_FOR_MANUAL
AUTO_INDEX_SCHEMA
AUTO_INDEX_SPACE_BUDGET           50

 

Los diferentes parámetros tienen el siguiente uso

 

  • AUTO_INDEX_MODE: Indica si la funcionalidad de encuentra deshabilitada , habilitada en forma completa (IMPLEMENT) o sólo en forma informativa (REPORT ONLY).
  • AUTO_INDEX_SCHEMA: Indica el o los esquemas para los cuales se habilita o deshabilita la funcionalidad.
  • AUTO_INDEX_REPORT_RETENTION: Cantidad de días para los cuales los logs de actividad de Auto Indexado se mantienen en la base de datos. El valor por defecto es 31 días.
  • AUTO_INDEX_RETENTION_FOR_AUTO: Cantidad de días que los indices creados en forma automática y que no son usados son mantenidos en la base de datos, antes de ser eliminados. El valor por defecto es 373 días.
  • AUTO_INDEX_RETENTION_FOR_MANUAL: Cantidad de días que los indices creados en forma manual y que no son usados son mantenidos en la base de datos, antes de ser eliminados. El valor por defecto es NULL, lo que significa que los indices creados manualmente no son eliminados aunque no sean utilizados.
  • AUTO_INDEX_DEFAULT_TABLESPACE: Tablespace donde se crearán los indices creados en forma automática. Cuando el valor es NULL (opción por defecto) se utiliza el tablespace por defecto.
  • AUTO_INDEX_SPACE_BUDGET: Cuando se usa el tablespace por defecto, porcentaje máximo del mismo que puede ser utilizado por indices creados en forma automática.

 

Vistas de Log de Actividad

DBA_AUTO_INDEX_EXECUTIONS

La vista "DBA_AUTO_INDEX_EXECUTIONS" posee información sobre todas las ejecuciones del proceso de indexado automático, incluyendo fecha de inicio/fin, status y si se encontró algún error.

SELECT * FROM dba_auto_index_executions ORDER BY execution_start;

DBA_AUTO_INDEX_STATISTICS

Esta vista posee un resumen de la actividad realizada por los procesos de Indexado Automático (espacio utilizado, indices evaluados, indices creados, porcentaje de mejora, etc.).

SELECT * FROM dba_auto_index_statistics WHERE value > 0;

DBA_AUTO_INDEX_IND_ACTIONS

Esta vista muestra los comandos ejecutados para crear índices, teniendo en cuenta los distintos pasos del proceso

  • Creación del indice en estado UNUSABLE para evaluar el plan de ejecución.
  • Reconstrucción del indice (online pero invisible) para evaluar el impacto en las sentencias deseadas.
  • Convertir el índice a VISIBLE para que sea utilizado, si el mismo es aceptado por el proceso.
SELECT * FROM dba_auto_index_ind_actions ORDER BY table_name, action_id;

DBA_AUTO_INDEX_SQL_ACTIONS

Esta vista posee información sobre las sentencias SQL ejecutadas para validad y verificar los indices creados en forma automática
SELECT * FROM dba_auto_index_sql_actions;

Procedimiento "REPORT_ACTIVITY"

Resulta mas sencillo consultar un reporte completo mediante el procedimiento "REPORT_ACTIVITY" del paquete "DBMS_AUTO_INDEX" que consultar cada una de las vistas en forma individual

 

-------------------------------------------------------------------------------- 
GENERAL INFORMATION
-------------------------------------------------------------------------------
Activity start : 29-AUG-2018 12.20.40
Activity end : 30-AUG-2018 12.20.40
Executions completed : 13
Executions interrupted : 3
Executions with fatal error : 1
-------------------------------------------------------------------------------
SUMMARY (AUTO INDEXES)
-------------------------------------------------------------------------------
Index candidates : 53
Indexes created (visible / invisible) : 12 (12 / 0)
Space used (visible / invisible) : 3.48 MB (3.48 MB / 0 B)
Indexes dropped : 0
SQL statements verified : 16
SQL statements improved (improvement factor) : 16 (3x)
SQL statements disallowed from auto indexes : 0
Overall improvement factor : 3x
-------------------------------------------------------------------------------
SUMMARY (MANUAL INDEXES)
-------------------------------------------------------------------------------
Unused indexes (visible / invisible) : 10 (8 / 2)
Space used (visible / invisible) : 100 MB (76 MB / 24 MB)
Unusable indexes : 0
-------------------------------------------------------------------------------
18 Sample Report
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |

INDEX DETAILS
-------------------------------------------------------------------------------
1. The following indexes were created:*: invisible
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------
| Owner | Table | Index | Key | Type | Properties |
--------------------------------------------------------------------------------
| OPT | T_10K_CP1 | SYS_AI_3cpm0ahgt469g | ROWID_UNIQUE        | B-TREE | NONE |
| OPT | T_10K_CP1 | SYS_AI_3rk4h2m9d49b5 | CHAR_UNIQUE         | B-TREE | NONE |
| OPT | T_10K_CP1 | SYS_AI_5cq2h6jhmznc9 | DATE_UNIQUE         | B-TREE | NONE |
| OPT | T_10K_CP1 | SYS_AI_6vg5wr5nwcqxs | THOUSAND            | B-TREE | NONE |
| OPT | T_10K_CP1 | SYS_AI_agnvzczmz4z0a | TEN,UNIQUE1,UNIQUE2 | B-TREE | NONE |
| OPT | T_10K_CP1 | SYS_AI_bcms9qy98nq1c | VCHAR_UNIQUE        | B-TREE | NONE |
| OPT | T_5K_CP   | SYS_AI_0urcv8chmxu20 | VCHAR_UNIQUE        | B-TREE | NONE |
| OPT | T_5K_CP   | SYS_AI_2pvk34mqdh7pa | TEN,UNIQUE1,UNIQUE2 | B-TREE | NONE |
| OPT | T_5K_CP   | SYS_AI_428hqd6qu531y | THOUSAND            | B-TREE | NONE |
| OPT | T_5K_CP   | SYS_AI_5d2cukrm2gju2 | DATE_UNIQUE         | B-TREE | NONE |
| OPT | T_5K_CP   | SYS_AI_97zrtmcmn5tz6 | CHAR_UNIQUE         | B-TREE | NONE |
| OPT | T_5K_CP   | SYS_AI_cn9fsv12paxcb | ROWID_UNIQUE        | B-TREE | NONE |
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------
VERIFICATION DETAILS
-------------------------------------------------------------------------------
1. The performance of the following statements improved:
-------------------------------------------------------------------------------
Schema Name : OPT
SQL ID : 2vy3tr5kyg88z
SQL Text : select count(*) from t_5k_cp where vchar_unique ='MAN'
Improvement Factor : 2x
PLANS SECTION
-------------------------------------------------------------------------------
Original -----------------------------
Plan Hash Value : 3944640934
--------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time |
--------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | | |
| 1 | SORT AGGREGATE | | | | | |
| 2 | TABLE ACCESS FULL | T_5K_CP | | | | |
---------------------------------------------------------------------
With Auto Indexes
-----------------------------
Plan Hash Value : 2541075899
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time|
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | | |
| 1 | SORT AGGREGATE | | | | | |
| * 2 | INDEX RANGE SCAN | SYS_AI_0urcv8chmxu20 | | | | |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
------------------------------------------
* 2 - access("VCHAR_UNIQUE"='MAN')

 

 

 

Algunas consideraciones adicionales

 

  • La funcionalidad de Automatic Indexing consume CPU, memoria y almacenamiento, por lo que:
    • La tarea esta limitada a sólo una CPU por el Resource Manager Plan
    • Se puede elegir el tablespace donde se almacenan los indices creados en forma automática.
    • Se puede elegir el tablespace temporal donde se construyen los indices creados en forma automática.
  • La funcionalidad de Automatic Indexing  soporta
    • Índices sencillos o concatenados (mas de una columna).
    • Índices basados en funciones.
    • Compresión avanzada en nivel LOW.



Links Utiles