="t18">
Oracle 分区功能可以提高许多应用
![](/icons/54275chengxu.gif)
![](/icons/54275de.gif)
可治理性、性能和可用性
![](/icons/54275dou2.gif)
通过分区功能
![](/icons/54275dou.gif)
可以将表、索引和索引组织表进
![](/icons/54275yi.gif)
步细分为段
![](/icons/54275dou.gif)
从而能够更精确地治理和访问这些数据库对象
![](/icons/54275dou2.gif)
Oracle 提供了种类繁多
![](/icons/54275de.gif)
分区方案以满足每种业务要求
![](/icons/54275dou2.gif)
而且
![](/icons/54275dou.gif)
![](/icons/54275yinwei.gif)
在 SQL 语句中分区是完全透明
![](/icons/54275de.gif)
![](/icons/54275dou.gif)
所以该功能几乎可应用于任何应用
![](/icons/54275chengxu.gif)
分区功能
优势
分区功能通过改善可治理性、性能和可用性
![](/icons/54275dou.gif)
从而为各式应用
![](/icons/54275chengxu.gif)
带来了极大
![](/icons/54275de.gif)
好处
![](/icons/54275dou2.gif)
通常
![](/icons/54275dou.gif)
分区可以使某些查询以及维护操作
![](/icons/54275de.gif)
性能大大提高
![](/icons/54275dou2.gif)
此外,分区还可以极大简化常见
![](/icons/54275de.gif)
治理任务
![](/icons/54275dou2.gif)
通过分区,数据库设计人员和治理员能够解决前沿应用
![](/icons/54275chengxu.gif)
带来
![](/icons/54275de.gif)
![](/icons/54275yi.gif)
些难题
![](/icons/54275dou2.gif)
分区是构建千兆字节数据系统或超高可用性系统
![](/icons/54275de.gif)
要害工具
分区功能
基本知识
分区功能能够将表、索引或索引组织表进
![](/icons/54275yi.gif)
步细分为段
![](/icons/54275dou2.gif)
这些数据库对象
![](/icons/54275de.gif)
段叫做分区
![](/icons/54275dou2.gif)
每个分区有自己
![](/icons/54275de.gif)
名称
![](/icons/54275dou.gif)
还可以选择自己
![](/icons/54275de.gif)
存储特性
![](/icons/54275dou2.gif)
从数据库治理员
![](/icons/54275de.gif)
角度来看
![](/icons/54275dou.gif)
![](/icons/54275yi.gif)
个分区后
![](/icons/54275de.gif)
对象具有多个段
![](/icons/54275dou.gif)
这些段既可进行集体治理
![](/icons/54275dou.gif)
也可单独治理
![](/icons/54275dou2.gif)
这就使数据库治理员在治理分区后
![](/icons/54275de.gif)
对象时有相当大
![](/icons/54275de.gif)
灵活性
![](/icons/54275dou2.gif)
但是
![](/icons/54275dou.gif)
从应用
![](/icons/54275chengxu.gif)
![](/icons/54275de.gif)
角度来看
![](/icons/54275dou.gif)
分区后
![](/icons/54275de.gif)
表和非分区表完全相同
![](/icons/54275dou.gif)
使用 SQL DML 命令访问分区后
![](/icons/54275de.gif)
表时
![](/icons/54275dou.gif)
无需任何修改
![](/icons/54275dou2.gif)
表
![](/icons/54275de.gif)
分区是通过“分区键”来实现
![](/icons/54275de.gif)
![](/icons/54275dou.gif)
分区键指
![](/icons/54275de.gif)
是
![](/icons/54275yi.gif)
些列
![](/icons/54275dou.gif)
这些列决定了某
![](/icons/54275yi.gif)
行所在
![](/icons/54275de.gif)
分区
![](/icons/54275dou2.gif)
Oracle 数据库 10g 提供了 6项技术用于对表进行分区:
范围分区
每个分区都由
![](/icons/54275yi.gif)
个分区键值范围指定(对于
![](/icons/54275yi.gif)
个以日期列作为分区键
![](/icons/54275de.gif)
表
![](/icons/54275dou.gif)
“2005 年 1 月”分区包含分区键值为从“2005 年 1 月 1 日”到“2005 年 1 月 31 日”
![](/icons/54275de.gif)
行)
列表分区
每个分区都由
![](/icons/54275yi.gif)
个分区键值列表指定(对于
![](/icons/54275yi.gif)
个地区列作为分区键
![](/icons/54275de.gif)
表
![](/icons/54275dou.gif)
“北美”分区可能包含值“加拿大”“美国”和“墨西哥”)
散列分区
将散列算法用于分区键来确定指定行所在
![](/icons/54275de.gif)
分区
组合范围散列分区
范围和散列分区技术
![](/icons/54275de.gif)
组合
![](/icons/54275dou.gif)
通过该组合
![](/icons/54275dou.gif)
首先对表进行范围分区
![](/icons/54275dou.gif)
然后针对每个单独
![](/icons/54275de.gif)
范围分区再使用散列分区技术进
![](/icons/54275yi.gif)
步细分
![](/icons/54275dou2.gif)
索引组织表只能进行范围分区
组合范围列表分区
范围和列表分区技术
![](/icons/54275de.gif)
组合
![](/icons/54275dou.gif)
通过该组合
![](/icons/54275dou.gif)
首先对表进行范围分区
![](/icons/54275dou.gif)
然后针对每个单独
![](/icons/54275de.gif)
范围分区再使用列表分区技术进
![](/icons/54275yi.gif)
步细分
![](/icons/54275dou2.gif)
索引组织表可以按范围、列表或散列进行分区
![](/icons/54275dou2.gif)
Oracle 数据库 10g 还提供了 3种类型
![](/icons/54275de.gif)
分区索引:
本地索引
本地索引是其分区方式和其所在基础表
![](/icons/54275de.gif)
分区方式
![](/icons/54275yi.gif)
模
![](/icons/54275yi.gif)
样
![](/icons/54275de.gif)
索引
![](/icons/54275dou2.gif)
本地索引
![](/icons/54275de.gif)
每个分区仅对应于其所在基础表
![](/icons/54275de.gif)
![](/icons/54275yi.gif)
个分区
全局分区索引
全局分区索引是使用区别于其所在表
![](/icons/54275de.gif)
分区键进行分区
![](/icons/54275de.gif)
索引
![](/icons/54275dou.gif)
其所在表可以是分区表或非分区表
![](/icons/54275dou2.gif)
全局分区
![](/icons/54275de.gif)
索引可以使用范围或散列分区进行分区
![](/icons/54275dou2.gif)
例如
![](/icons/54275dou.gif)
某个表可以按月份进行范围分区
![](/icons/54275dou.gif)
因此具有十 2个分区
![](/icons/54275dou.gif)
而该表上
![](/icons/54275de.gif)
索引则可以使用区别
![](/icons/54275de.gif)
分区键进行范围分区
![](/icons/54275dou.gif)
从而具有区别
![](/icons/54275de.gif)
分区数量
全局非分区索引
全局非分区索引基本上和非分区表
![](/icons/54275de.gif)
索引
![](/icons/54275yi.gif)
样
![](/icons/54275dou2.gif)
索引结构是不分区
![](/icons/54275de.gif)
![](/icons/54275dou2.gif)
Oracle 提供了
![](/icons/54275yi.gif)
系列丰富
![](/icons/54275de.gif)
技术
![](/icons/54275dou.gif)
可用于对表、索引和索引组织表进行分区
![](/icons/54275dou.gif)
因此可以针对任何业务环境中
![](/icons/54275de.gif)
任何应用
![](/icons/54275chengxu.gif)
进行最佳
![](/icons/54275de.gif)
分区 Oracle 还提供
![](/icons/54275yi.gif)
套完整
![](/icons/54275de.gif)
SQL 命令
![](/icons/54275dou.gif)
用于治理分区表
![](/icons/54275dou2.gif)
其中包括添加新分区、删除分区、分拆分区以及合并分区
![](/icons/54275de.gif)
命令
用分区功能提高可治理性
通过 Oracle 分区功能
![](/icons/54275dou.gif)
可将表和索引分成更多、更小
![](/icons/54275de.gif)
可治理单元
![](/icons/54275dou.gif)
从而使数据库治理员能以“化整为零
![](/icons/54275dou.gif)
个个击破”
![](/icons/54275de.gif)
方式治理数据
![](/icons/54275dou2.gif)
使用分区功能
![](/icons/54275dou.gif)
维护操作可集中于表
![](/icons/54275de.gif)
特定部分
![](/icons/54275dou2.gif)
例如
![](/icons/54275dou.gif)
数据库治理员可以只对表
![](/icons/54275de.gif)
![](/icons/54275yi.gif)
部分做备份
![](/icons/54275dou.gif)
而不必对整个表做备份
![](/icons/54275dou2.gif)
对整个数据库对象
![](/icons/54275de.gif)
维护操作
![](/icons/54275dou.gif)
可以在每个分区
![](/icons/54275de.gif)
基础上进行
![](/icons/54275dou.gif)
从而将维护工作分解成更轻易治理
![](/icons/54275de.gif)
小块
![](/icons/54275dou2.gif)
利用分区功能提高可治理性
![](/icons/54275de.gif)
![](/icons/54275yi.gif)
个典型使用方法是支持数据仓库中
![](/icons/54275de.gif)
‘滚动视窗’加载进程
![](/icons/54275dou2.gif)
假设数据库治理员每周向表中加载新数据
![](/icons/54275dou2.gif)
可以对该表进行范围分区
![](/icons/54275dou.gif)
使每个分区包含
![](/icons/54275yi.gif)
周
![](/icons/54275de.gif)
数据
![](/icons/54275dou2.gif)
这样加载进程只是简单地添加新
![](/icons/54275de.gif)
分区
![](/icons/54275dou2.gif)
添加
![](/icons/54275yi.gif)
个分区
![](/icons/54275de.gif)
操作比修改整个表效率高很多
![](/icons/54275dou.gif)
![](/icons/54275yinwei.gif)
DBA 不需要修改任何其他分区
用分区功能提高性能
由于限制了所检查或操作
![](/icons/54275de.gif)
数据数量
![](/icons/54275dou.gif)
同时支持并行任务执行
![](/icons/54275dou.gif)
Oracle 分区功能实现了性能上增益
![](/icons/54275dou2.gif)
这些特性包括:
分区修整
分区修整是用分区功能提高性能
![](/icons/54275de.gif)
最简单最有价值
![](/icons/54275de.gif)
手段
![](/icons/54275dou2.gif)
分区修整经常能够将查询性能提高几个数量级
![](/icons/54275dou2.gif)
例如
![](/icons/54275dou.gif)
假设某个应用
![](/icons/54275chengxu.gif)
包含
![](/icons/54275yi.gif)
个存储订单历史记录
![](/icons/54275de.gif)
Orders 表
![](/icons/54275dou.gif)
并且此表已按周分区
![](/icons/54275dou2.gif)
查询
![](/icons/54275yi.gif)
周
![](/icons/54275de.gif)
订单只需访问该订单表
![](/icons/54275de.gif)
![](/icons/54275yi.gif)
个分区
![](/icons/54275dou2.gif)
假如该订单表包含两年
![](/icons/54275de.gif)
历史记录
![](/icons/54275dou.gif)
这个查询只需要访问
![](/icons/54275yi.gif)
个分区而不是
![](/icons/54275yi.gif)
百零 4个
![](/icons/54275dou2.gif)
该查询
![](/icons/54275de.gif)
执行速度
![](/icons/54275yinwei.gif)
分区修整而有可能快
![](/icons/54275yi.gif)
百倍
![](/icons/54275dou2.gif)
分区修整能和所有其他 Oracle 性能特性协作
![](/icons/54275dou2.gif)
Oracle 能将分区修整功能和任何索引技术、联接技术或并行访问思路方法结合使用
分区智能联接
分区功能可以通过称为分区智能联接
![](/icons/54275de.gif)
技术提高多表联接
![](/icons/54275de.gif)
性能
![](/icons/54275dou2.gif)
当两个表要联接在
![](/icons/54275yi.gif)
起
![](/icons/54275dou.gif)
而且每个表都用联接键来分区时
![](/icons/54275dou.gif)
就可以使用分区智能联接
![](/icons/54275dou2.gif)
分区智能联接将大型联接分解成较小
![](/icons/54275de.gif)
发生在各个分区间
![](/icons/54275de.gif)
联接
![](/icons/54275dou.gif)
从而用较少
![](/icons/54275de.gif)
时间完成全部联接
![](/icons/54275dou2.gif)
这就给串行和并行
![](/icons/54275de.gif)
执行都能带来显著
![](/icons/54275de.gif)
性能改善
用分区功能提高可用性
分区
![](/icons/54275de.gif)
数据库对象具有分区独立性
![](/icons/54275dou2.gif)
该分区独立性特点可能是高可用性战略
![](/icons/54275de.gif)
![](/icons/54275yi.gif)
个重要部分
![](/icons/54275dou.gif)
例如
![](/icons/54275dou.gif)
假如分区表
![](/icons/54275de.gif)
![](/icons/54275yi.gif)
个分区不能用
![](/icons/54275dou.gif)
但该表
![](/icons/54275de.gif)
所有其他分区仍然保持在线并可用
![](/icons/54275dou2.gif)
那么这个应用可以继续针对该分区表执行查询和事务处理
![](/icons/54275dou.gif)
只要不是访问不可用
![](/icons/54275de.gif)
分区
![](/icons/54275dou.gif)
数据库操作仍然能够成功运行
![](/icons/54275dou2.gif)
数据库治理员可以指定各分区存放在区别
![](/icons/54275de.gif)
表空间里
![](/icons/54275dou.gif)
从而让治理员隔离其它表分区针对单个分区进行备份和恢复操作
![](/icons/54275dou2.gif)
还有
![](/icons/54275dou.gif)
分区功能可以减少计划停机时间
![](/icons/54275dou2.gif)
由于分区功能改善了性能
![](/icons/54275dou.gif)
使数据库治理员能用相对较少
![](/icons/54275de.gif)
时间完成大型数据库对象
![](/icons/54275de.gif)
维护工作
未来发展方向
自从引入分区技术以来
![](/icons/54275dou.gif)
Oracle 公司在每次推出重要版本时都会增加新
![](/icons/54275de.gif)
分区思路方法
![](/icons/54275dou2.gif)
Oracle8 引入了范围分区功能
![](/icons/54275dou.gif)
Oracle8i 引入了散列和组合范围散列分区功能
![](/icons/54275dou.gif)
Oracle9i 引入了列表分区功能
![](/icons/54275dou2.gif)
在最新版本 Oracle 数据库 10g 中
![](/icons/54275dou.gif)
则增强了用于索引组织表和全局分区索引
![](/icons/54275de.gif)
分区策略
![](/icons/54275dou.gif)
并且扩展了其用于所有分区维护操作
![](/icons/54275de.gif)
并发索引维护功能
![](/icons/54275dou2.gif)
Oracle 公司致力于不断完善分区技术
![](/icons/54275dou.gif)
确保满足所有
![](/icons/54275de.gif)
业务需求
结论
具有 Oracle 分区功能
![](/icons/54275de.gif)
Oracle 数据库 10g 可以显著增强几乎任何数据库应用
![](/icons/54275chengxu.gif)
![](/icons/54275de.gif)
可治理性、性能和可用性
![](/icons/54275dou2.gif)
分区功能可用于前沿应用
![](/icons/54275chengxu.gif)
![](/icons/54275dou.gif)
分区功能确实能够成为保障这些应用
![](/icons/54275chengxu.gif)
成功
![](/icons/54275de.gif)
要害技术成分
![](/icons/54275dou2.gif)
同时
![](/icons/54275dou.gif)
分区功能也可用于较为普通
![](/icons/54275de.gif)
数据库应用
![](/icons/54275dou.gif)
来简化这些应用
![](/icons/54275de.gif)
治理工作
![](/icons/54275dou.gif)
降低治理成本