[發明專利]一種PostGresSQL數據庫刪除記錄的恢復方法和裝置在審
| 申請號: | 202011581298.1 | 申請日: | 2020-12-28 |
| 公開(公告)號: | CN112800051A | 公開(公告)日: | 2021-05-14 |
| 發明(設計)人: | 吳苗苗;沈長達;黃志煒;夏鵬飛;蘇步發 | 申請(專利權)人: | 廈門市美亞柏科信息股份有限公司 |
| 主分類號: | G06F16/22 | 分類號: | G06F16/22;G06F16/17;G06F11/14 |
| 代理公司: | 廈門福貝知識產權代理事務所(普通合伙) 35235 | 代理人: | 陳遠洋 |
| 地址: | 361000 福建省廈門市思明*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 postgressql 數據庫 刪除 記錄 恢復 方法 裝置 | ||
1.一種PostGresSQL數據庫刪除記錄的恢復方法,其特征在于,包括以下步驟:
S1:讀取PostgreSQL數據庫的系統表pg_database表中表數據文件的頁數據;
S2:取所述頁數據中的一個未處理的Tuple索引值,對所述Tuple索引值進行解析獲取所述Tuple索引值對應的Tuple相對于頁頭部的偏移量iTupOff以及所述Tuple的長度iTupLen,根據所述iTupOff和所述iTupLen確定所述Tuple的存儲位置后獲取所述Tuple的實際數據;
S3:解析所述Tuple的實際數據的頭部獲取所述Tuple的實際數據的頭部中的狀態標志位Xmax,判斷所述狀態標志位Xmax是否為零,若否,則所述Tuple為刪除記錄對應的Tuple;
S4:解析所述Tuple的實際數據得到所述Tuple對應的刪除記錄。
2.根據權利要求1所述的方法,其特征在于,所述步驟S1具體包括:
獲取頁頭部信息、Tuple索引的個數iRecInCoun和所有Tuple索引值,并根據所述頁頭部信息獲取空閑起始位置iOffFreeBegin和空閑結束位置iOffFreeEnd。
3.根據權利要求2所述的方法,其特征在于,所述步驟S1還包括:
判斷所述iRecInCoun是否大于或等于0,若是,則根據所述iRecInCoun循環遍歷所述所有Tuple索引值,令循環遍歷的次數為i,i的初始值為0,執行所述步驟S2-S4。
4.根據權利要求3所述的方法,其特征在于,所述步驟S2還包括在所述獲取所述Tuple相對于頁頭部的偏移量iTupOff以及所述tuple的長度iTupLen后進行以下步驟:
判斷所述iTupOff和所述iTupLen是否滿足:
iTupOffiOffFreeBegin||iTupOffiPageSize
||iTupOffiOffFreeEnd||iTupLeniPageSize;
若是,則對所述i加1,并重復執行所述步驟S2,若否,則繼續執行所述步驟S3。
5.根據權利要求1所述的方法,其特征在于,所述步驟S3中解析所述Tuple的實際數據的頭部,具體還包括:
獲取所述Tuple的實際數據中的數據開始位置TupleBegin、所述Tuple的實際數據所包含的字段個數iColCount以及判斷所有字段是否為空標識的字段iColsNullSign。
6.根據權利要求5所述的方法,其特征在于,所述步驟S3還包括:
所述iColCount和所述TupleBegin需滿足:
iColCount大于零且TupleBegin大于等于所述Tuple的實際數據的頭部的最小值;否則不執行所述步驟S4。
7.根據權利要求1所述的方法,其特征在于,所述步驟S3中判斷所述狀態標志位Xmax是否為零,若是,則所述Tuple不是刪除記錄對應的Tuple。
8.根據權利要求1所述的方法,其特征在于,所述步驟S4的具體步驟包括:
在所述iColsNullSign中,判斷所述iColsNullSign的二進制bit位標識是否為1:
若是,則當前所述Tuple的實際數據為空,不進行解析;
若否,則通過所述TupleBegin得到所述Tuple的實際數據中的TupleData字段,并通過解析TupleData得到所述刪除記錄。
9.根據權利要求3所述的方法,其特征在于,所述步驟S4中還包括:對所述i加1,并判斷所述i是否大于或等于所述iRecInCoun,若是,則所述頁數據中的所有刪除記錄已被恢復完,若否,跳轉至所述步驟S2。
10.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,該計算機程序被計算機處理器執行時實施權利要求1至9中任一項所述的方法。
11.一種PostGresSQL數據庫刪除記錄的恢復裝置,其特征在于,包括:
頁數據讀取單元:配置用于讀取PostgreSQL數據庫的系統表pg_database表中表數據文件的頁數據;
Tuple實際數據獲取單元:配置用于取所述頁數據中的一個未處理的Tuple索引值,對所述Tuple索引值進行解析獲取所述Tuple索引值對應的Tuple相對于頁頭部的偏移量iTupOff以及所述Tuple的長度iTupLen,根據所述iTupOff和所述iTupLen確定所述Tuple的存儲位置后獲取所述Tuple的實際數據;
Tuple實際數據解析單元:配置用于解析所述Tuple的實際數據的頭部獲取所述Tuple的實際數據的頭部中的狀態標志位Xmax,判斷所述狀態標志位Xmax是否為零,若否,則所述Tuple為刪除記錄對應的Tuple;
刪除記錄恢復單元:配置用于解析所述Tuple的實際數據得到所述Tuple對應的刪除記錄。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廈門市美亞柏科信息股份有限公司,未經廈門市美亞柏科信息股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011581298.1/1.html,轉載請聲明來源鉆瓜專利網。





