深入理解Oracle分区(1):如何实施和评估分区
深入理解Oracle分区(1):如何实施和评估分区
虽然本博文旨在引导大家生产环境如何建立分区
但千万别被一些所谓的设计指南、特别是一些绝对值建议而把自己作茧自缚
生产环境当慎独!
不过、照葫芦画瓢、总比没葫芦乱画一通要强吧
那么、我们从分区索引和分区表来展开
㈠ 分区索引的设计指南
① 如果表分区字段正好是索引字段或者其前缀、例如:t表分区字段是a、
则a正好是索引字段(a)、或者正好是索引字段(a,o)的前缀、
则此时应该建立为Local Prefixed Partitioned Index
② 否则、如果欲将非分区字段建立为唯一索引、例如:假设在t表的某个字段建立唯一索引
Oracle要求必须是 Global Prefixed Index
否则、会出现如下错误:
ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集
③ 往下看图、此时要判断“是否性能在可承受范围、而分区的可管理性、可用性更重要?”
如果是、就应该建立Local Non-Prefixed Index 也就是、
如果历史数据的整理非常频繁、而且不能承受全局分区索引重建的长时间带来的索引不可用
同时、日常交易性能尚能接受、则建议设计为本地非前缀分区索引
④ 再往下、最后判断系统是交易系统或数据仓库
通常情况、数据仓库会有频繁的大批量数据ETL操作、及历史数据清理操作
此时分区索引可用性更重要、因此建议设计为Local Non-Prefixed Index
而在交易系统、日常查询性能要求更高、历史数据清理操作频度相对较低、
因此、建议设计为Global Prefixed Index
㈡ 表分区设计
在分区方案设计时、首先目标应考虑全面
综合度量日常联机处理、数据可维护性、数据备份和恢复、并行数据操作等各方面目标
虽然本博文旨在引导大家生产环境如何建立分区
但千万别被一些所谓的设计指南、特别是一些绝对值建议而把自己作茧自缚
生产环境当慎独!
不过、照葫芦画瓢、总比没葫芦乱画一通要强吧
那么、我们从分区索引和分区表来展开
㈠ 分区索引的设计指南
① 如果表分区字段正好是索引字段或者其前缀、例如:t表分区字段是a、
则a正好是索引字段(a)、或者正好是索引字段(a,o)的前缀、
则此时应该建立为Local Prefixed Partitioned Index
② 否则、如果欲将非分区字段建立为唯一索引、例如:假设在t表的某个字段建立唯一索引
Oracle要求必须是 Global Prefixed Index
否则、会出现如下错误:
ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集
③ 往下看图、此时要判断“是否性能在可承受范围、而分区的可管理性、可用性更重要?”
如果是、就应该建立Local Non-Prefixed Index 也就是、
如果历史数据的整理非常频繁、而且不能承受全局分区索引重建的长时间带来的索引不可用
同时、日常交易性能尚能接受、则建议设计为本地非前缀分区索引
④ 再往下、最后判断系统是交易系统或数据仓库
通常情况、数据仓库会有频繁的大批量数据ETL操作、及历史数据清理操作
此时分区索引可用性更重要、因此建议设计为Local Non-Prefixed Index
而在交易系统、日常查询性能要求更高、历史数据清理操作频度相对较低、
因此、建议设计为Global Prefixed Index
㈡ 表分区设计
在分区方案设计时、首先目标应考虑全面
综合度量日常联机处理、数据可维护性、数据备份和恢复、并行数据操作等各方面目标