[发明专利]查询处理装置和查询处理方法有效
申请号: | 201210224460.3 | 申请日: | 2012-06-28 |
公开(公告)号: | CN102799651A | 公开(公告)日: | 2012-11-28 |
发明(设计)人: | 赵玉行 | 申请(专利权)人: | 用友软件股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京友联知识产权代理事务所(普通合伙) 11343 | 代理人: | 尚志峰;汪海屏 |
地址: | 100094 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 查询 处理 装置 方法 | ||
技术领域
本发明涉及数据查询技术领域,具体而言,涉及一种查询处理装置和一种查询处理方法。
背景技术
在大数据量OLTP(联机事务处理)系统中,根据给定的某些维度查询某一极值数据,如最新值、最小值,是非常占用系统资源,容易造成效率问题的操作。尤其在给定的维度不能够很好地对数据库表中的数据进行过滤时,效率问题会非常明显。
例如,在某ERP系统中,一张存放采购订单数据的表中有1000万条记录,某项业务操作中,要根据物料、供应商、采购组织三个维度查询最新(按订单日期)的一条采购价格记录,仅查询SQL语句在数据库系统中执行的时间就会达到10多秒钟。而这个查询只是本项业务操作的一个环节,整个过程下来,会发生较长时间等待,用户体验很差。
造成效率低的原因主要有:
1、表中的数据量大,一般都在千万级以上;
2、查询的维度不能够有效过滤数据,造成数据库系统要在整个表中进行扫描搜索相关数据;
3、数据库系统要对扫描出的数据再进行排序。
为提高这种查询操作的效率,当今主要的解决方案有以下几种:
1、在数据库表中添加索引;
2、根据时间维度分批递推查询;
3、将业务表数据进行压缩冗余存储。
第1种方案,是最简单的一种处理方法,在表中建上相关索引,索引字段主要包括那些常用的极值查询维度,例如上面所举例子,在物料、供应商、采购组织上建上联合索引。此种方案在给定的维度数据均匀分布的情况下会比较有效,数据库系统会使用索引极大提高扫描效率。但主要问题是,在查询维度数据分布较偏斜的情况下,索引会失效,并不能提高查询效率,数据分布偏斜在实际情况中是很常见的;另外的主要问题是在OLTP系统中,客户的并行量较大,时实性较高,较多的索引会降低对表的插入和修改操作,影响日常业务操作。
第2种方案,是根据给定维度再加上额外的时间维度来进行分批查询,先查询某一时间段的数据,如果找到了极值,就结束;如果未找到,就继续前推一时间段查询,直至查询到结果或查询完所有数据。因时间维度上一般会有索引且对数据有较好选择性,所以这种方案对于按时间维度找最新值一般会比较有效。但对于某些维度下不存在最新值或最新值较旧的情况下,因为要多次查询,效率会大大降低;这种方案还有一个致命缺陷是,它不能处理最大、最小值等情况,因为它们不是按时间维度排序的。
第3种方案,使用了以空间换时间的策略。即将业务表数据,压缩存储到另外的查询表中,查询操作从查询表中搜索,不在业务表上做极值查询。因查询表是按照常用查询维度进行压缩存储的,即相同维度的记录只存储一条,因此数据量较业务表会小很多,这种查询效率会提高很多。但这种方案最大的问题是如何维护查询表?当前的主要方法还是在做联机事务处理的同时,去更新或重新压缩查询表。这样就带来了最大的问题,尽管查询极值的效率提高了,但由于每种业务表的操作(增、删、改)都要维护查询表,使用联机事务处理的效率反而降低了,这是得不偿失的。
因此,需要一种数据查询技术,可以准确、高效地进行数据查询。
发明内容
针对上述问题,本发明的目的之一是提供一种查询处理装置,可以准确、高效地进行数据查询。
有鉴于此,本发明提出了一种查询处理装置,包括:按查询维度和时间维度从业务表中提取数据,生成查询表,记录所述数据的装置;至少部分地将所述查询表作为查询数据源,执行极值查询操作的装置;在特定的时间根据所述业务表更新所述查询表的装置。
在该技术方案中,通过查询表查询数据,数据的扫描量减小,从而可以高效地进行数据查询。并且当业务表中的数据发生变更时,不是立即对查询表进行更新,不影响系统的效率。变更的这部分数据通过其它方式获得,以确保数据查询的准确性。
优选地,还包括:根据所述业务表中相对于所述查询表删除或修改的数据,在查询表中标记与所述删除或修改的数据相应的数据的装置;则所述至少部分地将所述查询表作为查询数据源,执行极值查询操作的的装置将所述查询表中未被标记的数据以及所述业务表中相对于所述查询表修改的数据作为所述查询数据源。
在该技术方案中,由于业务表中修改或删除的数据不是立即更新到查询表,为了确保查询结果的准确性将业务表中修改或删除的数据在查询表中标记为无效。这样,在查询数据时可以不将查询表中此部分数据作为数据源,而是直接获得业务表中修改后的数据,将业务表中修改后的数据作为数据源进行查询,确保准确。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于用友软件股份有限公司,未经用友软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210224460.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种钢包浇注流量控制设备
- 下一篇:用于游泳教学的心率监测仪