数据刷新中的并行改进(三) (r5笔记第79天)

在之前的两篇中分享了数据刷新的并行改进,其实在对很多的数据表做了切分之后,数据刷新的总体负载就基本是平均的了。如何使得刷新的过程更加平滑和完整,我们还是需要做一些工作的。首先各个节点中都存在相同的表(其实是物化视图),所以在刷新的时候还是基本靠串行的思路来做并行的事情,怎么理解呢。可以参见下面的图片。0?wx_fmt=png在有多个节点的情况下,数据从第1个节点到第3个节点刷新的时候,内部还是串行的,只是在第1个节点刷新的时候使用了并行,把700多个表分成了多个刷新的进程来并行处理。对于各个节点之间的刷新还是串行的过程。就如同我在图中用绿色标注的那样。我们先来实现节点的串行,可以使用如下的脚本来使得某个脚本在对应的节点中都会依次运行。#ref_active.shsqlplus /nolog <<EOFconn prdrefssca/xxxxx@xxxxset timing onset echo onspool $1_prdrefssca.log@$1spool offconn prdusg1ssca/x@xxxxspool $1_prdusg1ssca.log@$1spool offconn prdusg2ssca/xx@xxxspool $1_prdusg2ssca.log@$1spool offconn prdusg3ssca/xxxx@xxxxspool $1_prdusg3ssca.log@$1spool offconn prdusg4ssca/xxx@xxxxspool $1_prdusg4ssca.log@$1spool offEOF在这个基础上,使用使用并行切分的脚本split_parall.sh 把多个表切分为指定的并行,比如700多个表按照数据情况切分成10个并行的刷新进程。然后就可以把脚本 ref_active.sh利用起来,生成动态的脚本,其实这个过程中会动态生成一些脚本。类似这样的形式 ksh ref_active.sh par1_tab_parall.lst.sql怎么具体实现呢。##### batch_split_parall.shtmp_ext_base_dir=`pwd`ext_base_dir=`dirname $tmp_ext_base_dir`ksh $ext_base_dir/append/split_parall.sh tab_parall.lst $1for i in {1..$1}docat ./par${i}_tab_parall.lstecho "ksh ref_active.sh " par${i}_tab_parall.lst.sql > tmp_par${i}_tab_parall.shecho "ksh " tmp_par${i}_tab_parall.sh "&" >> ref_all_active.shdone生成的动态脚本如下:-rw-r--r-- 1 xxxxx dba 2132 Jun 25 19:07 par10_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4690 Jun 25 19:07 par10_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 101 Jun 25 19:06 par1_tab_parall.lst-rw-r--r-- 1 xxxxx dba 53 Jun 25 19:07 par1_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 976 Jun 25 19:07 par2_tab_parall.lst-rw-r--r-- 1 xxxxx dba 2101 Jun 25 19:07 par2_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 1997 Jun 25 19:07 par3_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4345 Jun 25 19:07 par3_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 2077 Jun 25 19:07 par4_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4607 Jun 25 19:07 par4_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 2055 Jun 25 19:07 par5_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4557 Jun 25 19:07 par5_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 2016 Jun 25 19:07 par6_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4489 Jun 25 19:07 par6_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 2059 Jun 25 19:07 par7_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4618 Jun 25 19:07 par7_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 2038 Jun 25 19:07 par8_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4568 Jun 25 19:07 par8_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 2118 Jun 25 19:07 par9_tab_parall.lst-rw-r--r-- 1 xxxxx dba 4647 Jun 25 19:07 par9_tab_parall.lst.sql-rw-r--r-- 1 xxxxx dba 416 Jun 25 18:29 ref_active.sh-rw-r--r-- 1 xxxxx dba 301 Jun 25 19:07 ref_all_active.sh-rw-r--r-- 1 xxxxx dba 73730 Jun 25 19:06 tab_parall.lst-rw-r--r-- 1 xxxxx dba 2096 Jun 25 18:25 split_parall.sh-rw-r--r-- 1 xxxxx dba 44 Jun 25 19:07 tmp_par10_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par1_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par2_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par3_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par4_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par5_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par6_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par7_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par8_tab_parall.sh-rw-r--r-- 1 xxxxx dba 43 Jun 25 19:07 tmp_par9_tab_parall.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值