| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> KunlunDB功能之insert/update/delete...returning语句 -> 正文阅读 |
|
[大数据]KunlunDB功能之insert/update/delete...returning语句 |
在一些业务场景中,用户需要插入、更新、删除一行或者多行目标数据行,然后获得自己刚刚插入、更新、删除之后的行或者其部分字段的值,包括部分字段构成的任意合法的表达式的值。 对于MySQL用户来说,要做到这一点,用户通常需要在一个显式的事务中执行update语句,然后使用相同的查询条件把update的语句取出来。 之所以要在显式事务中做,是为了防止其他并发的事务update了本连接刚刚update的行,那样的话,随后的select语句得到行就不是本连接刚刚update之后的行了,因为这些行又被其他事务更新过了。 而在Oracle和PostgreSQL数据库中,用户可以使用update/delete语句的returning子句,用一条语句完成上述工作。 这样的好处是可以提升效率,省去的开销包括发送一条select语句以及做目标行的查找等工作;省去的开销还包括操作显式事务的开销,也就是发送begin和commit语句的开销。 因此,使用update…returning语句预期可以比在显式事务中update行,然后select出来,能够提升性能10%以上。 所以这是一个很好的功能。事实上如果你搜索 “mysql update returning”,你还能搜到不少在MySQL中实现类似oracle/postgresql的单条update/delete语句的returning子句的文章,通过借助触发器和临时表等技巧和复杂的操作。 但是这些复杂的步骤导致语句执行效率也显著降低了,并且使用也不方便(需要对每个数据表创建触发器)。 为了提升用户的程序效率,降低用户的开发难度,提升用户使用KunlunDB的体验,我们在KunlunDB中也实现insert/update/delete语句的returning子句。 为此,我们在kunlun-storage中实现了insert/update/delete… returning语句供计算节点使用,并且在计算节点中基于PostgreSQL原有的insert/update/delete…returning 语句的实现,加入了对远程数据读写的支持。 这样,KunlunDB就具备了insert…returning、update…returning和delete…returning语句功能,分别返回insert语句插入的行,update语句更新后的行,以及返回delete语句删除的行,包括这些行的字段组成的任意合法的表达式的值。用户已经可以在KunlunDB上使用这些功能。 下图展示了这个很cool的功能。 首先,建表并填充数据: 现在我们执行update… returning语句: 然后执行delete… returning子句: 最后,explain一下update/delete… returning子句: -END-
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 5:47:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |