本發(fā)明涉及數(shù)據(jù)庫,具體地涉及一種數(shù)據(jù)庫的多版本并發(fā)控制方法、裝置、設備、介質。
背景技術:
1、事務用于執(zhí)行一系列操作,這些操作作為一個整體被執(zhí)行,以保證數(shù)據(jù)庫狀態(tài)的完整性和一致性。在數(shù)據(jù)庫管理中,為了保證事務可以并發(fā)讀寫數(shù)據(jù)庫,通常通過撤銷日志(undo?log)記錄數(shù)據(jù)在事務開始之前的狀態(tài),以便在需要回滾(rollback)時撤銷更改。在事務a更新某一數(shù)據(jù)時,其他事務可以通過undo?log獲取事務a操作之前的數(shù)據(jù)版本。
2、在實現(xiàn)本發(fā)明的構思過程中,相關技術中至少存在如下問題,undo?log需要以頁(page)的形式保存到外存中,以防止數(shù)據(jù)丟失,在其他事務讀取被事務a操作的數(shù)據(jù)時,需要將保存有與被操作數(shù)據(jù)對應的undo?log以頁的形式調(diào)入內(nèi)存,由于所調(diào)入的一個或多個頁中除了事務讀取所需要的undo?log之外,還包括其他不需要的undo?log,因此,對所需要的數(shù)據(jù)的讀取會被放大為對整頁數(shù)據(jù)的讀寫,從而產(chǎn)生較大粒度的爭搶,影響事務的處理效率。
技術實現(xiàn)思路
1、鑒于上述問題,本發(fā)明提供了一種數(shù)據(jù)庫的多版本并發(fā)控制方法、裝置、設備、介質。
2、根據(jù)本發(fā)明的第一個方面,提供了一種數(shù)據(jù)庫的多版本并發(fā)控制方法,包括:根據(jù)目標數(shù)據(jù)行的第一版本和第二版本,確定上述目標數(shù)據(jù)行的差異信息,其中,上述目標數(shù)據(jù)行的第二版本是通過第一事務對上述第一版本進行修改后得到的;將上述差異信息作為最新的行版本信息,寫入與上述目標數(shù)據(jù)行對應的未提交版本數(shù)據(jù)鏈,其中,上述未提交版本數(shù)據(jù)鏈包括至少一個行版本信息,上述至少一個行版本信息是通過執(zhí)行上述第一事務得到的;在接收到表征上述第一事務提交成功的反饋信號的情況下,根據(jù)上述未提交版本數(shù)據(jù)鏈,生成與上述目標數(shù)據(jù)行對應的已提交行版本信息,并將上述已提交行版本信息寫入與上述目標數(shù)據(jù)行對應的已提交行版本鏈。
3、根據(jù)本發(fā)明的實施例,上述根據(jù)上述未提交版本數(shù)據(jù)鏈,生成與上述目標數(shù)據(jù)行對應的已提交行版本信息,包括:在上述未提交版本數(shù)據(jù)鏈包括多個上述行版本信息的情況下,根據(jù)上述多個上述行版本信息在上述未提交版本數(shù)據(jù)鏈中的寫入順序,合并多個上述行版本信息;以及基于提交上述第一事務的第一時間戳和合并后的行版本信息,生成上述已提交行版本信息。
4、根據(jù)本發(fā)明的實施例,上述方法還包括:響應于接收到的第二事務讀取目標數(shù)據(jù)行的數(shù)據(jù)讀取請求,基于上述第二事務的第二時間戳,從上述已提交行版本鏈中確定至少一個待回滾行版本信息;以及基于上述待回滾行版本信息和上述目標數(shù)據(jù)行的第三版本進行數(shù)據(jù)回滾,得到目標版本的目標數(shù)據(jù)行,其中,上述目標數(shù)據(jù)行的第三版本是目標事務提交后得到的版本,上述目標事務是針對上述目標數(shù)據(jù)行的多個提交事務中最新提交的事務。
5、根據(jù)本發(fā)明的實施例,上述基于上述第二事務的第二時間戳,從上述已提交行版本鏈中確定至少一個待回滾行版本信息,包括:基于上述第二時間戳,從上述已提交行版本鏈中確定目標行版本信息,其中,上述目標行版本信息為上述已提交行版本鏈中位于上述第二時間戳前的最新的已提交行版本信息;以及根據(jù)上述目標行版本信息,和第一時間戳大于上述第二時間戳的上述已提交行版本信息,確定至少一個上述待回滾行版本信息。
6、根據(jù)本發(fā)明的實施例,上述將上述已提交行版本信息寫入與上述目標數(shù)據(jù)行對應的已提交行版本鏈,包括:在上述已提交行版本鏈中存在至少一個歷史已提交行版本信息的情況下,將上述已提交行版本鏈的讀指針更新為與上述已提交行版本信息對應的內(nèi)存地址;其中,上述歷史已提交行版本信息為通過至少一個事務提交的行版本信息;將與上述歷史已提交行版本信息對應的節(jié)點,作為與上述已提交行版本信息對應節(jié)點的后繼節(jié)點,以保證上述歷史已提交行版本信息和上述已提交行版本信息的存儲順序。
7、根據(jù)本發(fā)明的實施例,上述方法還包括:在接收到表征上述第一事務提交成功的反饋信號的情況下,獲取每個活躍事務的事務開始時間戳;基于每個上述事務開始時間戳對上述已提交行版本鏈進行清理。
8、根據(jù)本發(fā)明的實施例,上述方法還包括:確定通過上述第一事務對上述目標數(shù)據(jù)行進行修改的修改類型;基于上述第一時間戳、上述修改類型,和合并后的行版本信息,生成上述已提交行版本信息。
9、本發(fā)明的第二方面提供了一種數(shù)據(jù)庫的多版本并發(fā)控制裝置,上述裝置包括:差異確定模塊,用于根據(jù)目標數(shù)據(jù)行的第一版本和第二版本,確定上述目標數(shù)據(jù)行的差異信息,其中,上述目標數(shù)據(jù)行的第二版本是通過第一事務對上述第一版本進行修改后得到的;信息寫入模塊,用于將上述差異信息作為最新的行版本信息,寫入與上述目標數(shù)據(jù)行對應的未提交版本數(shù)據(jù)鏈,其中,上述未提交版本數(shù)據(jù)鏈包括至少一個行版本信息,上述至少一個行版本信息是通過執(zhí)行上述第一事務得到的;版本寫入模塊,用于在接收到表征上述第一事務提交成功的反饋信號的情況下,根據(jù)上述未提交版本數(shù)據(jù)鏈,生成與上述目標數(shù)據(jù)行對應的已提交行版本信息,并將上述已提交行版本信息寫入與上述目標數(shù)據(jù)行對應的已提交行版本鏈。
10、本發(fā)明的第三方面提供了一種電子設備,包括:一個或多個處理器;存儲器,用于存儲一個或多個計算機程序,其中,上述一個或多個處理器執(zhí)行上述一個或多個計算機程序以實現(xiàn)上述方法的步驟。
11、本發(fā)明的第四方面還提供了一種計算機可讀存儲介質,其上存儲有計算機程序或指令,上述計算機程序或指令被處理器執(zhí)行時實現(xiàn)上述方法的步驟。
12、根據(jù)本發(fā)明的實施例,通過未提交版本數(shù)據(jù)鏈記錄第一事務未提交時,因第一事務對目標數(shù)據(jù)行修改而產(chǎn)生的差異,便于在第一事務提交失敗的情況下,基于未提交版本數(shù)據(jù)鏈中的行版本信息進行數(shù)據(jù)回滾以保證第一事務在目標數(shù)據(jù)行上的原子性。此外,在第一事務成功提交的情況下,根據(jù)未提交版本數(shù)據(jù)鏈,生成與目標數(shù)據(jù)行對應的已提交行版本信息,并將已提交行版本信息寫入與目標數(shù)據(jù)行對應的已提交行版本鏈,以保存目標數(shù)據(jù)行的多個版本。未提交版本數(shù)據(jù)鏈和已提交行版本鏈都存儲在內(nèi)存中,無需借助undolog獲取不同事務修改前的目標數(shù)據(jù)行的數(shù)據(jù),降低了數(shù)據(jù)庫管理系統(tǒng)對外存的訪問次數(shù),從而提高了事務的處理效率。
1.一種數(shù)據(jù)庫的多版本并發(fā)控制方法,其特征在于,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述根據(jù)所述未提交版本數(shù)據(jù)鏈,生成與所述目標數(shù)據(jù)行對應的已提交行版本信息,包括:
3.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括:
4.根據(jù)權利要求3所述的方法,其特征在于,所述基于所述第二事務的第二時間戳,從所述已提交行版本鏈中確定至少一個待回滾行版本信息,包括:
5.根據(jù)權利要求1所述的方法,其特征在于,所述將所述已提交行版本信息寫入與所述目標數(shù)據(jù)行對應的已提交行版本鏈,包括:
6.根據(jù)權利要求5所述的方法,其特征在于,所述方法還包括:
7.根據(jù)權利要求2所述的方法,其特征在于,所述方法還包括:
8.一種數(shù)據(jù)庫的多版本并發(fā)控制裝置,其特征在于,所述裝置包括:
9.一種電子設備,包括:
10.一種計算機可讀存儲介質,其上存儲有計算機程序或指令,其特征在于,所述計算機程序或指令被處理器執(zhí)行時實現(xiàn)根據(jù)權利要求1~7中任一項所述方法的步驟。