接上文:如何配置Oracle并行处理(上) “Parallel”关键字 “PARALLEL ”关键字可以调用并行处理。在最简单的格式中,该关键字不需要参数,请看下面的例子: 图5 增加DOP引起系统CPU等待时间段的增加。 这种写法是合法的,但是并非总是必须在关键字中指定表名或别名: SELECT /*+ parallel(s) */ * FROM sh.sales s 该关键字可以请求指定的DOP值: SELECT /*+ parallel(s,8) */ * FROM sh.sales s; “NOPARALLEL ”关键字可以被用来禁用并行处理: SE……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
“Parallel”关键字
“PARALLEL ”关键字可以调用并行处理。在最简单的格式中,该关键字不需要参数,请看下面的例子:
图5 增加DOP引起系统CPU等待时间段的增加。
这种写法是合法的,但是并非总是必须在关键字中指定表名或别名:
SELECT /*+ parallel(s) */ * FROM sh.sales s
该关键字可以请求指定的DOP值:
SELECT /*+ parallel(s,8) */ * FROM sh.sales s;
“NOPARALLEL ”关键字可以被用来禁用并行处理:
SELECT /*+ noparallel */ COUNT ( * ) FROM sales;
在11g R2中,“AUTO”选项允许你请求“AUTO”设置“PARALLEL_DEGREE_POLICY”用来计算DOP:
SELECT /*+ parallel(auto) */ COUNT ( * ) FROM sales;
对于临时查询的执行,你可能想设置明确的DOP。然而,对于内嵌到应用程序中的SQL,这可能不是个好主意,因为该SQL不太可能适应计算机配置(实例有更多可用CPU),负载(更多并发会话)或者配置(并行伺服数量或者默认DOP)的变更。对于嵌入的SQL,最好的做法可能是省略明确的DOP或者利用“AUTO”关键字(在Oracle 11g R2和更高版本中支持)。
并行配置参数
确定最佳DOP值是一项艰巨的任务,在考虑到并发系统的时候尤其如此。幸运的是,Oracle为使这项工作自动化投入了巨大的努力。每次Oracle发布都增加了智能层面的自动化并行配置。在一般情况下,在尝试手工配置自动处理之前,你应该试试Oracle自动分配功能。
不过,进行重要的调整是可能的;下面列出了重要的配置参数,你可以利用它们调整优化并行SQL:
parallel_adaptive_multi_user
|
当设置为“TRUE”时,Oracle将根据该系统的负载调整DOP。在负载较重的系统中,Oracle将降低请求的或者默认的DOP。 |
parallel_degree_limit |
在Oracle 11g和更高版本中,(该参数)设置对DOP能达到的绝对值限制。CPU阻止DOP超过的值是由“parallel_threads_per_cpu”参数指定的。IO值设置了最大的IO限制,是通过运行存储过程“DBMS_ RESOURCE_MANAGER.CALIBRATE_IO”得到的。“AUTO”允许Oracle自己选择一个值。对应于具体DOP值的整数值也可能被指定。 |
parallel_degree_policy |
在11g R2和以后的版本中,这个参数控制DOP计算的方式。设置为“MANUAL”值等价于11.1以及更早版本中的处理方式。如果设置为“AUTO”,DOP将基于SQL语句的操作类型和表大小进行计算。“AUTO”还可以使并行查询从缓存中提取数据,而不是利用直接路径IO,而且如果请求的DOP执行不是立即可用的话将会把并行处理排入队列等待。 |
parallel_execution_message_size |
在参与并行处理的进程之间设置用于交互的缓存区大小。 |
parallel_force_local | 对于Oracle 11g R2之后的版本,这个参数如果设置为“TRUE”,会阻碍RAC集群上的多实例并行机制。 |
parallel_io_cap_enabled | 这个11g的参数如果设置为“TRUE”的话,将把DOP限制为Oracle认为IO子系统可以支持的值。要使用这个参数,你需要首先用存储过程“DBMS_RESOURCE_MANAGER.CALIBRATE_IO”算出IO限制。 |
parallel_max_servers | 可以启动并行服务器的最大数量。这提供了对于可以执行并发并行操作数量的绝对限制。 |
parallel_min_percent | 如果设置为非零值,这个参数决定了对于查询DOP接受的最小值。由于系统负载或者其它也使用并行服务器池的并行处理的原因,如果请求的DOP或者设定的DOP不能被提供出来,DOP将只会降低“PARALLEL_MIN_ PERCENT.”的值。例如,如果你的查询请求DOP值为8,而只有5个可用(5 / 8 = 62%),那么如果“PARALLEL_ MIN_PERCENT”值小于62,你的查询将会并行执行。如果“PARALLEL_ MIN_PERCENT”值大于62,你的语句将出错终止,或者如果“PARALLEL_DEGREE_ POLICY”被设置为“AUTO”,那将会把该任务放到队列后续执行。 |
parallel_min_servers | 并行服务器的最小数量,该数值会在数据库第一次启动时被初始化。 |
parallel_min_time_threshold | 指定某个SQL语句需要的运行时间超过多少(单位是秒)就自动并行化处理。如果对SQL语句运行时间的估算值超过了这个门槛,Oracle就自动并行化处理该SQL。默认值“AUTO”会让Oracle来自动计算一个值。 |
parallel_threads_per_cpu | 设置每个CPU可以应用的并行线程数量。Oracle通常会限制DOP以便不会超过这个限制。 |
作者
翻译
相关推荐
-
在Oracle RAC和Data Guard中完成镜像
Oracle Data Guard中的保护模式与其他的工具有些不同,但它实现的结果和镜像类似。无需使用Oracle RAC加上SAN镜像的模式。
-
确保Oracle 11g R2数据库高可用性
今年三月份在甲骨文出版的《Oracle 11g R2数据库高可用性》一书中,作者Scott Jesse向我们介绍了Oracle 11g R2的高可用性功能增强及其意义。
-
如何把Oracle XML数据分解为关系型表
Oracle数据库专家们必须经常提供数据给关系型应用,不管是文档为中心的非结构化XML数据还是数据为中心的结构化XML数据。
-
甲骨文开放Oracle 11g R2数据库免费版下载
甲骨文近期发布了Oracle Database 11.2 Express Edition测试版,并对注册用户开放了免费的下载。