[发明专利]一种SQL语句执行方法、系统、终端及介质在审
| 申请号: | 202011480506.9 | 申请日: | 2020-12-15 |
| 公开(公告)号: | CN112579637A | 公开(公告)日: | 2021-03-30 |
| 发明(设计)人: | 陈楚坤 | 申请(专利权)人: | 深圳市汉云科技有限公司 |
| 主分类号: | G06F16/2453 | 分类号: | G06F16/2453;G06F16/27 |
| 代理公司: | 深圳市特讯知识产权代理事务所(普通合伙) 44653 | 代理人: | 何明生 |
| 地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 sql 语句 执行 方法 系统 终端 介质 | ||
本发明提供一种SQL语句执行方法、系统、终端及介质,该方法通过获取待下发SQL语句及若干个目标连接对象,将该待下发SQL语句通过目标连接对象发送到目标节点,生成SQL发送结果,获取目标消息,并生成最终执行结果,将执行SQL分成两阶段的方式,避免了多线程的开销,也避免了异步编程的复杂性,可以解决相关技术中MPP分布式数据库每个节点执行的任务往往都比较重,需要花费较长的执行时间,因此若使用同步阻塞的API去串行的执行,性能会很低,对于分布式数据库多线程的方案,开销较大,每个执行的SQL都需要开启一个线程,效率较低,实现了提升了性能,降低并发多线程的开销,简单方便。
技术领域
本发明涉及计算机技术领域,特别是涉及一种SQL语句执行方法、系统、终端及介质。
背景技术
MPP分布式数据库通常基于成熟的单体数据库实现,如MYSQL。由于目前的单体数据库提供的客户端库都为阻塞的同步API。常规的并发执行方案是使用多线程来实现,每个线程执行一个SQL,最后再对结果进行汇集。
对于多线程的方案,开销较大,每个执行的SQL都需要开启一个线程,效率较低。
发明内容
本发明的主要目的在于提供一种SQL语句执行方法、系统、终端及介质,旨在解决由于相关技术中对于分布式数据库多线程的方案,开销较大,每个执行的SQL都需要开启一个线程,效率较低的技术问题。
为了解决上述技术问题,提供了一种SQL语句执行方法,包括:
获取待下发SQL语句,及若干个目标连接对象;
将所述待下发SQL语句通过所述目标连接对象发送到各目标节点,并生成SQL发送结果;
获取目标消息,并生成最终执行结果,所述目标消息包括取消任务消息或各所述目标节点的节点执行结果。
可选的,所述获取目标消息,并生成最终执行结果包括以下任意之一:
若所述目标消息包括各所述目标节点的节点执行结果,根据各所述节点执行结果生成结果集,所述最终执行结果包括所述结果集;
若所述目标消息包括取消任务消息,所述最终执行结果包括任务取消。
可选的,各所述节点执行结果的获取方式如下:
获取一个所述目标节点的节点执行结果;
若当前未获取到所述目标消息,继续获取下一个所述目标节点的节点执行结果,直至各目标节点的节点执行结果均被获取到。
可选的,还包括:
若当前获取到所述目标消息,且所述目标消息包括取消任务消息,停止获取下一个所述目标节点的节点执行结果,所述最终执行结果包括任务取消。
可选的,各所述节点执行结果的获取方式如下:
分别初始化poll对象及管道,并通过所述poll对象监听所述管道的可读事件,所述管道的可读事件包括写入所述取消任务消息;
通过所述poll对象监听各所述目标连接对象的可读事件,并通过poll_wait等待各所述目标连接对象的可读事件,所述目标连接对象的可读事件包括所述目标节点的节点执行结果;
获取一个所述目标连接对象的可读事件;
若所述管道不可读,获取下一个所述目标连接对象的可读事件,直至所有的所述目标对象的可读事件均被获取。
可选的若所述管道可读,所述最终执行结果包括任务取消。
可选的,若所述最终执行结果包括任务取消,还包括以下任意之一:
将所述目标连接对象加入任务取消队列;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市汉云科技有限公司,未经深圳市汉云科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011480506.9/2.html,转载请声明来源钻瓜专利网。





