Recién acaba de recibir un correo de parte del equipo de Oracle Autonomous Database, en donde se me indica que el próximo 8 de junio, mi instancia del servicio Always Free Autonomous Database, va a ser actualizada a Oracle Database 19c.
Una gran noticia, ya que uno de los pocos "peros", que había indicado en mi charla de hace unas semanas atrás, es que la base de datos aprovisionada era versión 18c.
Con la actualización, no sólo viene el tema de la versión, sino de todas las características alrededor de 19c, entre las que sobresale, la gestión y manejo de los índices autonomos.
En los laboratorios realizados hasta el momento, es una de las características mejor cementadas en las últimas versiones de base de datos.
Hay que tener paciencia eso sí, ya que no es rápida la adopción de mejoras a los planes de ejecución.
La característica de autonomía para el manejo de índices, se toma su tiempo para analizar los beneficios que tendra el plan de ejecución de la sentencia, antes de que el indice pase de ser un índice invisible a un índice visible.
En mis pruebas, tomo más de 6 horas el ver dicho comportamiento y la verdad que el resultado, fue excelente.
Durante estas 6 horas, el advisor de creación de índices autonomos, ejecutó más de 59 análisis, buscando la mejor alternativa de rendimiento.
SQL> col execution_name format a40
1 select execution_name, execution_start,execution_end, status from dba_auto_index_executions
2* order by execution_end
SQL> /
EXECUTION_NAME EXECUTION EXECUTION STATUS
---------------------------------------- --------- --------- -----------
SYS_AI_2019-10-20/11:38:36 20-OCT-19 20-OCT-19 COMPLETED
SYS_AI_2019-10-20/11:53:50 20-OCT-19 20-OCT-19 COMPLETED
SYS_AI_2019-10-20/12:09:06 20-OCT-19 20-OCT-19 COMPLETED
SYS_AI_2019-10-20/12:24:21 20-OCT-19 20-OCT-19 COMPLETED
59 rows selected.
Conforme iba pasando el tiempo, era posible observar las estadísticas desde la vista dba_auto_index_statistics. Logré darme cuenta que en realidad estaba funcionando, cuando por primera vez, logré ver, que existían dos índices candidatos a ser utilizados y que ya había creado un índices invisible.
SQL> select * from dba_auto_index_statistics where execution_name='SYS_AI_2019-10-20/12:39:42';
EXECUTION_NAME STAT_NAME VALUE
---------------------------------------- ----------------------------- ----------
SYS_AI_2019-10-20/12:39:42 Index candidates 2
SYS_AI_2019-10-20/12:39:42 Indexes created (visible) 0
SYS_AI_2019-10-20/12:39:42 Indexes created (invisible) 1
SYS_AI_2019-10-20/12:39:42 Indexes dropped 0
SYS_AI_2019-10-20/12:39:42 Space used in bytes 134217728
SYS_AI_2019-10-20/12:39:42 Space reclaimed in bytes 0
SYS_AI_2019-10-20/12:39:42 SQL statements verified 0
SYS_AI_2019-10-20/12:39:42 SQL statements improved 0
SYS_AI_2019-10-20/12:39:42 SQL statements managed by SPM 0
SYS_AI_2019-10-20/12:39:42 SQL plan baselines created 0
SYS_AI_2019-10-20/12:39:42 Improvement percentage 0
11 rows selected
Despues de unas horas de activado el monitoreo, logré validar, que ya se había concretado, la creación de 3 índices, para las consultas que había dejado en un ciclo de repetición.
OWNER INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_TYPE
--------------- ------------------------ -------------- --------------- -----------
USER_TEST SYS_AI_38a4rpz9aydwy NORMAL USER_TEST VENENO
USER_TEST SYS_AI_8j1m1y4m3rg1v NORMAL USER_TEST VENENO
USER_TEST SYS_AI_grrbd3k2d8ufq NORMAL USER_TEST VENENO
SQL> COL INDEX_OWNER FORMAT A12
SQL> COL COLUMN_NAME FORMAT A20
SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION
from ALL_IND_COLUMNS where index_name='SYS_AI_grrbd3k2d8ufq';
Como lo afirma la documentación, los indices tenían como prefijo SYS_AI, o en pocas palabras, "Sistema, Inteligencia Artificial".
SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION
from ALL_IND_COLUMNS where index_name='SYS_AI_grrbd3k2d8ufq';
INDEX_OWNER INDEX_NAME COLUMN_NAME COLUMN_POSITION
------------ ------------------------------ -------------------- ---------------
USER_TEST SYS_AI_grrbd3k2d8ufq EMPLOYEE_ID 1
SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION
from ALL_IND_COLUMNS where index_name='SYS_AI_8j1m1y4m3rg1v';
INDEX_OWNER INDEX_NAME COLUMN_NAME COLUMN_POSITION
------------ ------------------------------ -------------------- ---------------
USER_TEST SYS_AI_8j1m1y4m3rg1v MANAGER_ID 1
SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION
from ALL_IND_COLUMNS where index_name='SYS_AI_38a4rpz9aydwy';
INDEX_OWNER INDEX_NAME COLUMN_NAME COLUMN_POSITION
------------ ------------------------------ -------------------- ---------------
USER_TEST SYS_AI_38a4rpz9aydwy JOB_ID 1
En la vista de acciones, era posible observar los comandos ejecutados por el programa de ML que gestiona dicha característica autonoma.
SQL> select index_owner, index_name, table_owner, command from dba_auto_index_ind_actions order by start_time;
INDEX_OWNER INDEX_NAME TABLE_OWNER COMMAND
------------ ------------------------------ ----------------- --------------------
USER_TEST SYS_AI_grrbd3k2d8ufq USER_TEST CREATE INDEX
USER_TEST SYS_AI_grrbd3k2d8ufq USER_TEST REBUILD INDEX
USER_TEST SYS_AI_grrbd3k2d8ufq USER_TEST ALTER INDEX VISIBLE
USER_TEST SYS_AI_8j1m1y4m3rg1v USER_TEST CREATE INDEX
USER_TEST SYS_AI_38a4rpz9aydwy USER_TEST CREATE INDEX
USER_TEST SYS_AI_38a4rpz9aydwy USER_TEST REBUILD INDEX
USER_TEST SYS_AI_8j1m1y4m3rg1v USER_TEST REBUILD INDEX
USER_TEST SYS_AI_8j1m1y4m3rg1v USER_TEST ALTER INDEX VISIBLE
8 rows selected.
Las verificaciones realizadas por la base de datos sobre los índices creados automáticamente se podían visualizar en la vista: DBA_AUTO_INDEX_VERIFICATIONS
SQL> select sql_id, original_buffer_gets, auto_index_buffer_gets,status from dba_auto_index_verifications;
SQL_ID ORIGINAL_BUFFER_GETS AUTO_INDEX_BUFFER_GETS STATUS
------------- -------------------- ---------------------- ---------
64mhzgsdq5cnt 58292.5 97 IMPROVED
4mf2rxa1jr5ah 58255 1 IMPROVED
a68nukn6w407b 58133.1154 3 IMPROVED
azsswcb98ffvc 58255 97 IMPROVED
cxdp6hffuf5nh 58255 89 IMPROVED
a68nukn6w407b 3.08201439 3 UNCHANGED
d7dj44yburdbz 107 96 UNCHANGED
d06rmnjvm5smf 12009 12009 UNCHANGED
2tryzm0v5xsc7 .000235 FAILED
a90k7j52rrmr6 3 FAILED
c595m0us6g543 58234.995 1 IMPROVED
drzb4vzkmxg6a 3 FAILED
c595m0us6g543 3.00069603 1 UNCHANGED
De igual manera, pude comprobar las distintas tareas ejecutadas por los distintos consejeros de la base de datos.
SQL> select TASK_NAME,ADVISOR_NAME,EXECUTION_END,STATUS,ACTIVITY_COUNTER from dba_advisor_tasks;
Y finalmente, puede también, generar un reporte de actividad en formato HTML, para pode documentar y entender mejor, todo lo que había pasado.
SET LONG 1000000 PAGESIZE 0SELECT DBMS_AUTO_INDEX.report_activity(type => 'HTML') FROM dual;
Ahora será tiempo a partir del 08 de junio, de volver a repetir nuevamente el laboratorio realizado en mi VM, pero esta vez, en la plataforma Always Free y compartirles mis hallazgos.
No hay comentarios:
Publicar un comentario
Te agradezco tus comentarios. Te esperamos de vuelta.