EsgynDB 2.5新特性之update using upsert

在已经发布的EsgynDB 2.5版本中,对update的性能做了优化。
从语法上,我们增加了新的语法update using upsert,详细语法如下,

update using upsert <tablename> set <colname>=<colvalue> where ...

从语义上,update using upsert采用是vsbb upsert批量提交的方式,类似于执行upsert using load语句。
从事务支持上,由于底层是转换为upsert using load方式,因此不支持事务一致性,也就是说如果update using upsert语句执行一半报错,那么已经更新的数据不会回滚。
从性能上,update using upsert可以实现比update快10x以上的性能优势。
从执行计划上,我们也可以看出update using upsert和update的执行计划的不同。update using upsert采用vsbb_upsert批量更新的方式,而update则采用traf_update逐行更新的方式。

//1 update using upsert
>>explain options 'f' update using upsert DAAS_GX.DMA_ENTTYPE_STAT_P1 set END_NUM=100;

LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
---- ---- ---- --------------------  --------  --------------------  ---------

5    .    6    root                            x                     5.03E+006
4    .    5    esp_exchange                    1:6(range)            5.03E+006
2    3    4    tuple_flow                                            5.03E+006
.    .    3    trafodion_vsbb_upser            DMA_ENTTYPE_STAT_P1   1.00E+000
1    .    2    sort                                                  5.03E+006
.    .    1    trafodion_scan                  DMA_ENTTYPE_STAT_P1   5.03E+006

//2 update
>>explain options 'f' update DAAS_GX.DMA_ENTTYPE_STAT_P1 set END_NUM=100;

LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
---- ---- ---- --------------------  --------  --------------------  ---------

4    .    5    root                            x                     5.03E+006
3    .    4    esp_exchange                    1:6(range)            5.03E+006
1    2    3    tuple_flow                                            5.03E+006
.    .    2    trafodion_update                DMA_ENTTYPE_STAT_P1   1.00E+000
.    .    1    trafodion_scan                  DMA_ENTTYPE_STAT_P1   5.03E+006

从限制条件上,最新版本中的update using upsert还不支持表上有索引的情况,如果表上有索引,那么它会自动转换为update,执行计划走trafodion_update。当然,后续版本会改进这一限制,也包括不支持事务的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值