1.全分区智能连接
此时,将来自于相连的两个表的一对分区之间的很大的连接分解成小连接。只有当基于连接键的两个表是均衡的,或者参照分区时才可使用本特征。如:
假定表sales和customers通过列customer_id相连,该连接是一个大连接,查询某个1999年第三季度购买次数超过100的客户记录,则会使用全分区智能连接,如下:
SELECT c.customer_name, COUNT(*)
FROM sales s, customers c
WHERE s.customer_id = c.customer_id AND
s.time_id BETWEEN TO_DATE('1999-07-01', 'YYYY-MM-DD') AND
(TO_DATE('1999-10-01', 'YYYY-MM-DD'))
GROUP BY c.customer_name HAVING COUNT(*) > 100;
上述SQL执行时整个customers表与salse表的第三季度数据相连,在一个大数据仓库中,这意味着数以百万计的数据行被连接,此时是一种明显的散列连接,如果此时两个表中的数据是按customer_id均衡分布的,则越发能缩短该散列连接的处理时间,原因是Oracle可以使用全分区智能连接。
在并行操作中要使用全分区智能连接时,最小的并行粒度也是分区,因此并行度也被限制为分区的数量。如,请求至少16个分区,则会导致查询的并行度也被设置为16。
下面是三种均衡化两个连接表的分区方法:
如右图,通常,在一个大事物中,由于customer表是字典表,因而数据量少,为了降低I/O和CPU时间,该表会被选择为驱动表。但在并行查询中,由于可以 使用并行查询且一般 最终只有几行会被选中以及 对小表 的限制条件(Where条件)少,所以大表一般被选择为驱动表。如果此时连接的两个表的列均建立了 主键索引或唯一索引,则对于并行查询,效率会更高。
(1).单级分区-单级分区的全分区智能连接
适合于R-R、H-H、L-L的单级分区连接的两个表,且分区键是建立在连接的两个列上。
使用执行计划查看并行查询的选项包括:
A.P->P,即PARALLEL_TO_PARALLEL,输出步骤重新分配到并行服务器的下一个集合,此时性能最好。
B.P->S,即PARALLEL_FROM_SERIAL,输出步骤返回至序列化的查询协调器(QC)进程。
C.PCWP(PWP), PARALLEL_COMBINED_WITH_PARENT,输出步骤在同一个并行进程内转向下一步,此时没有与父进程间通讯
D.PCWC(PWC), PARALLEL_COMBINED_WITH_CHILD,输入步骤来自在同一个并行进程的前一步,此时也没有与父进程间通讯
例子如下:创建两个表account_trade_shq_fpw和account_trade_shq_fpw ,写入数据然后设定并行访问,再通过执行计划查看:
针对上述执行计划的主要解释如下:
A. 第14行PX BLOCK ITERATOR,表明将第15行的表ACCOUNT_TRADE_SHQ_FPW分割成小块,以便在并发从属之间分摊扫描的负载
B. 第11行的PX SEND BROADCAST和第10行的PX RECEIVE对,第6行的PX SEND HASH和第5行的PX RECEIVE对,描述了两个并发从属集之间的管道,该管道中流动的是从并发扫描中获得的行
C. 第2行PX SEND QC (RANDOM)描述的是按照随机顺序发给查询协调器汇总聚合的值
D. 第1行PX COORDINATOR描述的是查询协调器,其负责控制和调度下面树图中展示的并行执行计划
全分区智能连接又包括三种类型:
(1).单级分区-单级分区的全分区智能连接
适合H-H,L-L和R-R的表连接,且分区键是相连接的列。
(2).组合分区-单级分区的全分区智能连接
此时一般是大表基于两个维度分区,连接的列作为子分区键
(3).组合分区-组合分区的全分区智能连接
如果需要的话,连接的两个表均建立组合分区,因而也可以建立分区-分区,分区-子分区,子分区-分区,子分区-子分区的连接。但是这种情况很少见,一般不建议使用,可以采用前面两种两法来替代。
2.部分分区智能连接
区别于全分区智能连接,部分分区智能连接仅仅是两个相连的表中的一个表在连接键上分区,而不是两个表均在连接键上分区。分区表作为参照表,另外一个表可以分区,也可以不分区。部分分区智能连接比全分区智能连接更常用。
Oracle在执行过程中会依据分区的参照表动态对另外一个表进行分区,然后其执行类似于全智能分区。当大表的分区是建立在连接键、外键或主键上时,可以防止任何时候基于该连接的重新分配,因此使用外键是部分智能分区中常见的情形。
右边的例子中customer没分区,sales分为16个散列分区。执行前面全分区智能连接的SQL语句,则表Sales的分区
与customers表的连接中,customers表自动重新分配以便与sales表不同的分区连接。
分区及表压缩技术
分区级压缩支持对单个或几个分区进行压缩, 表级压缩则是对所有分区进行压缩,其存储参数同样也遵循表空间->表->分区的原则,细粒度的属性定义会覆盖从上一级别继承的属性(其他存储参数也是如此,如逻辑存储设置参数)。一般来说,如果数据更新很少,对表的操作主要是只读的且数据量很大一般建议(2000万行或2G大小)压缩。
可以更改任何未压缩的表分区,然后再加入新的压缩或未压缩的分区,也可以改变任何分区管理操作的压缩属性,如分区合并、分割、移动等(MERGE PARTITION、 SPLIT PARTITION、 MOVE PARTITION )。对部分或全部压缩的分区表的访问和维护操作与未压缩的分区表是一样的。
1.建表时压缩语法
相关推荐
oracle数据库优化-分区共.pdforacle数据库优化-分区共.pdforacle数据库优化-分区共.pdforacle数据库优化-分区共.pdforacle数据库优化-分区共.pdf
ORACLE数据库优化-分区.pdf
Oracle数据库分区和压缩技术应用——让Oracle跑得更快.pdf
从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBA(Oracle应用程序...
《oracle数据库性能优化的艺术》是资深数据库专家、unix系统专家、系统架构师近20年工作经验的结晶。 《oracle数据库性能优化的艺术》内容高屋建瓴,用辩证法中的系统化分析方法,不仅从硬件(服务器系统、存储系统...
Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能
简介: 希望可以给面试DBA的朋友有所帮助,里面文件压缩包里有面试相关的题目与数据库概念;如:一:SQL tuning 类 1:列举几种表连接方式 hash join/merge join/nest loop(cluster join)/index join 2:不...
保持Oracle数据优良性能 12 提高Oracle数据库查询统计速度 14 Oracle中巧取指定记录 14 Oracle数据安全 15 Oracle字段上建立并使用索引 29 用Windows脚本宿主自动化Oracle工具 31 进程结构和内存结构 32 Oracle监控...
Oracle数据库分区优化技术研究与应用.pdf
Oracle数据库分区管理.docx
第一部分 数据库体系结构 第1章 Oracle体系结构 1 1.1 数据库概述及实例 1 1.2 数据库 1 1.2.1 表空间 2 1.2.2 文件 2 1.3 实例 3 1.4 数据库内部结构 3 1.4.1 表、列和数据类型 4 1.4.2 约束条件 5 1.4.3 抽象数据...
dba_extents:数据库中所有分区的信息 dba_free_space:所有表空间中的自由分区 dba_indexs:关于数据库中所有索引的描述 dba_ind_columns:在所有表及聚集上压缩索引的列 dba_objects:数据库中所有的对象 dba_...
oracle 数据库的表分区操作实例,适合学习操作对表进行分区。
3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 8. ORACLE的数据类型 9. Oracle数据库碎片整理 ...
oracle数据库表按年分区脚本实战例子,特点:上手性好,易二次开发和调试。
ORACLE数据库优化之分区技术.pdf
Oracle数据库分区表操作方法Oracle数据库分区表操作方法
1z0-033-13 关于自动段空间管理 ext 与oracle 空间使用 percent oracle块参数 行迁移问题 什么时间进行索引重组 优化性能 13 1z0-033-15 讨论不同类型索引 索引组织表(簇化表) OLTP 有什么性质要求 13 1z0-033-18-...
Oracle_数据库分区技术经验分享 很不错 讲的比较深入 很高端的
第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...