然后自己网上查了一下,理解ORACLE并发技术可以将一个大任务分解为多个小任务由多个进程共同完成。合理地使用并发可以充分利用系统资源。
参考http://blog.itpub.net/18474/viewspace-1060729/
适用场合:
条件:1)大的任务,如全表扫描大表2)系统资源足够场合:1)OLTP系统,有大量用户和session,2)数据仓库系统
Parallel query并发查询:
1)修改表属性
2)使用hint,select /*+parallel(t,8)*/ * from table t
即开8个进程,这个可以自己设置,经理讲这个涉及到排队,让自己的查询先执行(不知道是不是这样)
并发与空间浪费:
Parallel DDL以及某些PDML依赖于direct path load,即绕过databuffer直接写数据文件。例如,create table as select ,insert /*+APPEND */,
这会形成空间浪费,例如倒入1010M数据,每个extent 100m,direct path load会新分配100m 的extent来存放数据(如果有小于100m的extent,常规insert可以用这些空间)。假设10个并发,每个并发倒入101M数据,会创建2个extent,则总共会创建20个extent,则形成990m空间浪费。一方面浪费了空间(如果表创建之后有常规insert,则能使用这些空间),另一方面全表扫描时会搜索这些空的extent,这也降低了全表扫描的速度。
表空间的extent管理有两种方式:
1)unform size,则每个extent大小相同;uniform方式不支持extent trimming,
2)autoallocate是oracle 根据内部机制决定extent大小。而autoallocate在parallel dll中用到 extent trimming,减少空间浪费。
因此在频繁使用parallel DDL操作的表空间上,要么减少uniform size每个extent的大小,要么使用autoallocate ,以减少空间浪费。