当前位置: 首页 > news >正文

读书笔记:Oracle 自动索引:让数据库自己管索引?

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

Oracle 自动索引:让数据库自己管索引?

从 Oracle 19c 开始,数据库引入了一个很酷的新功能:自动索引。简单来说,就是你可以让数据库自己决定什么时候该创建索引、什么时候该重建或删除索引,这一切都基于应用程序实际运行的负载情况。

自动索引是怎么工作的?

你可以把自动索引想象成一个智能的数据库索引管家,它的工作流程非常聪明:

  1. 发现候选:它像个侦探一样,不停分析数据库里运行的SQL语句,找出哪些列如果加了索引可能会让查询跑得更快。这些被它相中的索引就叫“候选索引”。
  2. 悄悄创建:找到目标后,它会先悄悄地创建索引(名字都以 SYS_AI 开头),并且把这些新索引设置为“不可见”模式。这意味着,虽然索引建好了,但优化器(决定SQL怎么执行的核心组件)暂时还不会用它,所以不会立刻影响到现有程序的运行。
  3. 实际测试:接下来,这个管家会偷偷地用这些不可见的索引来测试运行SQL,看看效果到底怎么样。如果发现性能确实提升了,它就把索引正式“亮出来”(变为可见);如果发现没啥用,它就把这个索引标记为“不可用”,之后会清理掉。
  4. 自动清理:它还会定期巡视,发现那些长期没人用的索引,也会自动把它们扔掉,节省空间。

⚠️ 重要提示
这个高级功能目前官方只支持在 Oracle Exadata 这种高端硬件上运行的企业版(Enterprise Edition)。如果你在普通机器上尝试启用它,会报错。虽然有个隐藏开关可以强行打开,但强烈不建议你自己这么做,因为这涉及到软件许可问题,可能需要额外付费。

DBA的工作被取代了吗?

并没有!启用自动索引后,DBA的角色从索引的“建筑工”变成了“监理”。

  • 你的主要工作是管理和配置这个功能,比如设置一些参数,告诉它哪些表或用户需要特别关照,哪些不需要。
  • 你需要定期查看它生成的报告,了解它做了些什么,效果如何,做到心中有数。

所以,DBA并没有失业,只是工作重点变了!

动手试一试

理论上,只需要简单执行一个命令就能开启这个功能(在PDB中):

EXEC dbms_auto_index.configure('AUTO_INDEX_MODE','IMPLEMENT');

之后,你像往常一样运行应用程序。自动索引的后台任务就会开始工作。比如,它可能会发现某个查询总是在查一个没有索引的大表,速度很慢。它就会:

  1. 自动为那个表创建了一个不可见的索引。
  2. 经过一段时间测试,确认有效后,将索引变为可见。
  3. 之后你再执行同样的查询,就会发现数据库已经飞快地用上这个新索引了。

你随时可以通过查询数据字典视图(如 DBA_INDEXES)或调用报告函数来查看它的工作成果。

总结一下

自动索引是一个强大的辅助工具,但它绝不是万灵药,也不能完全替代DBA和开发人员的思考。

  • 你比数据库更懂你的业务数据和程序逻辑。
  • 你仍然需要监控和评估它的工作,确保它的决策符合你的预期。

它的定位是增强你的索引管理策略,帮你减轻一些重复性的体力劳动,而不是彻底取代你。把它当作一个得力的AI助手,而不是一个全自动的替代品。

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

http://www.hskmm.com/?act=detail&tid=18028

相关文章:

  • 1_2025.9.26_1
  • 故障处理:Oracle RAC集群CTSS时钟同步故障案例分析与解决
  • Linux系统提权-web/普通用户-docker逃逸提权shell交互
  • PostgreSQL技术大讲堂 - 第106讲:分区表索引优化
  • 四边形不等式优化
  • 斜率优化
  • AI智能体:从认知到实践
  • Kinect屏幕边缘检测不灵敏的解决方案
  • 暴力拓客游戏小程序:助力商家高效引流与裂变的智能解决方案
  • vue3小坑之-为什么把ref定义的数组赋值给数组对象后取值为空数组?
  • 第二类斯特林数
  • 群论
  • 扫码签到赢大奖小程序:助力多场景获客的智能营销工具
  • docker 镜像/容器
  • jmeter命令行参数详细解释
  • RK3399:性能与能效的嵌入式先锋,解锁多场景应用潜力
  • 【C++STL详解】带头双向循环结构 + 双向迭代器,核心接口 + 排序效率 + 避坑指南 - 教程
  • TorchV知识库安全解决方案:基于智能环境感知的动态权限控制
  • VBA ETH功能应用 | “0”代码构建SOME/IP节点
  • ISUP协议视频平台EasyCVR在智慧灯杆综合管理中的应用
  • 视觉智能赋能产业数智化升级:JBoltAI多模态技术落地实践
  • 神秘考试题
  • 华三交换机升级版本步骤
  • Solon v3.4.6, v3.5.4, v3.6.0-M1 发布。正式开始 LTS 计划
  • 串口通信、阻塞与非阻塞、qt
  • 破解 Java 系统 AI 化难题:JBoltAI 框架自带 RAG、Function Calling 核心功能
  • 算法第一章作业
  • CF1706E Qpwoeirut and Vertices
  • 聚焦 Java AI 开发:JBoltAI 框架支持多模型适配,打造智能应用
  • 企业级 AI 应用开发首选!JBoltAI 框架适配 Java 技术栈,稳定可靠