[发明专利]用于CPU利用率和代码重构的查询优化器有效

专利信息
申请号: 201780035355.6 申请日: 2017-05-31
公开(公告)号: CN109313547B 公开(公告)日: 2022-04-15
发明(设计)人: E·艾瓦尼;G·塔米尔;A·埃鲁克;E·科勒 申请(专利权)人: 微软技术许可有限责任公司
主分类号: G06F8/72 分类号: G06F8/72
代理公司: 北京市金杜律师事务所 11256 代理人: 王茂华
地址: 美国华*** 国省代码: 暂无信息
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 用于 cpu 利用率 代码 查询 优化
【权利要求书】:

1.一种由计算设备执行的方法,包括:

检测程序代码中的多个查询;

扩展在所述程序代码中评估所述查询所使用的惰性;

在所述程序代码的运行期间,确定所述多个查询将要在其上执行的所述计算设备的运行条件;

确定针对其惰性已经被扩展的查询被配置为:检索数据集,排序所述数据集,并且利用已经被排序的所述数据集的第一元素或者所述数据集的最后元素中的至少一项;以及

在所述程序代码的运行期间,生成功能上等效的查询集,所述功能上等效的查询集相对于所述查询更高效地评估关于所确定的所述运行条件,惰性已经基于规则针对所述查询而被扩展,所述规则最小化所述数据集的检索,所述规则包括在规则集中,所述规则集响应于以下而基于所述计算设备的所述运行条件来确定所述功能上等效的查询集:所述确定针对其惰性已经被扩展的所述查询被配置为:检索所述数据集,排序所述数据集,以及利用已经被排序的所述数据集的所述第一元素或者所述数据集的所述最后元素中的所述至少一项,

所述功能上等效的查询集被配置为检索所述数据集的所述第一元素或者所述数据集的所述最后元素中的所述至少一项,以代替检索所述数据集的全部并且排序所述数据集。

2.根据权利要求1所述的方法,其中所述扩展在所述程序代码中评估所述查询所使用的惰性包括:

检测所述查询中评估可扩展的一个或多个查询;以及

形成包括所述评估可扩展的一个或多个查询的单个查询表达式。

3.根据权利要求1所述的方法,其中所述生成包括:

确定多个查询组件之间的公共逻辑上下文;以及

将所述规则集中对应于所述公共逻辑上下文的第二规则应用于所述多个查询组件。

4.根据权利要求1所述的方法,其中生成的所述功能上等效的查询集通过以下中的至少一项来相对于所述多个查询更高效地评估:与所述多个查询的查询结果相比,生成消耗更少的存储空间的查询结果;与所述多个查询相比,花费更少的时间来执行;与所述多个查询相比,消耗更少的网络带宽;或与所述多个查询相比,消耗更少的处理功率。

5.根据权利要求1所述的方法,其中应用规则集包括:

评估所述规则集中的多个规则组合到查询组件的应用,以生成多个候选的功能上等效的查询集;以及

选择所述多个候选的功能上等效的查询集中的具有最大效率增益的候选的功能上等效的查询集,作为生成的所述功能上等效的查询集。

6.根据权利要求1所述的方法,其中应用规则集包括:

在运行期间,评估规则集中的多个规则组合到查询组件的应用,以生成多个候选的功能上等效的查询集;以及

在运行期间,选择多个候选的功能上等效的查询集中的具有最大效率增益的候选的功能上等效的查询集,作为生成的所述功能上等效的查询集。

7.根据权利要求6所述的方法,其中由所述候选的功能上等效的查询集中的一个或多个提供的所述效率增益至少部分地取决于运行时的执行条件。

8.根据权利要求1所述的方法,进一步包括:

使用机器学习生成用以添加到所述规则集的至少一个规则。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201780035355.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top