运维日记|19c新特性自动索引 – 作者:database

   相信大家都有过维护索引的经历,特别是庞大的数据库,管理这些索引是一个相当冗杂的工作。简直头疼到裂开!!

    但是大家不要慌,oracle也终于听到了我们的呐喊声,在19c当中就加入了自动管理索引的功能!

 

认识19c自动索引

    在Oracle Database 19c引进了新的特性。Automatic Indexing自动划索引功能,顾名思义就是数据库能够根据应用程序工作负载自动管理索引,比如说创建索引,删除索引,重构索引。需要格外注意的是,目前自动索引只支持Oracle Exadata平台。

以下就是新增的有关于自动索引的视图:

DBA_AUTO_INDEX_CONFIG :

19.1新增视图,描述当前自动索引的配置

 

DBA_INDEXES/ALL_INDEXES/USER_INDEXES:

新增加的AUTO列标识是自动索引(YES)还是手动索引(NO)

 

DBA_AUTO_INDEX_EXECUTIONS :

显示历史自动索引任务执行

 

DBA_AUTO_INDEX_STATISTICS:

显示与自动索引相关的统计信息

 

DBA_AUTO_INDEX_IND_ACTIONS:

显示在自动索引上执行的操作

 

DBA_AUTO_INDEX_SQL_ACTIONS:

显示在SQL上执行的验证自动索引的操作

(特殊说明:当前版本的索引指的是local B-tree 索引)

 

参数展示:

select * from DBA_AUTO_INDEX_CONFIG;

图片[1]-运维日记|19c新特性自动索引 – 作者:database-安全小百科

 

参数解释

让小编来给大家对这些参数做一个简短的说明:

AUTO_INDEX_MODE:

off表示自动索引的状态是否开启

IMPLEMENT表示自动创建创建、测试、并报告,最终索引是visible状态

REPORT ONLY 会创建索引但是invisible,不会影响SQL,只是意图生成报告

在开启自动索引功能之前,需要开启一个特殊参数并重启数据库,才能使用自动索引功能

alter system set “_exadata_feature_on”=true scope=spfile;

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_MODE’,’IMPLEMENT’);

开启自动索引功能

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_MODE’,’IMPLEMENT’);

关闭自动索引功能

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_MODE’,’OFF’);

AUTO_INDEX_REPORT_RETENTION:

自动索引报告历史保留的天数 默认31天

手动设置报告保留天数为60天

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_REPORT_RETENTION’, ’60’);

AUTO_INDEX_RETENTION_FOR_AUTO:

自动创建的索引从上次使用后多少天不再使用的索引可以删除,默认373天

手动修改为90天

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_RETENTION_FOR_AUTO’, ‘ 90 ‘);

AUTO_INDEX_RETENTION_FOR_MANUAL:

手动创建的索引从上次使用后多少天不再使用的索引可以删除,默认永远

修改保存时间为60天

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_RETENTION_FOR_MANUAL’, ’60’);

AUTO_INDEX_SCHEMA:

指定HR能够使用自动索引的用户

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_SCHEMA’, ‘HR’, NULL);

不允许HR用户使用自动索引

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_SCHEMA’, ‘HR’, FALSE);

AUTO_INDEX_SPACE_BUDGET:

自动索引可以使用表空间大小的百分比,默认 50%

修改为20%

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_SPACE_BUDGET’, ’20’);

当然我们也可以指定自动索引保存的表空间,方便管理

EXEC DBMS_AUTO_INDEX.CONFIGURE(‘AUTO_INDEX_DEFAULT_TABLESPACE’, ‘MYAUTOTBS’);

图片[2]-运维日记|19c新特性自动索引 – 作者:database-安全小百科

 

测试索引

 

既然打开了自动索引,那现在我们首先建一张大表来测试数据库是否会自动创建索引

图片[3]-运维日记|19c新特性自动索引 – 作者:database-安全小百科

插入后

update test set object_id=rownum;

commit;

 

多次执行以下语句,并静等15分钟查看相关试图是否有结果

select object_name from test where object_id=1;

select object_type from test where object_id=111;

select created from test where object_id=222;

select created from test where object_id=333;

select created from test where object_id=444;

select created from test where object_id=555;

 

等待15分钟以后,打开执行计划,再次查询

set autotrace on

select object_name from test where object_id=1;

 

可以清楚地看到走得是索引

图片[4]-运维日记|19c新特性自动索引 – 作者:database-安全小百科

    测试完毕,是不是没想到19c竟然有如此智能的功能,那以后面对如此繁多的大表,只要将自动索引功能一开,它就自动帮你管理并创建索引,提高查询速度,是不是省去了我们平时运维的很多时间!真是忍不住想快点升级19c。

 

美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。

来源:freebuf.com 2020-07-15 10:23:56 by: database

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论