设为首页 加入收藏

TOP

Oracle 11g New 与分区和存储相关的增强功能(四)
2014-11-24 08:07:05 来源: 作者: 【 】 浏览:7
Tags:Oracle 11g New 分区 存储 相关 增强 功能
DDL 语句中使用它们。 可在虚拟列上对表和索引进行分区,甚至可以收集它们的统计信息。
基于虚拟列的分区 如果某个表的列值是通过计算函数或表达式得到的,则这些列就称为虚拟列。可以在CREATE或ALTER表操作过程中指定这些列。虚拟列与其它实际表列共享相同的SQL 名称空间,并与对其进行描述的基础表达式的数据类型相一致。可像其它表列一样在查询中使用这些列,因此可在SQL 语句中提供简单、优美且一致的访问表达式机制。 虚拟列的值实际上并未存储在磁盘上的表行中,而是根据需要进行计算。描述虚拟列的函数或表达式应是明确且无掺杂的,即相同的输入值集应返回相同的输出值。 可以像使用任何其它表列一样使用虚拟列。可对虚拟列进行索引,可在查询、DML 和DDL 语句中使用它们。可在虚拟列上对表和索引进行分区,甚至可以收集它们的统计信息。 可使用虚拟列分区对表的虚拟列上定义的键列进行分区。对逻辑分区对象的业务要求经常与现有列不一一对应。随着Oracle Database 11g的推出,分区功能得到了增强,可以在虚拟列上定义分区策略,因而可以更加全面地匹配业务要求。
基于虚拟列的分区:示例 \ 基于虚拟列的分区:示例 请考虑该图片中的示例。EMPLOYEES表是使用标准的CREATE TABLE语法创建的。 total_compensation列是一个虚拟列,其值的计算方式为:将salary的值与commission_pct加1之后的值相乘。下一个语句将total_compensation(虚拟列)声明为EMPLOYEES表的分区键。 如果分区键上的谓词属于以下类型之一,则将对虚拟列分区键执行分区修剪: 等式或Like 列表 范围 扩展分区名称
如果两个表之间存在联接操作,则优化程序将确定智能化分区联接(完全或部分)的适用时间,决定是否使用智能化分区联接,并在决定使用时正确注释该联接。这既适用于串行情况也适用于并行情况。 为了确定完全智能化分区联接,优化程序将依赖于对两个对象的均匀分区的定义;此定义包括表据以分区的虚拟表达式的等同性。
引用分区 现在,可以根据表的引用约束条件中引用的此表的分区方法对表进行分区。 分区键是通过现有的父/子关系解析的。 分区键是由活动的主键和外键约束条件强制实施的。 包含父/子关系的表可以通过从父表继承分区键进行均匀分区,而无需复制键列。 分区是自动维护的。
引用分区 通过引用分区,可以根据表的引用约束条件中引用的此表的分区方案,对表进行分区。分区键是通过现有的父/子关系解析的,并由活动的主键和外键约束条件强制实施。这种方式的优势在于:包含父/子关系的表可以通过从父表继承分区键来进行逻辑均匀分区,而无需复制键列。逻辑相关性也会自动级联分区维护操作,从而使应用程序的开发变得更简单、更不容易出错。
引用分区:优点 \ 引用分区:优点 如图片中所示,您可以看到使用引用分区的优点。左侧的图形显示了有两个表ORDERS和ORDER_ITEMS时的情况,它们按ORDER_DATE列进行均匀分区。在这种情况下,两个表都需要定义ORDER_DATE列。但是,在ORDER_ITEMS表中定义ORDER_DATE是多余的,因为在两个表之间存在主键/外键关系。 右侧的图形显示了使用引用分区时的情况。在这种情况下,不再需要在ORDER_ITEMS表中定义ORDER_DATE列。ORDER_ITEMS表的分区键会从现有的主键/外键关系中进行自动继承。 在用于修剪和智能化分区联接时,引用分区具有以下优势:可以使用不同的查询谓词,智能化分区联接仍然有效,例如,按ORDER_DATE进行分区,并对ORDER_ID进行搜索。在以前的版本中,只有分区和谓词相同时智能化联接才有效。 注:这种分区方法对嵌套表分区很有用。
引用分区:示例 \
引用分区:示例 图片中的示例创建了两个表: ORDERS:按order_date分区的范围分区表。该表在创建时包含四个分区Q105、Q205、Q305和Q405。 ORDER_ITEMS:引用分区子表: - 该表在创建时包含四个分区Q105、Q205、Q305和Q405,每个分区均包含与各自父分区中的ORDERS对应的行。 - 如果提供了分区描述符,则描述的分区数量必须与引用表中的分区或子分区的数量完全相同。 - 如果父表是组合分区表,则对于父表的每个子分区该表都有一个分区。 - 不能为引用分区表的分区指定分区界限。除非与继承的名称存在冲突,否则可以命名引用分区表的分区。在这种情况下,系统将为分区生成一个名称。 - 如果未显式指定表空间,则引用分区表的分区将与父表的对应分区并列排列。与其它分区表一样,可以指定对象级的默认属性和覆盖对象级默认值的分区描述符。 - 不能禁用引用分区表的外键约束条件。 - 不允许添加或删除引用分区表的分区。但是,在父表上执行分区维护操作将自动级联到子表。
组合分区增强功能 \ 组合分区增强功能 Oracle Database 11g之前的版本仅支持范围-列表和范围-散列组合分区方法。在此新版本中,列表分区可以是组合分区表的顶级分区方法,为用户提供列表-列表、列表-散列、列表-范围和范围-范围组合方法。随着间隔分区功能的推出,现在还支持间隔-范围、间隔-列表和间隔-散列组合分区方法。 范围-范围分区 范围-范围组合分区可以在两个维上进行逻辑范围分区,例如,按order_date的范围分区和按shipping_date的范围子分区。 列表-范围分区 列表-范围组合分区可以按指定的列表分区策略进行逻辑范围子分区,例如,按country_id的列表分区和按order_date的范围子分区。 列表-散列分区 列表-散列组合分区可以对列表分区对象进行散列子分区,例如,启用智能化分区联接。 列表-列表分区 列表-列表组合分区可以在两个维上进行逻辑列表分区,例如,按country_id的列表分区和按sales_channel的列表子分区。
范围-范围分区:示例 \ 范围-范围组合分区:示例 范围-范围组合分区可以在两个维上进行逻辑范围分区。图片中的示例创建了SALES表,并按time_id进行了范围分区。使用子分区模板对SALES表按范围进行了子分区,并使用cust_id作为子分区键。 由于使用了模板,所有分区都有相同的子分区数,并且具有模板所定义的相同界限。如果未指定模板,则将以MAXVALUE值(范围)或DEFAULT值(列表)创建一个默认分区界限。 虽然该示例显示的是范围-范围方法,但其它新的组合分区方法也使用相似的语法和语句结构。所有组合分区方法都完全支持对涉及子分区键谓词的查询使用现有的分区修剪方法。
表压缩:概览 Oracle Database 11g扩展了OLTP 数据的压缩。 支持常规的DML 操作(INSERT、UPDATE、DELETE) 新算法显著降低了写入开销。 批量压缩可确保大多数OLTP 事务处理不会受到影响。 对读取无影响 由于减少了I/O 次数并提高了内存效率,因此读取性能可能会有实际上的提高。
表压缩:概览 Oracle DB 是数据库压缩技术方面的先行者,在Oracle9i中就引入了针对批量装载操作的表压缩功能。使用此功能可以在使用直接装载或Create Table As Select (CTAS) 等操作执行批量装载时压缩数据。但在以前,一些常规数据操纵操作(如
首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PostgreSQL DBLink的使用 下一篇PostgreSQL学习手册(索引)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·上海启源芯动力的福 (2025-12-26 20:50:23)
·为什么动力电池安全 (2025-12-26 20:50:20)
·动力电池是怎么造出 (2025-12-26 20:50:18)
·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)