本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,特別是涉及一種基于on?statement的物化視圖自動(dòng)增量刷新方法、機(jī)器可讀存儲(chǔ)介質(zhì)及計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
::1、物化視圖是一個(gè)包含查詢結(jié)果的數(shù)據(jù)庫對(duì)象,是一種特殊的物理表,其本身是會(huì)存儲(chǔ)數(shù)據(jù)的。當(dāng)基表數(shù)據(jù)發(fā)生變化時(shí),需要通過物化視圖刷新來確保物化視圖相對(duì)于基表最新數(shù)據(jù)獲取到最新的查詢結(jié)果。2、目前物化視圖刷新模式有兩種:3、a)on?demand(specifying?on?demand?means?that?the?database?does?notrefresh?the?materialized?view?unless?the?user?refreshes?it?manually,指定ondemand.意味著除非用戶手動(dòng)刷新,否則數(shù)據(jù)庫不會(huì)刷新物化視圖)4、b)on?commit(specify?on?commit?to?indicate?that?a?refresh?is?to?occurwhenever?the?database?commits?a?transaction?that?operates?on?a?master?tableof?the?materialized?view.指定on?commit以指示每當(dāng)數(shù)據(jù)庫提交在物化視圖的主表上操作的事務(wù)時(shí)都要進(jìn)行刷新)5、對(duì)于模式a)6、物化視圖在用戶需要的時(shí)候進(jìn)行手動(dòng)刷新,也可以通過job來定時(shí)進(jìn)行刷新以確保與基表數(shù)據(jù)的一致性。7、當(dāng)基表數(shù)據(jù)增刪改比較頻繁,那么很可能造成物化視圖與基表的數(shù)據(jù)不一致。如果想要兩者數(shù)據(jù)一致,需要用戶每次使用物化視圖前去手動(dòng)刷新,或者通過job不斷去做定時(shí)刷新。而前者手動(dòng)刷新讓用戶使用上變得繁瑣,后者不斷刷新的過程,占用了時(shí)間和資源,非常影響性能,尤其是基表都沒有數(shù)據(jù)變化時(shí),根本不需要去做刷新操作。8、對(duì)于模式b)9、一旦基表有了顯示commit,即顯示事務(wù)提交,就立刻刷新物化視圖,來確保與基表數(shù)據(jù)的一致性。10、基表數(shù)據(jù)進(jìn)行增刪改時(shí),必須要等到顯示事務(wù)提交,才能將基表變更數(shù)據(jù)刷新到物化視圖,那么對(duì)于事務(wù)內(nèi),面對(duì)基表隨時(shí)增刪改操作,要保證物化視圖與基表數(shù)據(jù)的一致性,需要用戶每次使用物化視圖前,進(jìn)行手動(dòng)刷新,這樣讓用戶的使用變得繁瑣。技術(shù)實(shí)現(xiàn)思路1、本發(fā)明的第一方面的一個(gè)目的是減少物化視圖刷新過程中用戶的操作。2、本發(fā)明的第一方面的一個(gè)進(jìn)一步的目的是減少物化視圖刷新占用的時(shí)間和資源。3、本發(fā)明的第一方面的另一個(gè)進(jìn)一步的目的是減少物化視圖刷新過程中對(duì)基表增刪改的時(shí)間影響。4、本發(fā)明的第一方面的再一個(gè)進(jìn)一步的目的是確保在事務(wù)內(nèi)物化視圖與基表數(shù)據(jù)的一致性,又確保用戶使用上不繁瑣。5、本發(fā)明的第二方面的目的是提供一種機(jī)器可讀存儲(chǔ)介質(zhì)。6、本發(fā)明的第三方面的目的是提供一種計(jì)算機(jī)程序產(chǎn)品。7、特別地,本發(fā)明提供了一種基于on?statement的物化視圖自動(dòng)增量刷新方法,包括:8、創(chuàng)建關(guān)于基表的物化視圖日志;9、當(dāng)產(chǎn)生針對(duì)所述基表數(shù)據(jù)的增量操作,將所述基表的數(shù)據(jù)變更信息更新至所述物化視圖日志并確定每個(gè)所述增量操作對(duì)應(yīng)的物化視圖;10、利用所述物化視圖日志中的日志信息完成對(duì)全部所述物化視圖的增量刷新。11、可選地,確定每個(gè)所述增量操作對(duì)應(yīng)的物化視圖的步驟包括:12、基于所述基表數(shù)據(jù)和物化視圖的對(duì)應(yīng)關(guān)系創(chuàng)建物化視圖系統(tǒng)表;13、根據(jù)所述物化視圖系統(tǒng)表確定每個(gè)增量操作數(shù)據(jù)對(duì)應(yīng)的物化視圖。14、可選地,利用所述物化視圖日志中的日志信息完成對(duì)全部所述物化視圖的增量刷新的步驟包括:15、針對(duì)一個(gè)所述物化視圖,利用所述物化視圖日志中全部與所述物化視圖對(duì)應(yīng)的日志信息對(duì)所述物化視圖進(jìn)行增量刷新并在完成后,繼續(xù)利用所述物化視圖日志中的日志信息對(duì)其他未被增量刷新的所述物化視圖進(jìn)行增量刷新直至全部所述物化視圖完成增量刷新。16、可選地,利用所述物化視圖日志中全部與所述物化視圖對(duì)應(yīng)的日志信息對(duì)所述物化視圖進(jìn)行增量刷新的步驟包括:17、讀取所述物化視圖日志中與所述物化視圖對(duì)應(yīng)的一條日志信息,利用所述日志信息對(duì)所述物化視圖進(jìn)行增量刷新并在完成后,繼續(xù)讀取所述物化視圖日志中其他與所述物化視圖對(duì)應(yīng)的日志信息對(duì)所述物化視圖進(jìn)行增量刷新直至所述物化視圖日志中不包含與所述物化視圖對(duì)應(yīng)的未進(jìn)行過增量刷新的日志信息。18、可選地,利用所述日志信息對(duì)所述物化視圖進(jìn)行增量刷新的步驟包括:19、確定所述日志信息的日志類型;20、根據(jù)所述日志類型對(duì)所述物化視圖進(jìn)行增量刷新。21、可選地,若所述日志類型為刪除,根據(jù)所述日志類型對(duì)所述物化視圖進(jìn)行增量刷新的步驟包括:22、刪除所述物化視圖中的相應(yīng)數(shù)據(jù)行。23、可選地,若所述日志類型為增加,根據(jù)所述日志類型對(duì)所述物化視圖進(jìn)行增量刷新的步驟包括:24、在所述物化視圖相應(yīng)位置插入相應(yīng)數(shù)據(jù)行。25、可選地,所述增量操作以隱式事務(wù)提交方式提交。26、根據(jù)本發(fā)明的另一個(gè)方面,還提供了一種機(jī)器可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有機(jī)器可執(zhí)行程序,所述機(jī)器可執(zhí)行程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)上述任一項(xiàng)所述的基于onstatement的物化視圖自動(dòng)增量刷新方法。27、根據(jù)本發(fā)明的再一個(gè)方面,還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可執(zhí)行程序,所述計(jì)算機(jī)可執(zhí)行程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)上述任一項(xiàng)所述的基于on?statement的物化視圖自動(dòng)增量刷新方法。28、本發(fā)明提出的基于on?statement的物化視圖自動(dòng)增量刷新方法中,首先創(chuàng)建關(guān)于基表的物化視圖日志,然后當(dāng)產(chǎn)生針對(duì)基表數(shù)據(jù)的增量操作,將基表的數(shù)據(jù)變更信息更新至物化視圖日志并確定每個(gè)增量操作對(duì)應(yīng)的物化視圖,再利用物化視圖日志中的日志信息完成對(duì)全部物化視圖的增量刷新?;诒景l(fā)明提供的技術(shù)方案,每當(dāng)增刪改基表數(shù)據(jù),就會(huì)將增量部分?jǐn)?shù)據(jù)自動(dòng)刷新到物化視圖,因此對(duì)基表增刪改性能影響較小,對(duì)時(shí)間和資源占用也少,而這種語句級(jí)自動(dòng)增量刷新,也可以確保物化視圖與基表數(shù)據(jù)的實(shí)時(shí)一致性,無論在事務(wù)內(nèi)還是事務(wù)外,都無需用戶進(jìn)行手動(dòng)刷新。29、上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。30、根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。技術(shù)特征:1.一種基于on?statement的物化視圖自動(dòng)增量刷新方法,包括:2.根據(jù)權(quán)利要求1所述的基于on?statement的物化視圖自動(dòng)增量刷新方法,其特征在于3.根據(jù)權(quán)利要求1所述的基于on?statement的物化視圖自動(dòng)增量刷新方法,其特征在于4.根據(jù)權(quán)利要求3所述的基于on?statement的物化視圖自動(dòng)增量刷新方法,其特征在于5.根據(jù)權(quán)利要求4所述的基于on?statement的物化視圖自動(dòng)增量刷新方法,其特征在于6.根據(jù)權(quán)利要求5所述的基于on?statement的物化視圖自動(dòng)增量刷新方法,其特征在于7.根據(jù)權(quán)利要求5所述的基于on?statement的物化視圖自動(dòng)增量刷新方法,其特征在于8.根據(jù)權(quán)利要求1所述的基于on?statement的物化視圖自動(dòng)增量刷新方法,其特征在于9.一種機(jī)器可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有機(jī)器可執(zhí)行程序,所述機(jī)器可執(zhí)行程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)權(quán)利要求1至8任一項(xiàng)所述的基于on?statement的物化視圖自動(dòng)增量刷新方法。10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可執(zhí)行程序,所述計(jì)算機(jī)可執(zhí)行程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)權(quán)利要求1至8任一項(xiàng)所述的基于on?statement的物化視圖自動(dòng)增量刷新方法。技術(shù)總結(jié)本發(fā)明提出了一種基于ON?STATEMENT的物化視圖自動(dòng)增量刷新方法、機(jī)器可讀存儲(chǔ)介質(zhì)及計(jì)算機(jī)程序產(chǎn)品,本發(fā)明提出的方法中,首先創(chuàng)建關(guān)于基表的物化視圖日志,然后當(dāng)產(chǎn)生針對(duì)基表數(shù)據(jù)的增量操作,將基表的數(shù)據(jù)變更信息更新至物化視圖日志并確定每個(gè)增量操作對(duì)應(yīng)的物化視圖,再利用物化視圖日志中的日志信息完成對(duì)全部物化視圖的增量刷新。基于本發(fā)明提供的技術(shù)方案,每當(dāng)增刪改基表數(shù)據(jù),就會(huì)將增量部分?jǐn)?shù)據(jù)自動(dòng)刷新到物化視圖,因此對(duì)基表增刪改性能影響較小,而這種語句級(jí)自動(dòng)增量刷新,也可以確保物化視圖與基表數(shù)據(jù)的實(shí)時(shí)一致性,無論在事務(wù)內(nèi)還是事務(wù)外,減少用戶使用上的約束,尤其是基表數(shù)據(jù)更新比較頻繁,用戶直接可使用物化視圖中數(shù)據(jù),使用便捷。技術(shù)研發(fā)人員:謝軍波,王建華受保護(hù)的技術(shù)使用者:中電科金倉(北京)科技股份有限公司技術(shù)研發(fā)日:技術(shù)公布日:2024/10/10