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性能优化还包括索引的建立与管理,分区策略的运用,回滚段的优化,以及查询执行计划的控制等。索引能加速数据检索,但过度的索引会增加写操作的开销,需权衡利弊。分区策略可将大表分解,提高...
Oracle企业DBA(Database Administrator)性能优化是数据库管理领域中的核心任务,对于保障系统的高效运行至关重要。Oracle数据库作为全球广泛使用的数据库系统,其性能优化涉及多个层面,包括SQL查询优化、存储优化...
Oracle DBA 手记:数据库诊断案例与性能优化实践是Oracle数据库管理系统(Database Administration System)的实践指南,旨在帮助DBA(DataBase Administrator)更好地诊断和优化数据库性能。以下是该资源的知识点...
《Oracle DBA手记:数据库诊断案例与性能优化实践》一书是针对Oracle数据库管理员(DBA)的重要参考资料,由一线Oracle DBA根据实际工作经验精心策划。书中涵盖了Oracle数据库的诊断技巧、性能优化策略以及实战案例...
《ORACLE数据库设计与优化》 Oracle数据库是全球广泛使用的大型关系型数据库系统之一,它在数据存储、处理和管理方面具有强大的功能。本主题主要探讨Oracle数据库的设计原则和优化策略,以提升系统的性能和效率。 ...
ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其性能优化是DBA(数据库管理员)和系统管理员关注的重要领域。盖国强先生的《Oracle数据库性能优化》一书深入浅出地探讨了这个主题,旨在帮助读者理解...
6. **性能监控与优化**:讲解如何使用Oracle Enterprise Manager、SQL*Plus和AWR报告进行性能监控,以及如何通过索引、物化视图、分区、绑定变量等方式优化SQL性能。 7. **备份与恢复**:阐述RMAN(Recovery ...
《Oracle数据库性能优化的艺术》是资深专家文平的力作,该书全面深入地探讨了如何在Oracle数据库环境中实现性能的最优化。Oracle数据库作为业界广泛使用的大型关系型数据库管理系统,其性能优化对于企业的业务运行至...
Oracle数据库性能优化是确保数据库高效运行的关键环节,尤其是在处理大量数据和高并发访问的环境中。Oracle作为业界领先的数据库管理系统,其性能优化策略涵盖多个层面,包括系统配置、数据库设计、SQL语句优化、...
《Oracle DBA手记:数据库诊断案例与性能优化实践》是一本专为Oracle数据库管理员(DBA)编写的实战指南,旨在帮助读者深入理解和掌握Oracle数据库的诊断技巧以及性能优化方法。书中涵盖了一系列真实的数据库问题...
针对你提供的信息,我们可以深入探讨数据库试题的相关知识点,这将帮助你更好地理解和掌握数据库原理及应用。 第一部分:数据库基础 1. 数据库概念:数据库(Database)是一个有组织、可共享、具有尽可能小的冗余度...
Oracle数据库性能优化是数据库管理员(DBA)和IT专业人士必须掌握的核心技能之一。通过理解Oracle数据库的内部工作机制,并结合实际案例分析,可以系统性地提升数据库的性能表现。以下将从多个角度深入探讨Oracle...
《Oracle数据库性能优化实践指南》是一本专注于Oracle数据库性能调优的专业书籍,旨在帮助读者深入理解和掌握如何在实际环境中提升Oracle数据库的运行效率。Oracle数据库是全球广泛使用的大型企业级数据库管理系统,...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其性能优化是一项关键任务,直接影响到系统的响应速度、资源利用率和整体稳定性。本合集包含了11个文档,全面涵盖了Oracle数据库性能优化的各种方面,旨在...
"Oracle数据库分区优化技术研究与应用.pdf" Oracle数据库分区优化技术是指通过将大型数据库对象分解为多个小的、易于管理的实体,以提高数据库性能、可用性和维护性的一种技术。该技术可以解决大型数据库对象管理...
Oracle数据库的优化是一个重要的议题,尤其在处理大规模数据时,分区技术显得尤为关键。分区是Oracle数据库提供的一种高效管理超大型表和索引的方法。它将大表和索引分割成多个可管理的小块,以提高数据访问性能,...
"Oracle数据库性能优化与运维最佳实践"的主题涵盖了如何确保Oracle数据库高效、稳定运行的关键技术和策略。 首先,性能优化涉及多个层面,包括SQL查询优化、存储结构优化、索引设计以及数据库参数调整。SQL查询优化...
Oracle 10G数据库性能监控与优化是数据库管理员在日常工作中必须掌握的关键技能。Oracle数据库的性能直接影响到应用程序的响应速度和整体系统效率。以下是一些核心知识点的详细解释: 1. **表空间使用率监控**: ...