签到成功

知道了

CNDBA社区CNDBA社区

Oracle 性能优化之 四种数据处理方式 说明

2021-01-23 09:59 478 0 原创 Oracle 19c
作者: Dave

Oracle 数据库不同的数据处理方式与数据库的性能有着很大的关系。 目前Oracle 数据库有如下四种处理方式。

https://www.cndba.cn/dave/article/4361

处理少量数据时使用:

1.Row by row 逐行:

这种方式使用一个线程/进程,一次处理一行数据,适用于OLTP中很少量数据的处理。

2.Arrays 数组:

这种方式也是使用一个线程/进程进行处理,但是一次处理一组数据,比row by row的效率要高很多,在OLTP场景中,能用Arrays方式就用arrays 的方法。https://www.cndba.cn/dave/article/4361https://www.cndba.cn/dave/article/4361

关于arrays的测试,在之前的博客有说明,参考:https://www.cndba.cn/dave/article/4361

Oracle arraysize 和 fetch size 参数 与 性能优化 说明
https://www.cndba.cn/Dave/article/1533https://www.cndba.cn/dave/article/4361

在使用SQL*Plus实可以设置SET ARRAYSIZE,如果是Java应用,可以通过设置Connection.SetdefaultRowPrefetch(n)来实现。

处理大量数据时使用:

3.Manual Parallelism 手动并行

该方法实施起来有点复杂,同时在多线程上平均分配工作负载也是个很大的挑战,而且多线程对数据库对象执行相同的操作时也可能出现争用问题。https://www.cndba.cn/dave/article/4361

4.Set based processing 基于集合的处理

该方法可以使用SQL 定义结果,是数据库里处理数据最高效的方法,在处理大量数据时,能用set based的方法就要用set based的方法。

set based 方式高效有如下原因:https://www.cndba.cn/dave/article/4361https://www.cndba.cn/dave/article/4361

https://www.cndba.cn/dave/article/4361

1.它是按组或行集来处理数据。
2.使用SQL定义结果,让数据库决定怎么去执行。
3.以集合为单位,数据库可以高效的处理数据。 这种方式将数据直接在数据库内部处理,不需要在网络上进行移动,同时可以使用Hash joins、并行查询和DML,从而可以高效的处理数据。https://www.cndba.cn/dave/article/4361

常见的set based 的SQL 操作如下:

create table as select 
insert /*+ append */ select
intersect
minus
exists
not exists
windows functions
multi-table inserts
outer joins

Oracle 官方手册对set 操作也有说明,如下:

Set Operators
https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Set-Operators.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Dave

Dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 1902
    原创
  • 2
    翻译
  • 456
    转载
  • 131
    评论
  • 访问:3641742次
  • 积分:3137
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by ZhiXinTech · 皖ICP备19020168号·

        QQ交流群