前端之家收集整理的这篇文章主要介绍了
关于ORACLE并发,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
经理早上秀了一把sql技巧,让SQL查询能缩短N倍时间,让我大吃一惊,原来经理这么牛(深藏不漏)。
然后自己网上查了一下,理解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 ,以减少空间浪费。
原文链接:https://www.f2er.com/oracle/210741.html