表可以按range,hash,list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。
局部索引local index
1. 局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区说,一句话,局部索引的分区机制和表的分区机制一样。
2. 如果局部索引的索引列以分区键开头,则称为前缀局部索引。
3. 如果局部索引的列不是以分区键开头,或者不包含分区键列,则称为非前缀索引。
4. 前缀和非前缀索引都可以支持索引分区消除,前提是查询的条件中包含索引分区键。
5. 局部索引只支持分区内的唯一性,无法支持表上的唯一性,因此如果要用局部索引去给表做唯一性约束,则约束中必须要包括分区键列。
6. 局部分区索引是对单个分区的,每个分区索引只指向一个表分区,全局索引则不然,一个分区索引能指向n个表分区,同时,一个表分区,也可能指向n个索引分区,
对分区表中的某个分区做truncate或者move,shrink等,可能会影响到n个全局索引分区,正因为这点,局部分区索引具有更高的可用性。
7. 位图索引只能为局部分区索引。
8. 局部索引多应用于数据仓库环境中。
全局索引global index
1. 全局索引的分区键和分区数和表的分区键和分区数可能都不相同,表和全局索引的分区机制不一样。
2. 全局索引可以分区,也可以是不分区索引,全局索引必须是前缀索引,即全局索引的索引列必须是以索引分区键作为其前几列。
3. 全局分区索引的索引条目可能指向若干个分区,因此,对于全局分区索引,即使只动,截断一个分区中的数据,都需要rebulid若干个分区甚
至是整个索引。
4. 全局索引多应用于oltp系统中。
5. 全局分区索引只按范围或者散列hash分区,hash分区是10g以后才支持。
6. oracle9i以后对分区表做move或者truncate的时可以用update global indexes语句来同步更新全局分区索引,用消耗一定资源来换取高度的可用性。
7. 表用a列作分区,索引用b做局部分区索引,若where条件中用b来查询,那么oracle会扫描所有的表和索引的分区,成本会比分区更高,此时可以考虑用b做全局分区索引
分区索引字典
DBA_PART_INDEXES 分区索引的概要统计信息,可以得知每个表上有哪些分区索引,分区索引的类新(local/global,)
Dba_ind_partitions每个分区索引的分区级统计信息
Dba_indexesminusdba_part_indexes,可以得到每个表上有哪些非分区索引
索引重建
Alter index idx_name rebuild partition index_partition_name [online nologging]
需要对每个分区索引做rebuild,重建的时候可以选择online(不会锁定表),或者nologging建立索引的时候不生成日志,加快速度。
Alter index rebuild idx_name [online nologging]
对非分区索引,只能整个index重建
分享到:
相关推荐
### 分区索引—本地索引与全局索引的区别 #### 一、Oracle分区索引概念及分类 在Oracle数据库中,分区索引是针对分区表的一种特殊索引类型,它可以显著提高对于大规模数据集的查询性能。根据索引是否与表的分区...
分区索引可以分为两类:全局索引(Global Index)和本地索引(Local Index)。 1. 全局索引(Global Index) 全局索引是指可以跨越多个分区的索引。全局索引可以建在分区表上,也可以建在非分区表上。全局索引必须...
分区索引可以是全局索引或本地索引,全局索引可以独立于分区表,而本地索引的分区形式与表的分区相同。 分区方式 Oracle数据库中提供了多种分区方式,包括Range分区、Hash分区、List分区和组合分区等。 * Range...
非分区表或分区表上的本地索引的ROWID为6字节,全局索引在分区表上时为10字节。 理解这些基础后,我们可以估算索引的大小。例如,如果我们有一个包含130万行、列名为goodid的表,列类型为char(8),在该列上创建B树...
ROWID是数据行在表中的物理地址,长度根据索引类型(分区表上的本地索引或全局索引)有所不同。 在估算索引大小时,需要考虑数据块的可用空间、PCTFREE参数(保留空间比例)以及索引列的长度。例如,一个8KB的数据...
本文将详细介绍如何为一个核心大表(INFO_CUSTOMER)创建一个全局B树索引,并在此过程中尽可能减小对业务的影响。 #### 表信息及使用场景 - **数据库名称**:***DB1** - **表名**:INFO_CUSTOMER - **表规模**:...
- **合并索引**:各计算节点完成本地索引构建后,需要将这些局部索引合并成一个全局索引。这个过程可以通过Lucene提供的工具或者自定义逻辑实现。 #### 四、关键技术点 1. **文档分割**:合理地将文档集合划分为多...
与传统的全局管理索引相比,本地管理索引提供了更高的灵活性和更好的性能,特别是在大型数据库环境中。 ### 监控索引使用情况 监控索引使用情况是维护数据库性能的重要一环。通过定期检查索引的使用频率和效率,...
- 本地分区索引:本地索引与父表分区紧密关联,索引的分区与表分区同步。当对表进行分区操作时,无需重建索引。本地索引可以是B树索引或位图索引,通常用于数据仓库环境。 - 全局分区索引:全局索引的分区方式与表...
这将创建一个名为`my_backup`的快照,包含了所有索引,忽略不可用的索引,并且不备份全局状态(集群元数据)。 4. **配置Crontab**:为了让备份在特定时间自动执行,我们需要将`esbackup.sh`添加到Linux系统的...
- **全局索引合并**:最后将所有分区的局部索引并行合并成一个完整的全局索引,确保索引的一致性和完整性。 ##### 3. **数据流式索引构建** - **增量式索引更新**:支持数据流式输入,并以增量方式更新索引,避免...
索引的分类有多种,常见的索引有 B 索引(包含唯一索引)、位图索引、函数索引、本地前缀分区索引、全局范围分区索引等。B 树索引就是利用建立 B 树,将索引列和指向表中的各行的 rowid 组织起来,按照顺序建立一颗...
`命令可以重建失效的全局索引,使其恢复正常状态。 6. **删除表分区时的索引重建**: 使用`ALTER TABLE t_part DROP PARTITION p2 UPDATE INDEXES;`命令在删除分区的同时更新(重建)相关索引,确保索引始终保持...