如何查oracle并行度 oracle表的并行度

oracle设置表的并行度是什么意思

查看dba_tables数据字典时,可以发现有“DEGREE”字段,这个字段表示的就是数据表的并行度。这个参数的设置,关系着数据库的I/O,以及sql的执行效率。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、网站制作、广河网络推广、微信小程序开发、广河网络营销、广河企业策划、广河品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供广河建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

并行度的优点就是能够最大限度的利用机器的多个cpu资源,是多个cpu同时工作,从而达到提高数据库工作效率的目的。在系统空闲时间,使用并行是个不错的选择,但是好东西总是相对而言,没有绝对的好坏,不当的使用,同样会引起数据库的新的问题产生。

1、 此参数的大小设置

orcl@ SCOTT select table_name,degree from user_tables;

TABLE_NAME DEGREE

------------------------------ --------------------

T1 1

TAB_REGISTER 1

EMP 1

EMP_BAK 1

SALGRADE 1

BONUS 1

DEPT 1

LETTER_USER 1

T2 1

BASE_LOG 1

T 1

通过上例的例子大家可以观察,此参数的默认值为1,这个数值,我们认为的增加,当设置表的并行度非常高的时候,sql优化器将可能对表进行全表扫描,引起 Direct Path Read 等待 。

在使用并行查询前需要慎重考虑, 因为并行查询尽管能提高程序的响应时间, 但是会

消耗比较多的资源。 对于低配置的数据库服务器需要慎重。 此外, 需要确认并行度的设置要与 IO 系统的配置相符(建议并行度为 2~4 * CPU 数) 。

2、 并行度的修改

alter table t parallel(degree 1);------直接指定表的并行度

alter table t parallel; ----------设置表的并行度为default

3、 如何在sql语句中使用表的并行度,并选择合适的并行等级

示例:使用并行查询的执行计划

并行度为4

orcl@ SCOTT SELECT /*+ PARALLEL(4) */

2 MAX(sal),

3 AVG(comm)

4 FROM emp,dept

5 WHERE emp.deptno=dept.deptno

6 GROUP BY 1

如何配置Oracle并行处理

判断并行度

合适的并行度DOP对于良好的并行性能很关键。Oracle会按如下方式设定DOP:

1、如果指定或请求了并行执行,但是没有指定DOP,默认DOP会设置为该系统上CPU内核数量的两倍。对于RAC系统,DOP值会是整个集群内核数量的两倍。默认值是由配置参数“PARALLEL_ THREADS_PER_CPU”控制的。

2、对于Oracle 11g R2之后的版本,如果“ PARALLEL_DEGREE_POLICY”被设置为“AUTO”,Oracle将根据被执行的运行性质和涉及对象的大小自动调整DOP值。

3、如果“PARALLEL_ADAPTIVE_MULTI_USER”被设置为“TRUE”,Oracle将基于该系统的整个负载调整DOP。当系统承受更重的负载时,DOP值将会减少。

4、在Oracle 11g或者更高版本中,如果“PARALLEL_IO_CAP ”被设置为TRUE,Oracle将把DOP限制为IO子系统可以支持的值。这些IO子系统限制可以通过“DBMS_RESOURCE_ MANAGER.CALIBRATE_IO”存储过程计算。

5、DOP可以被指定到表或者索引一级,可以通过在“CREATE TABLE”,“CREATE INDEX”,“ALTER TABLE”或者“ALTER INDEX”中使用“PARALLEL ”从句来实现。

6、“PARALLEL ”关键字可以被用来指定某个查询中指定表的DOP。

7、不管任何其它设置,DOP不能超过“PARALLEL_MAX_SERVERS”可以支持的数量。对于大部分SQL语句,服务器数量需要是请求DOP的两倍。

如何查询oracle 数据库并行度

数据库表空间的大小?

SQLselect tablespace_name,sum(bytes)/1024/1024 from dba_data_files

group by tablespace_name;

TABLESPACE_NAME SUM(BYTES)/1024/1024

oracle 并行模式(parallel)

一般表数据量比较大(超过100万)时,可以使用parallel强制启动并行度来提升查询速度

用法:/*+parallel(table_short_name,cash_number)*/

可以加到insert、delete、update、select的后面来使用

比如:select /*+paralle(t,32)*/ from table t; table_short_name使用别名,Parallel后面的数字,越大,执行效率越高,一般用8,10,12,16,32。不过,数值越大,占用的资源也会相对增大。如果在查询where后的条件有加索引查询效率会大大提高。

oracle 建索引怎么开启并行?

建索引时,我们为了建索引快,会加上并行,加上并行之后,此列索引就会是并行了。访问有并行度的索引时,CBO可能可能会考虑并行执行,这可能会引发一些问题,如在服务器资源紧张的时候用并行会引起更加严重的争用。当使用并行后,需要把并行度改回来。\x0d\x0aSQL drop table test purge;\x0d\x0aSQL create table test as select * from dba_objects;\x0d\x0aSQL create index ind_t_object_id on test(object_id) parallel 4 ;\x0d\x0aSQL select s.degree\x0d\x0afrom dba_indexes s\x0d\x0awhere s.index_name = upper('ind_t_object_id');\x0d\x0aDEGREE\x0d\x0a----------------------------------------\x0d\x0a4\x0d\x0a\x0d\x0aSQL alter index ind_t_object_id noparallel;\x0d\x0a\x0d\x0aSQL select s.degree\x0d\x0afrom dba_indexes s\x0d\x0awhere s.index_name = upper('ind_t_object_id');\x0d\x0aDEGREE\x0d\x0a----------------------------------------\x0d\x0a1

oracle 怎样使用并行查询

直接用hint即可。例如:

select /*+parallel(o2)*/* from t_objects o

其中o为要开启并行的表的别名,2为并行度。

不过不一定会提升效率,一般查询中使用parallel的情景如下:

需要大量的 表的扫描、连接或者分区索引扫描。

聚合操作(计数)。


分享文章:如何查oracle并行度 oracle表的并行度
标题URL:http://scyanting.com/article/hjhido.html