深入理解Oracle分区(2):分区方案中常见问题探讨
深入理解Oracle分区(2):分区方案中常见问题探讨
分区方案设计和实施是一门追求综合平衡、充满辩证统一的哲学、
也是经验和技术不断积累的艺术
然而、实际项目中、却漏洞频出、导致海量数据顷刻坍塌
㈠ 目标方面的误区
① 问题分析
在很多分区设计方案、其指导思想往往只考虑部分目标
特别是过分在意设计对性能的需求
而对分区在数据生命周期、数据备份恢复、高可用性等方面置若罔闻
② 正确策略
全面考量、综合平衡各个目标
建议指定目标优先级
㈡ 表分区方面的误区
① 问题分析
在实际项目中、很多分区方案只采用了Oracle Range 分区策略
对其他Oracle 分区技术运用较少
② 正确策略
进行分区表设计的正确策略应是充分了解Oracle各种分区技术的特点之后、
再结合具体应用需求进行针对性设计
比如:
对需要进行历史数据迁移的表、应尽量采用Range、List、Interval等、如话费清单数据
对不存在历史数据迁移需求的表、如用户资料信息、则可考虑采用HASH分区技术
㈢ 没有充分考虑应用设计和开发的误区
① 问题分析
分区方案设计时、没有对应用软件设计和开发进行充分调研、
特别是没有对重点SQL语句进行深入分析、导致这些操作无法使用分区技术
② 正确策略
应用需求分析是任何设计开发工作的基础
对应用软件设计和开发进行调研分析、特别是重点SQL进行深入分析
㈣ 分区表空间设计方面的误区
① 问题分析
在Oracle分区设计可指定每个分区的存储属性、特别是可在分区级进行表空间设计
但是很多项目中、在此方面存在较大的随意性、缺乏精细考虑和设计
这样将导致无法在表空间级进行与业务相关的数据管理工作
比如、在历史数据清理、数据发布等应用中、无法使用表空间迁移、并且无法结合分区交换、合并等技术
另外、在备份与恢复中、这样的分区也无法在表空间级进行按月的备份和恢复
② 正确策略
Oracle的分区表空间设计为大批量数据处理提供了良好的技术基础
只有充分理解表空间级的Oracle相关技术、才能在分区方案设计中权衡
总之、别把鸡蛋都往一个篮子里面放
㈤ 大批量数据处理中的误区
① 问题分析
在很多项目、设计和开发人员仍然在采用最原始的DML进行大批量数据处理、
不仅运行效率低下、而且会产生大量UNDO REDO、为备份恢复、资源管理增加负担
② 正确策略
大批量数据处理一定要想到分区技术
例如、通过表空间迁移和分区表技术(truncate、drop、add、exchange、merge、split等)的综合使用、
高效实现海量数据仓库加载的技术方案
㈥ 索引分区方面的误区
① 问题分析
在很多方案设计中、很少甚至没有对索引进行分区设计
或者、只是简单将所有分区索引设计成Local分区索引
② 正确策略
分区索引虽然难、但非常重要、切记随意设计!
比如:针对存在历史数据清理和归档需求的表、可设计成高可用性和可维护性较好的Local索引
而对不存在历史数据清理和归档的表、可设计成性能更好的Global Prefix索引