[发明专利]一种数据库高频SQL查询方法、系统和存储介质有效
申请号: | 202110553953.0 | 申请日: | 2021-05-20 |
公开(公告)号: | CN113204564B | 公开(公告)日: | 2023-02-28 |
发明(设计)人: | 魏本帅;杜彦魁 | 申请(专利权)人: | 山东英信计算机技术有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2453;G06F16/2455 |
代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 张营磊 |
地址: | 250101 山东省济南市高新区*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 高频 sql 查询 方法 系统 存储 介质 | ||
本发明涉及一种数据库高频SQL查询方法、系统和存储介质,该方法包括以下步骤:S1:在数据库中抓取SQL相关信息,创建存储表;S2:创建触发器将SQL执行后的结果集存储到对应存储表中,触发器实时更新结果集并将更新后的结果集同步到存储表;S3:建立SQL ID与存储表之间的映射关系,生成映射表;S4:将存储表中的结果集数据进行分层存储。本发明减少SQL重复解析和重新生成结果集的时间,有效提高数据库高频SQL查询效率。
技术领域
本发明属于数据库技术领域,具体涉及一种数据库高频SQL查询方法、系统和存储介质。
背景技术
在数据库中通过SQL对表进行查询或多个表关联查询后的结果集可临时缓存到内存中,但随着内存中数据的增多,内存不能无限的缓存结果集,默认最近未被使用过的结果集会被挤出内存。如果再次对这个表或多个表进行关联查询时,就无法从内存中获取到结果集,需要从磁盘读取结果集再到内存中,从磁盘中读取数据的效率比在内存中读取的效率低很多。如果查询的结果集数据量比较大,可能会非常耗时,浪费时间。
如何将执行频率比较高的SQL查询结果集永久保存起来,以减少SQL的重复解析和重新生成结果集的时间;如何在内存中对缓存的结果集进一步优化提高查询效率;如何实现结果集的分层存储,以缓解内存空间资源的压力。以上为现有技术需要解决的问题。
有鉴于此,本发明提供一种数据库高频SQL查询方法、系统和存储介质,以解决现有技术存在的缺陷。
发明内容
针对现有数据库高频SQL查询效率低的问题,本发明提供一种数据库高频SQL查询方法、系统和存储介质,将执行频率比较高的SQL查询结果集永久保存起来,减少SQL的重复解析和重新生成结果集的时间,对缓存的结果集进一步优化提高查询效率,实现结果集的分层存储以缓解内存空间资源的压力。
为实现上述目的,本发明给出以下技术方案:
第一方面,本发明提供一种数据库高频SQL查询方法,包括以下步骤:
S1:在数据库中抓取SQL相关信息,创建存储表;
S2:创建触发器将SQL执行后的结果集存储到对应存储表中,触发器实时更新结果集并将更新后的结果集同步到存储表;
S3:建立SQL ID与存储表之间的映射关系,生成映射表;
S4:将存储表中的结果集数据进行分层存储。
作为优选,所述步骤S4完成后,触发存储表使得表中的结果集数据发生强制落盘行为,将数据备份到磁盘中;通过该步骤将结果集数据在内存、磁盘中各存储一份,保证数据不会丢失。
作为优选,所述步骤S1包括以下步骤:
在数据库中实时扫描获取SQL相关信息并记录下来;根据SQL的执行频率将SQL划分为高频SQL、中频SQL、中低频SQL和低频SQL;
分别为高频SQL、中频SQL和中低频SQL创建存储表,存储表的表名为SQL对应的SQLID。
通过步骤S1对SQL进行捕获,获取SQL ID、SQL执行次数等信息,并根据执行频率对SQL进行划分,为执行频率较高的SQL建立存储表。
作为优选,所述步骤S2包括以下步骤:
S2.1:创建触发器,触发器通过SQL ID跟踪该SQL的执行;
S2.2:该SQL执行完毕后,触发器将执行完毕的结果集数据导入以SQL ID命名的存储表中,做一次全量同步;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东英信计算机技术有限公司,未经山东英信计算机技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110553953.0/2.html,转载请声明来源钻瓜专利网。