System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及數據庫,特別是涉及一種基于操作回滾標記的事務并行執行方法、裝置及系統。
技術介紹
1、在基于日志解析架構的數據庫實時同步系統(支持異構)中,源端數據同步服務負責捕獲源端數據庫的操作日志,并解析日志還原得到相應的數據庫操作,然后發送到目標端數據同步服務,目標端數據同步服務負責把這些操作在目標端數據庫中執行,從而完成數據同步的過程。
2、目標端數據同步服務在目標端數據庫上同步操作時,往往需要按照事務的提交順序來執行。因為在上個事務未同步完成時,下一個事務的操作在未明確和前面事務是否存在沖突的情況下,就不能和之前的事務操作并發的執行入庫,只能等待當前操作前面所有的事務提交完成以后才能開始執行,這極大的影響了事務操作入庫的并發度。目前采用的有效方法為通過判斷操作所在的日志lsn和之前提交的事務提交操作的lsn大小來決定是否能并行執行,如果當前執行事務操作的lsn小于當前正在執行其它某個事務的提交操作lsn,那這個操作就可以和該事務并發的執行,這種策略有助于提升并發度,但是性能提升幅度較小。
3、有鑒于此,如何克服現有技術所存在的缺陷,如何提高目標端數據同步服務并行執行的力度從而提升數據同步的性能,就成為業界亟待解決的重要技術問題。
技術實現思路
1、針對現有技術中的缺陷或改進需求:如何提高目標端數據同步服務并行執行的力度從而提升數據同步的性能。本專利技術為了提升同步的性能,目標端數據同步服務在接收操作時會為每個操作設定它的依賴信息,以方便它在執行時能夠
2、本專利技術采用如下技術方案:
3、第一方面,本專利技術提供了一種基于操作回滾標記的事務并行執行方法,包括:
4、目標端數據同步服務創建哈希表p、哈希表g以及若干個工作線程;
5、工作線程從已提交事務鏈表中按事務提交順序提取一個事務,并將事務id登記到哈希表p,將事務中涉及的表信息和事務的起始lsn登記到哈希表g;
6、判斷當前事務是否是回滾事務,若是,則等待所有提交lsn小于當前事務的事務提交完成以后才喚醒等待當前事務的工作線程;否則進行操作提取步驟;
7、操作提取步驟:工作線程提取事務的一個操作,判斷當前操作是否是提交操作,若是,按事務是否存在操作回滾標記來處理;否則,判斷操作為dml操作,工作線程使用當前待執行操作的沖突trxid在哈希表p中搜索是否存在沖突trxid的事務,若存在,則等待沖突事務執行完并提交以后再喚醒自己;否則,工作線程使用當前待執行操作表信息在哈希表g中搜索是否存在操作相同表的事務,并且這個事務提交lsn小于當前事務,以及事務的起始lsn小于當前操作的沖突lsn,若存在,則等待沖突事務執行完并提交以后再喚醒自己;否則,判斷未檢測到沖突,執行當前操作。
8、在一些實施例中,所述目標端數據同步服務啟動時初始化一個哈希表r,并初始化哈希表r的哈希項中的記錄地址為空,用來存儲和定位接收到的操作;目標端數據同步服務創建兩個緩存文件用來存儲哈希表r中的key,每個緩存文件的文件名按創建的順序遞增命名,將這兩個緩存文件添加到緩存文件鏈表中。
9、在一些實施例中,所述沖突trxid和所述沖突lsn的獲取包括:
10、所述目標端數據同步服務接收到源端的dml操作以后,提取操作中表id以及其主鍵或是索引或是自定義選擇列作為key,再提取該操作中的事務id作為trxid,將key和trxid組合成一條記錄保存到當前緩存文件中,若該記錄為當前緩存文件的第一條記錄,則將該操作對應的日志lsn標記到該緩存文件上,作為該緩存文件的起始lsn;
11、利用當前操作的key構造檢測記錄x,將檢測記錄x合并到哈希表r中,在合并的過程中進行沖突檢測判斷,若有沖突的key,則返回沖突key對應的trxid值;否則返回0作為對應的trxid,表示無沖突;
12、將沖突檢測判斷得到的trxid設為沖突trxid,將當前哈希表r對應的第一個緩存文件的起始lsn寫入當前操作中,設為沖突lsn。
13、在一些實施例中,所述沖突檢測判斷包括:
14、對當前檢測記錄x的key求哈希值,通過哈希值定位到哈希項;判斷哈希項中記錄地址是否為空,若是,將哈希項中記錄地址設置到當前檢測記錄x的下一個地址空間,用該檢測記錄x的地址回填到哈希項中,用0作為沖突trxid進行返回,表示未檢測到沖突;若不是,進行下一步沖突檢測判斷;
15、判斷哈希項中記錄的地址中的文件id是否小于緩存文件鏈表中第一個文件的id值,若是,表明這個記錄y已經超出了檢查范圍,把哈希項中記錄地址設置到當前檢測記錄x的下一個地址空間,用該檢測記錄x的地址回填到哈希項中,用0作為沖突trxid進行返回,表示未檢測到沖突;若不是,進行下一步沖突檢測判斷;
16、根據哈希項中記錄的地址從文件中加載出其對應的記錄y,判斷記錄y的key是否和當前檢測記錄x的key相等且記錄y的trxid和當前操作的trxid不相等,若是,則表示操作存在沖突,將記錄y從該哈希項的記錄鏈表中移除以縮短哈希項中鏈表長度,將哈希項中記錄地址設置到當前檢測記錄x的下一個地址空間,將當前檢測記錄x的地址回填到哈希項中,并用記錄y中存儲的trxid作為沖突trxid進行返回;若不是,進行下一步沖突檢測判斷;
17、依次遍歷記錄y的下一個記錄并進行沖突檢測判斷,直到記錄鏈表結束。
18、在一些實施例中,所述緩存文件鏈表包括兩個緩存文件,當第一個緩存文件寫滿時就切換到第二個緩存文件,當第二個寫滿時,先淘汰掉鏈表中的第一個緩存文件,然后用遞增的文件id創建一個新的緩存文件加入到緩存文件鏈表中。
19、在一些實施例中,所述目標端數據同步服務接收到回滾或部分回滾操作時,根據操作上的事務id定位到事務,然后在事務上打上操作回滾標記,表明該事務有部分操作被回滾,若操作是回滾操作,那么這個事務上的全部操作無需被執行,直接丟棄,僅用保留的事務信息加入到待執行隊列。
20、在一些實施例中,所述按事務是否存在操作回滾標記來處理具體包括:
21、若沒有操作回滾標記,則提交當前事務后喚醒等待自己的工作線程,再從哈希表p和哈希表g中移除當前事務的登記信息,完成當前事務的本文檔來自技高網...
【技術保護點】
1.一種基于操作回滾標記的事務并行執行方法,其特征在于,包括:
2.根據權利要求1所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述目標端數據同步服務啟動時初始化一個哈希表R,并初始化哈希表R的哈希項中的記錄地址為空,用來存儲和定位接收到的操作;目標端數據同步服務創建兩個緩存文件用來存儲哈希表R中的KEY,每個緩存文件的文件名按創建的順序遞增命名,將這兩個緩存文件添加到緩存文件鏈表中。
3.根據權利要求2所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述沖突TRXID和所述沖突LSN的獲取包括:
4.根據權利要求3所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述沖突檢測判斷包括:
5.根據權利要求2所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述緩存文件鏈表包括兩個緩存文件,當第一個緩存文件寫滿時就切換到第二個緩存文件,當第二個寫滿時,先淘汰掉鏈表中的第一個緩存文件,然后用遞增的文件ID創建一個新的緩存文件加入到緩存文件鏈表中。
6.根據權利要求2所述的基于操作回滾標記的事務并行執行方
7.根據權利要求1-6任一所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述按事務是否存在操作回滾標記來處理具體包括:
8.一種基于操作回滾標記的事務并行執行裝置,其特征在于,所述裝置包括:至少一個處理器;以及,與所述至少一個處理器通信連接的存儲器;其中,所述存儲器存儲有可被所述至少一個處理器執行的指令,所述指令被所述處理器執行,用于執行權利要求1-7任一所述的基于操作回滾標記的事務并行執行方法。
9.一種基于操作回滾標記的事務并行執行系統,應用如權利要求1-7任一所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述系統包括哈希表及工作線程創建模塊、事務提取模塊、回滾判斷模塊以及操作提取及沖突檢測模塊,其中:
10.一種非易失性計算機存儲介質,其特征在于,所述計算機存儲介質存儲有計算機可執行指令,該計算機可執行指令被一個或多個處理器執行,用于完成如權利要求1-7任一所述的基于操作回滾標記的事務并行執行方法。
...【技術特征摘要】
1.一種基于操作回滾標記的事務并行執行方法,其特征在于,包括:
2.根據權利要求1所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述目標端數據同步服務啟動時初始化一個哈希表r,并初始化哈希表r的哈希項中的記錄地址為空,用來存儲和定位接收到的操作;目標端數據同步服務創建兩個緩存文件用來存儲哈希表r中的key,每個緩存文件的文件名按創建的順序遞增命名,將這兩個緩存文件添加到緩存文件鏈表中。
3.根據權利要求2所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述沖突trxid和所述沖突lsn的獲取包括:
4.根據權利要求3所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述沖突檢測判斷包括:
5.根據權利要求2所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述緩存文件鏈表包括兩個緩存文件,當第一個緩存文件寫滿時就切換到第二個緩存文件,當第二個寫滿時,先淘汰掉鏈表中的第一個緩存文件,然后用遞增的文件id創建一個新的緩存文件加入到緩存文件鏈表中。
6.根據權利要求2所述的基于操作回滾標記的事務并行執行方法,其特征在于,所述目標端數據同步服務接收到回滾或部分回滾操作時,根據操...
【專利技術屬性】
技術研發人員:孫峰,陳江輝,彭青松,余院蘭,
申請(專利權)人:武漢達夢數據庫股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。