
并行度的优点就是能够最大限度的利用机器的多个cpu资源,是多个cpu同时工作,从而达到提高数据库工作效率的目的。在系统空闲时间,使用并行是个不错的选择,但是好东西总是相对而言,没有绝对的好坏,不当的使用,同样会引起数据库的新的问题产生。
1、 此参数的大小设置
orcl@ SCOTT>select table_name,degree from user_tables
TABLE_NAME DEGREE
------------------------------ --------------------
T1 1
TAB_REGISTER1
EMP 1
EMP_BAK 1
SALGRADE1
BONUS 1
DEPT1
LETTER_USER 1
T2 1
BASE_LOG1
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)
4FROM emp,dept
5 WHERE emp.deptno=dept.deptno
6 GROUP BY 1
直接用hint即可。例如:select /*+parallel(o2)*/* from t_objects o
其中o为要开启并行的表的别名,2为并行度。
不过不一定会提升效率,一般查询中使用parallel的情景如下:
需要大量的 表的扫描、连接或者分区索引扫描。
聚合 *** 作(计数)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)