本发明涉及数据库,具体涉及一种物化视图全量刷新方法、装置、系统及存储介质。
背景技术:
1、物化视图是数据库应用领域中的一种特殊对象,是一种特殊的视图,相比较普通视图,它的数据会持久化,占用属于自身的存储空间用于存储自身数据,当查询物化视图时,直接从物化视图的存储空间查询数据,而不是从基表中查询数据。
2、物化视图是一种介于表和视图中间的数据存储形式,其同时具备表和视图的部分属性。当物化视图数据不发生变动时,其表现形式和基本属性与表相近,拥有自己独立的存储空间,能够进行添加索引等数据库表才能进行的操作;但物化视图也具备以同步或异步方式跟随基表数据刷新自身数据的能力,根据其创建语句,通过一定的刷新指令,允许物化视图更新自身数据,这一点与视图特征较为相似。
3、作为普通视图功能的拓展,物化视图具备其自身的优缺点。最明显的缺点是物化视图需要存储其数据,这回增大数据库的存储空间占用量,此外物化视图刷新过程较为繁琐,也会对数据库的整体性能产生影响;而其主要优点是由于数据独立存储,在进行查询时直接进行单表扫描即可,无需再执行普通视图中可能存在的复杂sql语句,能够有效提升数据的查询效率。
4、物化视图具备同步和异步两种刷新策略。同步刷新会随着修改基表的事务提交实时更新,这种刷新策略能够保证物化视图数据的实时性,但是由于每次事务提交都需要同步修改物化视图数据,会对数据库性能产生较大影响;异步刷新不会随着事务的提交实时刷新物化视图,而是通过物化视图刷新命令进行数据刷新,异步刷新分为全量刷新和增量刷新两种方法,全量刷新需要清空物化视图数据再重新导入最新数据,增量刷新只对数据变更进行更新,二者相对比,全量刷新的适应性和安全性更高,能适应各类场景,但由于数据操作量较大,执行效率较低,而增量刷新有较高的执行效率,但是存在诸多限制,如基表发生结构变更时、增量日志被破坏时,增量刷新就可能会失效。
5、因此,现有技术还有待于改进和发展。
技术实现思路
1、鉴于上述现有技术的不足之处,本发明的目的在于提供一种物化视图全量刷新方法、装置、系统及存储介质。
2、为了达到上述目的,本发明采取了以下技术方案:
3、本发明提供了一种物化视图全量刷新方法,包括如下步骤:
4、创建物化视图的临时表,所述临时表与当前物化视图结构相同;
5、将最新的全量数据插入至所述临时表中;
6、对比临时表中的全量数据,修改当前物化视图的差异数据;
7、物化视图与临时表中的全量数据相同,修改完成,删除所述临时表,完成物化视图全量刷新。
8、进一步地,所述的物化视图全量刷新方法,所述“对比临时表中的全量数据,修改当前物化视图的差异数据”的步骤包括:
9、对比临时表中的全量数据,不更新全局事务id,修改当前物化视图的差异数据。
10、进一步地,所述的物化视图全量刷新方法,在所述“创建物化视图的临时表,所述临时表与当前物化视图结构相同”的步骤之前,还包括步骤:
11、对物化视图的全局事务id进行处理,将物化视图所有数据行的全局事务id字段修改为0。
12、进一步地,所述的物化视图全量刷新方法,在所述“对比临时表中的全量数据,不更新全局事务id,修改当前物化视图的差异数据”的步骤具体包括:
13、通过replace into...nogt id语句,根据所述临时表中与当前物化视图差异的差异数据,对当前物化视图进行数据新增和/或修改。
14、进一步地,所述的物化视图全量刷新方法,在所述“采用replace into...nogt id语句,根据所述临时表中与当前物化视图差异的差异数据,对当前物化视图进行数据新增和/或修改”的步骤之后,所述“对比临时表中的全量数据,不更新全局事务id,修改当前物化视图的差异数据”的步骤还包括:
15、通过delete语句进行数据删除处理,删除临时表中不存在,但是当前物化视图中存在的数据行。
16、进一步地,所述的物化视图全量刷新方法,所述“通过delete语句进行数据删除处理,删除临时表中不存在,但是当前物化视图中存在的数据行”的步骤具体包括:
17、删除临时表中不存在,但是当前物化视图中存在的数据行,由主键唯一定位到需要删除的数据行,通过delete语句进行数据删除处理。
18、进一步地,所述的物化视图全量刷新方法,所述所述“通过delete语句进行数据删除处理,删除临时表中不存在,但是当前物化视图中存在的数据行”的步骤具体包括:
19、删除临时表中不存在,但是当前物化视图中存在的数据行,由rowid唯一定位到需要删除的数据行,通过delete语句进行数据删除处理。
20、本发明提供一种物化视图全量刷新装置,所述装置包括:
21、临时表创建模块,用于创建物化视图的临时表,所述临时表与当前物化视图结构相同;
22、数据导入模块,用于将最新的全量数据插入至所述临时表中;
23、数据修改模块,用于对比临时表中的全量数据,修改当前物化视图的差异数据
24、临时表删除模块,用于物化视图与临时表中的全量数据相同,修改完成,删除所述临时表,完成物化视图全量刷新。
25、本发明提供一种物化视图全量刷新系统,所述系统包括至少一个处理器;以及,
26、与所述至少一个处理器通信连接的存储器;其中,
27、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行以上述的物化视图全量刷新方法。
28、本发明提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行以上所述的物化视图全量刷新方法。
29、相较于现有技术,本发明提供的一种物化视图全量刷新方法、装置、系统及存储介质,其中,物化视图全量刷新方法,包括:创建物化视图的临时表,所述临时表与当前物化视图结构相同;将最新的全量数据插入至所述临时表中;对比临时表中的全量数据,修改当前物化视图的差异数据;物化视图与临时表中的全量数据相同,修改完成,删除所述临时表,完成物化视图全量刷新。本发明以全量刷新为基础,在保证数据刷新正确性和适应性的同时,记录的逻辑日志仅包含差异数据,可以有效降低逻辑日志记录量,降低物化视图刷新对数据库的事务提交和主备复制的影响。
1.一种物化视图全量刷新方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的物化视图全量刷新方法,其特征在于,所述“对比临时表中的全量数据,修改当前物化视图的差异数据”的步骤包括:
3.根据权利要求2述的物化视图全量刷新方法,其特征在于,在所述“创建物化视图的临时表,所述临时表与当前物化视图结构相同”的步骤之前,还包括步骤:
4.根据权利要求3所述的物化视图全量刷新方法,其特征在于,在所述“对比临时表中的全量数据,不更新全局事务id,修改当前物化视图的差异数据”的步骤具体包括:
5.根据权利要求4所述的物化视图全量刷新方法,其特征在于,在所述“采用replaceinto...nogtid语句,根据所述临时表中与当前物化视图差异的差异数据,对当前物化视图进行数据新增和/或修改”的步骤之后,所述“对比临时表中的全量数据,不更新全局事务id,修改当前物化视图的差异数据”的步骤还包括:
6.根据权利要求5所述的物化视图全量刷新方法,其特征在于,所述“通过delete语句进行数据删除处理,删除临时表中不存在,但是当前物化视图中存在的数据行”的步骤具体包括:
7.根据权利要求5所述的物化视图全量刷新方法,其特征在于,所述所述“通过delete语句进行数据删除处理,删除临时表中不存在,但是当前物化视图中存在的数据行”的步骤具体包括:
8.一种物化视图全量刷新装置,其特征在于,所述装置包括:
9.一种物化视图全量刷新系统,其特征在于,所述系统包括至少一个处理器;以及,
10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的物化视图全量刷新方法。