索引create|rebuild|rebulid online

本文探讨了Oracle数据库中在线重建索引(rebuild online)与传统drop后创建索引的方法的区别。重点介绍了在线重建索引的优点,包括最小化业务影响、快速创建及与普通DML操作相似的更新机制。同时分析了不同场景下选择合适方法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于使用rebuild online 来说, 最大的好处即在于online. 也就是最小化对当前业务的影响..
创建时的开销应该会大一点, 毕竟一般情况下表会比索引大, 需要排序的内存/硬盘空间自然也会多点..创建完成后, 两种结果应该差别非常小, 通过log记录的这部分索引的更新应该类似与普通的dml操作处理..

最后一个问题,  除非用户很少使用这个索引, 否则drop index/create index肯定是一个不可取的操作..只要系统在用这个索引, 最好使用online rebuild, 是在不济, 也要考虑在系统较闲的使用rebuild index..

还想搞清楚的是:  rebuild index online ( 或者没online ) 时候Oracle会将B-Tree 的叶子节点或树的某些分支进行重新排列组合,这和drop index 之后然后重新create index 在结果上是否有大的区别 ?
rebuild online 应该与create index的机制是差不多的,只是在创建完之后需要将这段时间产生的变更的数据通过普通的dml操作的方式去更新..
这两种方法创建的索引,最终使用效果应该一样的。
区别就在于创建时online不会影响现有index的使用,建立的快一些(因在现有的索引基础之上)

我们在线系统都是用REBUILD ONLINE方式很少用DROP +CREATE 方式

REBUILD不能等同于create index.仅仅是对OLD INDEX作部分的range scan

craete index ...  Oracle will scan the whole table for the data to build the index.
alter index ... rebuild oracle takes the data already in the index and just reorganizes it.
The orginal table is not scanned again for data guring this rebuild process.

When creating a new index that is a subset of an existing index or when rebuilding an existing index with new storage characteristics, Oracle might use the existing index instead of the base table to improve the performance of the index build.
from Oracle9i Database Performance Tuning Guide and Reference

alter index  rebuid online  与alter index ....rebuild 是不同的!
至少有几个不同
1.drop & create 的话,当前Table 无法使用该index ,可能会严重影响应用,只能在应用不需用到该 Index时使用 , 而 alter index .. rebuild online 则没有这个限制,只是会消耗DB资源,不至于严重影响应用
2.Drop & create 只需占用一份index的space , 不像alter index .. rebuild online ,会在创建过程中需要占用新老两个index的space, 在free space不足的环境中,也许只能选用Drop & create
3. 至于 alter index .. rebuild ,或者alter index .. rebuild online 是否会使用 INDEX SCAN 代替 TABLE SCAN ,似乎不同环境有不同的结果。(RBO状态下)
我的一套环境中,alter index .. rebuild  ==> INDEX FAST FULL SCAN
 alter index .. rebuild  online==> TABLE FULL SCAN
而另一套,则是alter index .. rebuild  /alter index .. rebuild  online 都采用了TABLE FULL SCAN

 

### 如何在集成开发环境中执行完整的项目重建 在集成开发环境 (IDE) 中,`Build | Rebuild Project` 是一种常见的操作,用于清理并重新构建整个项目的依赖项和模块。以下是关于如何执行完整项目重建以及解决与此选项相关问题的详细说明。 当您不满意当前的构建工具或配置选择时,可以随时通过 `eject` 命令移除单个构建依赖[^1]。这允许开发者手动控制项目的构建过程,从而更好地解决问题或自定义构建流程。 对于 Android 开发者而言,在设置构建环境之前,通常需要运行以下命令来初始化必要的脚本: ```bash source $ANDROID_HOME/build/envsetup.sh ``` 此命令会加载所需的环境变量和路径配置[^2],确保您的构建工具链能够正常工作。 #### 执行完整项目重建的具体方法 大多数现代 IDE 提供了一个简单的菜单选项来进行全量重构建 (`Rebuild Project`)。例如,在 IntelliJ IDEA 或 Android Studio 中,可以通过导航到 **BuildRebuild Project** 来触发这一功能。该操作将清除现有的编译输出文件夹(通常是 `.gradle`, `out/`, 和其他中间产物),然后按照项目的构建配置重新生成所有目标文件。 如果遇到与 `Rebuild Project` 相关的问题,则可能涉及以下几个方面: - 缺少某些必需的库或者插件; - 构建缓存损坏; - 配置错误导致无法解析依赖关系; 针对上述情况,建议采取如下措施逐一排查: - 更新至最新版本的支持包和服务端API接口文档; - 清理本地仓库中的陈旧数据并通过网络同步最新的远程资源副本; - 检查是否存在语法冲突或其他编码标准方面的违规行为影响到了整体结构稳定性。 最后提醒一点,虽然自动化程度很高但仍需保持警惕性对待每一次大规模改动前后的测试验证环节以免引入新的隐患因素进去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值