微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于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.jb51.cc/oracle/210741.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐