数据库服务器端结果集缓存的数据同步方法及装置制造方法及图纸

技术编号:7996316 阅读:160 留言:0更新日期:2012-11-22 05:08
本发明专利技术实施例提供了一种数据库服务器端结果集缓存的数据同步方法及装置。所述方法在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识,当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并。通过上述方法实施就能够有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。

【技术实现步骤摘要】

本专利技术涉及数据库
,尤其涉及一种数据库服务器端结果集缓存的数据同步方法及装置
技术介绍
目前,在数据库实际应用环境中,服务器端为快速响应用户端的查询请求,提高用户体验,产生了结果集缓存技术,也就是在服务器端的共享缓存中的一块区域存放某一条查询语句执行所得到的结果,从而便于下一次用户端再有相同语句查询时能够直接获取并返回之前缓存的结果集。举例来说,在网页服务中相同的网页会被重复的请求,这样只要查询一次,将结果缓存,下次相同查询请求时,便可直接返回结果,该结果集缓存技术有效解决了只读和读操·作占多数的数据的缓存问题。但现有技术方案中,结果集缓存技术也存在着数据一致性要求,即当数据库服务器端的数据表被修改时,所有涉及此表的结果集直接失效,那么再有相同语句进行查询时,就需要执行传统流程,然后将获得的最新结果保存到结果集缓存中,并没有实现结果集缓存的增量更新,使得结果集的更新时间较长,降低了用户体验。
技术实现思路
本专利技术实施例提供了一种数据库服务器端结果集缓存的数据同步方法及装置,能够有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。本专利技术实施例提供了一种数据库服务器端结果集缓存的数据同步方法,所述方法包括在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识,且在所述结果集头部字段中存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句;当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,冋步更新结果集缓存。本专利技术实施例还提供了一种数据库服务器端结果集缓存的数据同步装置,所述装置包括修改记录单元,用于在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识;头部字段设置单元,用于在结果集缓存的结果集头部字段中存储所修改数据表的表标识,且在所述结果集头部字段中存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句;记录查询单元,用于当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;同步更新单元,用于根据修改数据表的不同操作将记录查询单元所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。由上述所提供的技术方案可以看出,所述方法在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识;当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。通过上述方法实施就能够有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。附图说明·图I为本专利技术实施例所提供数据库服务器端结果集缓存的数据同步方法流程示意图;图2为本专利技术所举具体实例中结果集缓存的结构示意图;图3为本专利技术实施例所提供数据同步装置的结构示意图。具体实施例方式本专利技术实施方式提供了一种数据库服务器端结果集缓存的数据同步方法及装置,该方法通过记录修改数据表时被修改的行记录的Oid(即表内每行数据的唯一性标识,通过此标识可找到行数据),在数据表修改后,如果查询语句在结果集缓存中存在,则在所记录的被修改的行记录上重新做查询,避免全表的查询,并在得到结果后,将其与之前缓存的结果集进行合并,从而避免修改表时,将对应结果集直接作废,达到增量更新缓存的效果,该方法有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。为更好的描述本专利技术实施方式,现结合附图对本专利技术的具体实施方式进行说明,如图I所示为本专利技术实施例所提供数据库服务器端结果集缓存的数据同步方法流程示意图,所述方法包括步骤11 :在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识。在该步骤中,在修改数据库服务器端的数据表时,可以通过在所述结果集缓存中设置记录表来记录被修改的数据表的行记录标识,并将该数据表的表标识存储在结果集缓存的结果集头部子段中。步骤12 :当所述结果集缓存中的某一查询语句被执行,判断该查询语句是否为简单语句。在该步骤中,当结果集缓存中的某一查询语句被执行,对该查询语句的类别进行判断,具体实现中,在结果集头部字段中还可以存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句。具体来说,通过对该查询语句的操作过程进行判断,若是单一操作的语句,则判断为简单语句,并可进一步将结果集头部字段中所存储的查询语句类别设定为简单语句;若是多操作混合的语句,则判断为复杂语句,并可进一步将结果集头部字段中所存储的查询语句类别设定为复杂语句。另外,在结果集头部字段中还可以设置数据一致性标志位,当所述结果集缓存中的某一查询语句被执行时,还可以进一步根据在所述结果集头部字段中设置的数据一致性标志位判断是否需要进行后继操作,若所述数据一致性标志位为一致,则不需要进行后继步骤的操作,若所述数据一致性标志位为不一致,则继续后继步骤操作。步骤13 :若判断是简单语句,则在所记录的被修改的所有行记录上重新执行查询并得到查询结果。在该步骤中,在所记录的被修改的所有行记录上重新执行查询并得到查询结果的·过程具体为根据所存储的数据表的表标识查找得到该数据表的所有行记录标识,并根据该所有行记录标识在被修改的所有行记录上重新执行查询并得到查询结果。步骤14 :根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。在该步骤中,修改数据表的不同操作包括插入行记录,修改行记录或删除行记录,针对不同情况将所得到的查询结果与所述结果集缓存中缓存的结果合并,具体来说若所述修改数据表的操作为插入行记录,则将查询结果与所述结果集缓存中缓存的结果合并;若所述修改数据表的操作为修改行记录,则将查询结果与所述结果集缓存中缓存的结果合并,并将原行记录删除;若所述修改数据表的操作为删除行记录,则在所述结果集缓存中删除该行记录。通过上述的操作就实现了同步更新结果集缓存,且缩短了修改表时结果集的更新时间,提闻了用户体验。另外,当进行上述步骤12的操作,判断该查询语句不是简单语句,也即为复杂语句时,则进行步骤15的操作,即该复杂语句的缓存失效,重新通过所述数据库服务器端的数据表来查询并得到查询结果,并更新结果集缓存。具体实现中,通过将查询语句进行分类,对于包含sortby、groupby、limit、聚集函数等多操作的复杂语句,在修改表发生时,直接将其结果集作废,能够避免因数据同步造成的得不偿失的情况,从而保证数据同步策略的有效性。另外,所述结果集缓存的结本文档来自技高网...

【技术保护点】
一种数据库服务器端结果集缓存的数据同步方法,其特征在于,所述方法包括:在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识;当所述结果集缓存中的某一查询语句被执行,判断该查询语句是否为单一操作的简单语句,若是简单语句,则在所记录的被修改的所有行记录上重新执行查询并得到查询结果;根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。

【技术特征摘要】

【专利技术属性】
技术研发人员:巩玉旺
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1