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