[发明专利]数据库查询方法、服务器和系统有效
申请号: | 201810162856.7 | 申请日: | 2018-02-26 |
公开(公告)号: | CN110309171B | 公开(公告)日: | 2021-08-20 |
发明(设计)人: | 陈由峰 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453;G06F16/2457 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 查询 方法 服务器 系统 | ||
本申请公开了一种数据库查询方法、服务器和系统,涉及数据库领域,用于防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。该数据库查询方法包括:接收查询语句;对所述查询语句进行解析以得到对应数据库平台的物理语法树,其中,所述物理语法树指适配所述数据库平台,并能够指示所述查询语句的语法结构的图形表示;根据所述物理语法树得到所述查询语句的复杂程度和待扫描的记录数;根据所述待扫描的记录数和复杂程度估计所述查询语句的资源消耗指数;根据所述资源消耗指数将所述查询语句加入对应的队列;按照资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。本申请实施例应用于数据库查询。
技术领域
本申请涉及数据库领域,尤其涉及一种数据库查询方法、服务器和系统。
背景技术
基于大数据的联机分析处理(Online Analysis Processing,OLAP)系统是数据库系统最主要的应用,专门用于支持复杂的分析操作,其一般按照用户提交查询语句的先后顺序来执行查询语句。例如,参照图1中所示,为现有技术中一种基于MyCat架构的数据库系统,MyCat是一个开源的分布式数据库系统,前端用户可以把它看作数据库代理,其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用Java数据库连接(Java DataBaseConnectivity,JDBC)协议与大多数主流数据库服务器例如结构化查询语言(StructuredQuery Language,SQL)、Oracle、Hive等服务器进行通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他主流数据库里。
无论是那种存储方式,在MyCat系统架构里,都是一个传统的数据库表,由于数据库的数据量较大,如果在先提交的慢查询语句比较复杂,将消耗很长时间,可能导致在后提交的耗时较少的简单查询语句也被迫阻塞很长时间,影响用户体验。
发明内容
本申请实施例提供一种数据库查询方法、服务器和系统,用于防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种数据库查询方法,该方法包括:接收查询语句;对查询语句进行解析以得到对应数据库平台的物理语法树,其中,物理语法树指适配数据库平台,并能够指示查询语句的语法结构的图形表示;根据物理语法树得到查询语句的复杂程度和待扫描的记录数;根据待扫描的记录数和复杂程度估计查询语句的资源消耗指数;根据资源消耗指数将查询语句加入对应的队列;按照资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。本申请实施例提供的数据库查询方法,将查询语句解析成物理语法树后,根据该物理语法树可以得到该查询语句的复杂程度和待扫描的记录数,进一步估计出该查询语句的资源消耗指数,按照资源消耗指数将该查询语句加入对应队列,在执行查询操作时,按照资源消耗从低至高的队列顺序来执行队列中的查询语句。可以令资源消耗少的查询语句先执行,而不是简单地按照提交时间顺序执行查询语句,防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。
在一种可能的实施方式中,对查询语句进行解析以得到语法树,包括:对查询语句进行解析得到逻辑语法树,逻辑语法树中包括供用户查找的逻辑字段和逻辑表;根据逻辑表配置对逻辑语法树解析得到各数据库平台对应的物理语法树,物理语法树中包括各数据库平台中实际存储的物理字段和物理表,逻辑表配置中包括逻辑字段、逻辑表与物理字段、物理表的映射关系。该实施方式具体实现了将查询语句解析成数据库平台对应的物理语法树。
在一种可能的实施方式中,根据物理语法树得到查询语句的复杂程度和待扫描的记录数,包括:根据物理语法树中的来自子句得到被查询的物理表的名称;根据物理表的名称从元数据系统中获取物理表中包括的待扫描的记录数;根据语法树中的操作的复杂程度计算得到查询语句的复杂程度。该实施方式具体实现了根据物理语法树得到查询语句的复杂程度和待扫描的记录数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810162856.7/2.html,转载请声明来源钻瓜专利网。