[發(fā)明專利]一種數(shù)據(jù)庫溢出頁異常的檢測方法、裝置及存儲介質(zhì)有效
| 申請?zhí)枺?/td> | 201811186772.3 | 申請日: | 2018-10-12 |
| 公開(公告)號: | CN109446022B | 公開(公告)日: | 2022-08-12 |
| 發(fā)明(設(shè)計)人: | 陳明輝;張輝極;黃加紅;連洲紅 | 申請(專利權(quán))人: | 廈門市美亞柏科信息股份有限公司 |
| 主分類號: | G06F11/30 | 分類號: | G06F11/30;G06F16/22;G06F16/28 |
| 代理公司: | 廈門福貝知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 35235 | 代理人: | 郝學(xué)江 |
| 地址: | 361000 福建省廈門市*** | 國省代碼: | 福建;35 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 數(shù)據(jù)庫 溢出 異常 檢測 方法 裝置 存儲 介質(zhì) | ||
1.一種數(shù)據(jù)庫溢出頁異常的檢測方法,其特征在于,該方法包括:
獲取步驟,獲取一個數(shù)據(jù)庫溢出頁單元:遍歷B+tree葉子頁,讀取跨頁存儲的數(shù)據(jù)記錄;
檢測步驟,讀出數(shù)據(jù)庫溢出頁單元的鏈表的一個節(jié)點,從所述節(jié)點中讀取下一個節(jié)點的頁號RN,獲取所述數(shù)據(jù)庫溢出頁單元的鏈表的總長度TL,計算所述數(shù)據(jù)庫溢出頁單元的鏈表頭到當(dāng)前節(jié)點的長度RL,根據(jù)RN、TL和RL檢測數(shù)據(jù)庫溢出頁單元是否異常;
所述根據(jù)RN、TL和RL檢測數(shù)據(jù)庫溢出頁單元是否異常具體包括:判斷RN是否大于數(shù)據(jù)庫最大頁號MaxN,如果是,則RN對應(yīng)的節(jié)點的數(shù)據(jù)為異常數(shù)據(jù),如果否,則判斷是否滿足RN=0且RLTL,或RN≠0且RL≥TL,如果是,則RN對應(yīng)的節(jié)點的數(shù)據(jù)為異常數(shù)據(jù),如果否,則統(tǒng)計RN在B+tree的節(jié)點和空閑頁鏈表節(jié)點的次數(shù)N,如果N≥2,則RN對應(yīng)的節(jié)點的數(shù)據(jù)為異常數(shù)據(jù),如果否,則表示該數(shù)據(jù)庫溢出頁的數(shù)據(jù)正常。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
記錄步驟,記錄所述數(shù)據(jù)庫溢出頁異常的錯誤信息,所述錯誤信息包括數(shù)據(jù)庫溢出頁單元的鏈表的第一個節(jié)點的頁號、單元起始地址、下一單元起始地址和數(shù)據(jù)庫溢出頁出現(xiàn)異常的節(jié)點的頁號、節(jié)點序號。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)庫為SQLite數(shù)據(jù)庫,所述數(shù)據(jù)庫包括多個SQLite頁面,所述SQLite頁面采用B+tree進(jìn)行管理,其中,在B+tree中存放數(shù)據(jù)的SQLite頁面稱為葉子頁。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述獲取步驟的操作具體為:
從所述B+tree讀取一個葉子頁page,對一條數(shù)據(jù)記錄進(jìn)行查找,若查找結(jié)果為空,表示當(dāng)前頁查找結(jié)束,則繼續(xù)開始下一頁的查找,若查找結(jié)果不為空,將所述數(shù)據(jù)記錄在葉子頁的偏移記為r_offset;判斷r_size≤usable_size-r_offset是否成立,如果是,表示所述數(shù)據(jù)記錄不是數(shù)據(jù)庫溢出頁單元中的數(shù)據(jù)記錄,然后繼續(xù)查詢下一條數(shù)據(jù)記錄,如果否,則表示所述數(shù)據(jù)記錄是數(shù)據(jù)庫溢出頁單元中的數(shù)據(jù)記錄;其中,r_size為所述數(shù)據(jù)記錄的大小,usable_size為SQLite頁面的可用大小。
5.一種數(shù)據(jù)庫溢出頁異常的檢測裝置,其特征在于,該裝置包括:
獲取單元,用于獲取一個數(shù)據(jù)庫溢出頁單元:遍歷B+tree葉子頁,讀取跨頁存儲的數(shù)據(jù)記錄;
檢測單元,用于讀出數(shù)據(jù)庫溢出頁單元的鏈表的一個節(jié)點,從所述節(jié)點中讀取下一個節(jié)點的頁號RN,獲取所述數(shù)據(jù)庫溢出頁單元的鏈表的總長度TL,計算所述數(shù)據(jù)庫溢出頁單元的鏈表頭到當(dāng)前節(jié)點的長度RL,根據(jù)RN、TL和RL檢測數(shù)據(jù)庫溢出頁單元是否異常;所述根據(jù)RN、TL和RL檢測數(shù)據(jù)庫溢出頁單元是否異常具體包括:判斷RN是否大于數(shù)據(jù)庫最大頁號MaxN,如果是,則RN對應(yīng)的節(jié)點的數(shù)據(jù)為異常數(shù)據(jù),如果否,則判斷是否滿足RN=0且RLTL,或RN≠0且RL≥TL,如果是,則RN對應(yīng)的節(jié)點的數(shù)據(jù)為異常數(shù)據(jù),如果否,則統(tǒng)計RN在B+tree的節(jié)點和空閑頁鏈表節(jié)點的次數(shù)N,如果N≥2,則RN對應(yīng)的節(jié)點的數(shù)據(jù)為異常數(shù)據(jù),如果否,則表示該數(shù)據(jù)庫溢出頁的數(shù)據(jù)正常。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述裝置還包括:
記錄單元,用于記錄所述數(shù)據(jù)庫溢出頁異常的錯誤信息,所述錯誤信息包括數(shù)據(jù)庫溢出頁單元的鏈表的第一個節(jié)點的頁號、單元起始地址、下一單元起始地址和數(shù)據(jù)庫溢出頁出現(xiàn)異常的節(jié)點的頁號、節(jié)點序號。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述數(shù)據(jù)庫為SQLite數(shù)據(jù)庫,所述數(shù)據(jù)庫包括多個SQLite頁面,所述SQLite頁面采用B+tree進(jìn)行管理,其中,在B+tree中存放數(shù)據(jù)的SQLite頁面稱為葉子頁。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于廈門市美亞柏科信息股份有限公司,未經(jīng)廈門市美亞柏科信息股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811186772.3/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)及數(shù)據(jù)庫
- 數(shù)據(jù)庫構(gòu)筑裝置、數(shù)據(jù)庫檢索裝置、數(shù)據(jù)庫裝置、數(shù)據(jù)庫構(gòu)筑方法、以及數(shù)據(jù)庫檢索方法
- 數(shù)據(jù)庫和數(shù)據(jù)庫處理方法
- 數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫更新方法、數(shù)據(jù)庫以及數(shù)據(jù)庫更新程序
- 容器數(shù)據(jù)庫
- 數(shù)據(jù)庫同步方法及數(shù)據(jù)庫
- 一種MongoDB數(shù)據(jù)庫對象復(fù)制延遲監(jiān)控方法和裝置
- 數(shù)據(jù)分布式存儲方法、裝置、電子設(shè)備及存儲介質(zhì)
- 數(shù)據(jù)庫語句執(zhí)行方法及裝置





