公开/公告号CN105512184A
专利类型发明专利
公开/公告日2016-04-20
原文格式PDF
申请/专利权人 国云科技股份有限公司;
申请/专利号CN201510830217.X
申请日2015-11-25
分类号G06F17/30(20060101);
代理机构广东莞信律师事务所;
代理人余伦
地址 523808 广东省东莞市松山湖科技产业园区松科苑14号楼
入库时间 2023-12-18 15:29:11
法律状态公告日
法律状态信息
法律状态
2019-06-21
授权
授权
2019-05-14
著录事项变更 IPC(主分类):G06F16/2455 变更前: 变更后: 申请日:20151125
著录事项变更
2016-05-18
实质审查的生效 IPC(主分类):G06F17/30 申请日:20151125
实质审查的生效
2016-04-20
公开
公开
技术领域
本发明涉及关系数据库的查询缓存优化技术领域,具体涉及一种通过机器 学习提高应用系统在关系数据库的空间与时间效率的方法。
背景技术
数据查询缓存在各种关系数据库上普遍都有实现,实现过程基本是,查询 数据时,通过解析查询语句,判断要查询的数据库是否存在于缓存中,如果存 在则直接从缓存中读取数据并返回;如果数据不存在于缓存中,则从数据文件 中读取数据,并保存到缓存中用于下次的数据查询。在这个实现的过程中,由 于没有判断数据的读取频率、读取的字段、条件等,在每次读取数据时,都要 进行数据的缓存,所以关系数据库每次都要维护一次缓存的操作,如果缓存空 间不足,还每次要进行LFU的替换算法,这导致在每次查询时,数据缓存的空 间与时间效率较低,需要进行改进。
发明内容
本发明通过预先机器学习,从而得出缓存阀值计算公式用于数据查询时的 阀值计算,判断是否要对数据进行缓存,从而优化了传统数据库在查询是每次 都要进行缓存的问题,减少了数据缓存的空间与每次缓存时的中断替换时间, 提高了数据查询的效率。
本发明解决上述技术问题的技术方案是:
通过分析特定应用系统的查询语句,把查询语句分解为解析树,通过解析 树把查询语句按查询字段、查询表、查询条件,相应应用MLFU、LFU、FP-groupth 算法,按查询字段、查询表、查询条件作为输入,通过回归算法计算得出查询 语句的缓存阀值计算公式;在应用系统进行查询时,通过阀值计算公式,判断 查询的数据是否可能在缓存空间中、或是否需要缓存到空间上。
对应用系统特定的查询语句的分析、通过机器学习用回归算法得出缓存阀 值计算公式后实现数据查询的优化,分为查询语句机器学习与查询缓存策略两 部分。
在查询语句机器学习时,需把应用系统的所有查询语句获取到,并对所有 的查询语句按查询字段、查询表、查询条件分解为解析树。
在所有查询语句分解为解析树后,查询字段、查询表、查询条件分别应用 MLFU、LFU、FP-Groupth算法,分别计算出各种查询字段、查询表、查询条件 在所有查询语句中的比率,并按从高到低的顺序排序;
分析查询字段、查询表、查询条件的数量,对于大于一定比率的查询语句, 表示是经常要使用到的,在进行打分时,设置为1,低于一定比率的查询语句, 表示不经常使用到,在打分时设置为0,这样三种情况,得出了从0到7的8种 分数;
通过查询字段、查询表、查询条件的占所有查询结果的比率,与最终的0 到7的打分,形成最终的回归分析基础数据,从而得出按查询字段、查询表、 查询条件作为输入的查询语句是否需要缓存的阀值计算公式,用于数据查询时 的缓存参考。
在通过机器学习得出缓存阀值计算公式后,把计算公式写入到缓存系统中, 在数据查询输入语句时,系统先对查询语句按查询字段、查询表、查询条件进 行分解成解析树,并获取查询字段、查询表、查询条件的在所有查询语句中的 占比,输入缓存阀值计算公式,得出查询语句的缓存阀值;
当缓存阀值小于应用系统指定的定值时,表示查询语句相对比较少使用到, 所以此查询语句查询的数据不需要缓存,在缓存空间上也不会存在,数据直接 从数据文件上读取,并返回给用户;
当缓存阀值大于等于应用系统指定的定值时,表示查询语句会经常使用到, 此查询语句的数据需缓存到空间上,用于以后的数据查询,此时,会在缓存空 间上查询数据是否已经缓存,如果缓存,更新最后使用时间并把数据返回给用 户;如果没有缓存,需从数据文件上直接读取,并判断缓存空间是否足够放此 数据,如果缓存空间不够,需把缓存空间上的数据按LFU算法,把最久没使用 的数据替换出去,用于最新的数据的缓存,缓存操作完成后,更新最后使用时 间并把数据返回给用户,从而实现数据的查询操作。
本发明方法是通过对特定应用系统的查询语句进行分析,因为特定的应用 系统查询语句是基本固定的,通过对查询语句按查询字段、查询表、查询条件, 按MLFU、LFU、FP-Groupth等算法,用机器学习的方法,回归计算得出数据 缓存阀值的计算公式,在每次数据查询时,首先对查询语句进行分析并计算出 缓存阀值,如果阀值低于缓存值,则数据直接从数据文件中读取并返回,如果 阀值大于等于缓存值,则判断数据是否已经存在,如果已经缓存,直接读取, 如果未缓存,则从数据块中读取数据后,并保存到空间上,如果空间不足,则 按LFU的原则进行替换,从而避免了所有的数据都要进行替换,就算读取次数 很小的数据也要做一次缓存、或可能替换缓存中的数据的操作,从而极大提高 了数据缓存时的空间与时间的效率。通过此方法,本发明优化了传统数据库在 查询是每次都要进行缓存的问题,从而减少了数据缓存的空间与每次缓存时的 中断替换时间,提高了数据查询的效率。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明数据查询缓存流程图;
图2是本发明与现有方法关系数据库缓存的空间对比图;
图3是本发明与现有方法关系数据库缓存的时间对比图。
具体实施方式
见图1所示,本发明的实现主要包括两部分,机器学习与数据查询,两部 分的具体步骤如下:
一、机器学习:
步骤一、获取特定应用系统的所有查询语句;
步骤二、对所有的查询语句、按查询的字段、查询的表、查询的条件进行 分析,形成解析树,对于MLFU、LFU、FP-Groupth三种算法,计算出各自的 在所有查询语句中的占比;
步骤三、通过对比各查询语句的占比,通过打分,把所有查询语句的打分 设置为0至7;
步骤四、通过步骤二与步骤三,在线性回归上最终得出缓存阀值的计算公 工,用于缓存时的阀值计算,如:
f(x)=81.3463*x+2.0715*y+21.9744*z-0.1356
二、数据查询缓存过程:
步骤一、输入应用系统查询语句,并对查询语句按查询字段、查询表、查 询条件进行分析,形成解析树;
步骤二、对查询语句按查询字段、查询表、查询条件进行打分,按阀值计 算公式算出缓存阀值;
步骤三、如果缓存阀值小于固定值(如:4.5),则表示此查询的数据块无需 缓存,直接从数据文件上读取数据块并返回;
步骤四、如果缓存阀值大于等于固定值(如:4.5),则表示此查询的数据块 需缓存,数据块有可能已经缓存于空间上,如果已经缓存,则直接从缓存空间 中读取;如果缓存空间中没有此数据块,则从数据文件中读取数据块,缓存到 空间上;如果缓存空间不够,则对已经存在的所有缓存按LFU替换出空间,用 于保存新的缓存;
步骤五、缓存操作完成后,返回查询的数据块;
如图2、3所示,是关系数据库缓存与本发明新算法缓存的空间与时间对比 数据;从图表对比可以看出;本发明的方法在空间占用与时间花费上都有明显 的提升。
机译: 一种减少错误域请求数量的方法,一种用于提高本地缓存服务器效率的方法以及一种用于在本地计算机上减少处理时间域请求的系统
机译: 通过使用对接方法在主处理线中布置清洁单元和干燥单元来提高空间效率的方法,是一种用于运输和处理工作的对接式系统,以及一种用于转移和处理方法的系统
机译: 一种室外换热器的降温控制方法,其通过通过确定室外换热器的管路的结冰时间来缩短实际结冰后的执行除霜时间来提高空调效率。