优化场景
目前GBase集群内Update采用全列替换方式,即更新字段全列数据重新组织DC形成文件(包括过滤条件匹配到和未匹配到的所有数据),替换原有全列文件。
随着业务数据积累,尤其是部分G表数据量已达数百亿,对G表执行Update操作的原意是加工增量数据,但由于全列替换的原因,造成耗时较长。
在GDS层的业务脚本中,存在类似如下的业务流程:
1. 执行INSERT,向目标表插入增量数据
Insert G_XXXX_ACCT_INCOME_DAY
(
S_DATE,
CURR_CODE,
ACCT_ORG,
ACCT_NO,
CUST_NO,
BILL_DATE,
INT_BNP,
SVC_BNP,
LATE_CHG_BNP,
INTEREST,
MERCH_INCOME,
ANNUAL_FEE,
SPLOAN_FEE,
DELAY_FEE,
CASH_FEE,
OTHER_FEE,
ALL_INCOME,
FUND_COST
)
Select
'20150505',
curr.CURR_CODE as CURR_CODE,
acct.ACCT_ORG,
acct.ACCT_NO,
acct.CUST_NO,
acct.CARD_BILL_DATE,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
From BD_XXXX_ACCT acct
left join g_XX_ccard_currcode curr on curr.ORI_ORG=acct.ACCT_ORG AND STARTDATE <='20140101' AND ENDDATE>='201401