亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法與數(shù)據(jù)庫(kù)管理系統(tǒng)的制作方法

文檔序號(hào):10570065閱讀:335來(lái)源:國(guó)知局
數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法與數(shù)據(jù)庫(kù)管理系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法與數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制。該方法包括:確定數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事務(wù),該待恢復(fù)事務(wù)未提交,待恢復(fù)事務(wù)對(duì)數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)執(zhí)行了更新操作;從用于記錄待恢復(fù)事務(wù)對(duì)數(shù)據(jù)執(zhí)行更新操作的更新操作日志中,獲取數(shù)據(jù)的舊值在存儲(chǔ)設(shè)備中的物理地址,舊值為數(shù)據(jù)在更新操作之前的值;利用舊值的物理地址替換數(shù)據(jù)的新值的物理地址,并將新值的物理地址置為無(wú)效,以使得數(shù)據(jù)的邏輯地址指向舊值的物理地址,新值為數(shù)據(jù)在更新操作之后的值。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明在事務(wù)恢復(fù)時(shí),能有效減少寫操作,進(jìn)而減少存儲(chǔ)設(shè)備的擦除操作,從而能夠延長(zhǎng)存儲(chǔ)設(shè)備的壽命。
【專利說(shuō)明】
數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法與數(shù)據(jù)庫(kù)管理系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,并且更具體地,涉及一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的 方法與數(shù)據(jù)庫(kù)管理系統(tǒng)。
【背景技術(shù)】
[0002] 事務(wù)(Transaction)是數(shù)據(jù)庫(kù)系統(tǒng)中由用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操 作要么全部執(zhí)行要么全不執(zhí)行,是一個(gè)不可分割的工作單位。例如在關(guān)系數(shù)據(jù)庫(kù)中,一個(gè)事 務(wù)可以是一條結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language,SQL)語(yǔ)句、一組SQL語(yǔ)句或整 個(gè)程序。在SQL中,定義事務(wù)的語(yǔ)句有3條:BEGIN TRANSACTION(事務(wù)開始)、COMMIT(事務(wù)提 交)、ROLLBACK (事務(wù)回滾)。
[0003] 事務(wù)通常是以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK結(jié)束。COMMIT表示提 交,即提交事務(wù)的所有操作,具體地說(shuō),是將事務(wù)中所有對(duì)數(shù)據(jù)庫(kù)的更新寫到磁盤上,事務(wù) 正常結(jié)束。ROLLBACK表示回滾,即在事務(wù)運(yùn)行的過(guò)程中發(fā)生某種故障,事務(wù)不能繼續(xù)執(zhí)行, 系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的操作全部撤銷(UNDO),回滾到事務(wù)開始時(shí)的狀態(tài)。 [0004] 事務(wù)具有四個(gè)特性:原子性(Atomic)、一致性(Consistency)、隔離性(Isolation) 和持久性(Durability)。原子性指的是,事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,一個(gè)事務(wù)中包括的 操作序列要么都做,要么都不做。一致性指的是,事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一 致性狀態(tài)變到另一個(gè)一致性狀態(tài)。當(dāng)數(shù)據(jù)庫(kù)只包含成功事務(wù)提交的結(jié)果時(shí),就說(shuō)數(shù)據(jù)庫(kù)處 于一致性狀態(tài)。如果數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,這些未完 成事務(wù)對(duì)數(shù)據(jù)庫(kù)所在的修改有一部分已經(jīng)寫入磁盤,這時(shí)數(shù)據(jù)庫(kù)就處于一種不正確的狀 態(tài),或者說(shuō)是不一致的狀態(tài)。隔離性指的是,一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。持久性 指的是,一個(gè)事務(wù)一旦提交(COMMIT),該事務(wù)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的,接 下來(lái)的其他操作或者故障不應(yīng)該對(duì)其執(zhí)行結(jié)果有任何影響。這四個(gè)特性簡(jiǎn)稱為ACID特性。 [0005] 由數(shù)據(jù)庫(kù)管理系統(tǒng)(database management system,DBMS)負(fù)責(zé)事務(wù)的處理,保證 事務(wù)的ACID特性是DBMS的重要任務(wù)。一旦事務(wù)的ACID特性遭到破壞,即數(shù)據(jù)庫(kù)出現(xiàn)錯(cuò)誤狀 態(tài),DBMS必須具有把數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一正確狀態(tài)(或稱為一致性狀態(tài))的功能, 這個(gè)過(guò)程就是數(shù)據(jù)庫(kù)恢復(fù)。
[0006]日志文件在數(shù)據(jù)庫(kù)恢復(fù)中起著非常重要的作用。日志文件是用來(lái)記錄事務(wù)對(duì)數(shù)據(jù) 庫(kù)的更新操作的文件,也可稱為事務(wù)日志。日志文件中需要登記的內(nèi)容包括:事務(wù)的開始 (BEGIN TRANSACTION)標(biāo)記;事務(wù)的結(jié)束(COMMIT或ROLLBACK)標(biāo)記;事務(wù)的所有更新操作。 具體地,事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作包括插入操作、刪除操作或修改操作。事務(wù)的開始標(biāo)記、 結(jié)束標(biāo)記和每個(gè)更新標(biāo)記均作為日志文件中的一個(gè)日志記錄(Log Record)。每個(gè)日志記錄 的內(nèi)容主要包括:事務(wù)標(biāo)識(shí)(標(biāo)明是哪個(gè)事務(wù));更新前數(shù)據(jù)的舊值(對(duì)于插入操作而言,此 項(xiàng)為空項(xiàng));更新后數(shù)據(jù)的新值(對(duì)于刪除操作而言,此項(xiàng)為空項(xiàng))。
[0007]為保證數(shù)據(jù)庫(kù)是可恢復(fù)的,登記日志文件必須遵循"先寫日志文件"(Write-Ahead Logging,WAL)的原則:事務(wù)的日志記錄的次序嚴(yán)格按事務(wù)執(zhí)行的時(shí)間次序;必須先寫日志 文件到磁盤,后寫更新數(shù)據(jù)到磁盤。
[0008] 當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行過(guò)程中發(fā)生事務(wù)故障或者系統(tǒng)故障,DBMS利用日志文件將數(shù)據(jù) 庫(kù)恢復(fù)到故障發(fā)生之前的某一個(gè)一致性狀態(tài)。
[0009] 事務(wù)故障是指事務(wù)在運(yùn)行至正常結(jié)束點(diǎn)之前被終止,這時(shí)利用日志文件撤銷 (UNDO)該事務(wù)已經(jīng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行的更新,即實(shí)現(xiàn)數(shù)據(jù)庫(kù)恢復(fù)。撤銷(UNDO)處理的基本步驟 為:(1)反向掃描日志文件(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。(2)對(duì)該 事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中"更新前數(shù)據(jù)的舊值"寫入物理數(shù)據(jù)庫(kù)(即磁 盤)。應(yīng)理解,如果日志記錄中為插入操作,則該逆操作相當(dāng)于刪除操作,因?yàn)?更新前數(shù)據(jù) 的舊值"為空;若日志記錄中是刪除操作,則該逆操作相當(dāng)于為插入操作;若日志記錄中為 修改操作,則該逆操作相當(dāng)于利用"更新前數(shù)據(jù)的舊值"替換"更新后數(shù)據(jù)的新值"。(3)繼續(xù) 反向掃描日志文件,查找該事務(wù)的更新操作,重復(fù)步驟(2)的處理,直至掃描到該事務(wù)的開 始標(biāo)記(BEGIN TRANSACTION)為止,該事務(wù)的事務(wù)故障恢復(fù)就完成了。
[0010] 系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致?tīng)顟B(tài)的原因有兩個(gè),一是在故障發(fā)生前,未完成事務(wù) 對(duì)數(shù)據(jù)庫(kù)的更新可能已經(jīng)寫入磁盤,二是在故障發(fā)生前,已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能 還留在緩存區(qū)沒(méi)來(lái)得及寫入磁盤。因此,針對(duì)系統(tǒng)故障的恢復(fù)操作就是要撤銷故障發(fā)生時(shí) 未完成的事務(wù),重做已完成的事務(wù)。系統(tǒng)故障的恢復(fù)步驟大致為:(1)正向掃描日志文件(即 從頭掃描日志文件),找出在故障發(fā)生前已經(jīng)提交的事務(wù)(這些事務(wù)既有BEGIN TRANSACTION日志記錄,又有COMMIT日志記錄),將其事務(wù)標(biāo)識(shí)記入重做(REDO)隊(duì)列。同時(shí)找 出故障發(fā)生前尚未完成的事務(wù)(這些事務(wù)只有BEGIN TRANSACTION日志記錄,沒(méi)有相應(yīng)的 COMMIT日志記錄),將其事務(wù)標(biāo)識(shí)記入撤銷(UNDO)隊(duì)列。(2)對(duì)撤銷隊(duì)列中的各個(gè)事務(wù)進(jìn)行 撤銷(UNDO)處理,與針對(duì)事務(wù)故障的恢復(fù)步驟類似,反向掃描日志文件,對(duì)每個(gè)UNDO事務(wù)的 更新操作執(zhí)行逆操作,即將UNDO事務(wù)的日志記錄中的"更新前數(shù)據(jù)的舊值"寫入磁盤。(3)對(duì) 重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做(REDO)處理。正向掃描日志文件,對(duì)每個(gè)REDO事務(wù)重新執(zhí) 行日志文件登記的操作,即將日志記錄中的"更新后的數(shù)據(jù)的新值"寫入磁盤。
[0011] 數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備(例如磁盤)中,數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行 離不開對(duì)存儲(chǔ)設(shè)備的讀、寫操作。以閃存作為存儲(chǔ)介質(zhì)的固態(tài)硬盤(Solid State Disk, SSD)是一種新型存儲(chǔ)設(shè)備,閃存并沒(méi)有像磁頭一樣的機(jī)械部件,其隨機(jī)訪問(wèn)模式和順序訪 問(wèn)模式的開銷是相當(dāng)?shù)?,因此,SSD比傳統(tǒng)磁盤具有更大的性能優(yōu)勢(shì)。當(dāng)前技術(shù)也希望采用 SSD作為數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備。
[0012] 由于SSD具有先擦除才能再寫入的特性,并且SSD的壽命是按擦除次數(shù)計(jì)算的,當(dāng) 前的SSD均支持寫時(shí)復(fù)制(Copy On Write,C0W)特性,即當(dāng)要更新SSD中已經(jīng)存儲(chǔ)的數(shù)據(jù)時(shí), 將數(shù)據(jù)的新值寫入空閑的存儲(chǔ)空間中,而非直接將數(shù)據(jù)的舊值擦除之后在原地覆蓋。
[0013] 將SSD作為數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備,能夠提高數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)存儲(chǔ)性能。但是由 于SSD的寫時(shí)復(fù)制特性,現(xiàn)有的事務(wù)撤銷(UNDO)操作會(huì)產(chǎn)生不必要的寫操作。例如,在數(shù)據(jù) 庫(kù)恢復(fù)過(guò)程中,對(duì)事務(wù)進(jìn)行撤銷(UNDO)處理,相當(dāng)于是對(duì)該事務(wù)的更新操作執(zhí)行逆操作,即 將日志記錄中"更新前數(shù)據(jù)的舊值"寫入磁盤。由于SSD的寫時(shí)復(fù)制特性,會(huì)在事務(wù)進(jìn)行撤銷 (UNDO)處理的過(guò)程中將"更新前數(shù)據(jù)的舊值"寫入空閑的存儲(chǔ)空間,但是,該"更新前數(shù)據(jù)的 舊值"可能在事務(wù)恢復(fù)時(shí)還依然存儲(chǔ)在一個(gè)存儲(chǔ)空間中。例如,事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作為 修改操作,則在該事務(wù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新操作之前,"更新前數(shù)據(jù)的舊值"是存儲(chǔ)在一個(gè)存 儲(chǔ)空間中的。假設(shè)發(fā)生事務(wù)故障需要利用日志文件撤銷(UNDO)該事務(wù)已經(jīng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行的 更新,并且該事務(wù)已經(jīng)將數(shù)據(jù)更新為新值,相當(dāng)于對(duì)該事務(wù)的更新操作執(zhí)行逆操作,將日志 記錄中"更新前數(shù)據(jù)的舊值"寫入磁盤,即將該"更新前數(shù)據(jù)的舊值"寫入空閑的存儲(chǔ)空間 中。這時(shí),該同一個(gè)"更新前數(shù)據(jù)的舊值"占用了兩個(gè)存儲(chǔ)空間,可以認(rèn)為事務(wù)撤銷(UNDO)處 理產(chǎn)生一次額外的、不必要的寫操作,這在SSD中是不希望看到的,因?yàn)?,?dāng)需要執(zhí)行撤銷 (UNDO)處理的事務(wù)較多時(shí),會(huì)在SSD中產(chǎn)生大量額外的、不必要的寫操作,這些額外的寫操 作可能會(huì)帶來(lái)一些不必要的擦除操作,從而縮短SSD的壽命。
[0014] 上述可知,當(dāng)以SSD等支持寫時(shí)復(fù)制(Copy On Write,C0W)特性的存儲(chǔ)設(shè)備作為數(shù) 據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備時(shí),在恢復(fù)事務(wù)時(shí)會(huì)產(chǎn)生不必要的寫操作,進(jìn)而引起不必要的擦除操 作,影響存儲(chǔ)設(shè)備的壽命。

【發(fā)明內(nèi)容】

[0015] 本發(fā)明提供一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法與數(shù)據(jù)庫(kù)管理系統(tǒng),能夠在事務(wù)恢 復(fù)時(shí),有效減少寫操作,從而減少對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備的損耗,延長(zhǎng)存儲(chǔ)設(shè)備的使用壽 命。
[0016] 第一方面,提供了一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法,所述數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè) 備支持寫時(shí)復(fù)制特性,所述方法包括:確定所述數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事務(wù),所述待恢復(fù)事 務(wù)未提交,所述待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)執(zhí)行了更新操作;從用于記錄所述 待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行所述更新操作的更新操作日志中,獲取所述數(shù)據(jù)的舊值在所述 存儲(chǔ)設(shè)備中的物理地址,所述舊值為所述數(shù)據(jù)在所述更新操作之前的值;利用所述舊值在 所述存儲(chǔ)設(shè)備中的物理地址替換所述數(shù)據(jù)的新值在所述存儲(chǔ)設(shè)備中的物理地址,并將所述 新值在所述存儲(chǔ)設(shè)備中的物理地址置為無(wú)效,以使得所述數(shù)據(jù)的邏輯地址指向所述舊值在 所述存儲(chǔ)設(shè)備中的物理地址,所述新值為所述數(shù)據(jù)在所述更新操作之后的值。
[0017] 在本發(fā)明實(shí)施例中,恢復(fù)事務(wù)時(shí),通過(guò)利用數(shù)據(jù)的舊值的物理地址替換所述數(shù)據(jù) 的新值的物理地址,使所述數(shù)據(jù)的邏輯地址指向所述數(shù)據(jù)的舊值的物理地址,使得所述數(shù) 據(jù)恢復(fù)為舊值,即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事務(wù)恢復(fù)時(shí),能夠有 效減少寫操作,在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少SSD的擦除操作,從而能夠延長(zhǎng) SSD的壽命。另外,由于減少了與操作,因此也能夠有效提尚事務(wù)恢復(fù)的效率。
[0018] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,在所述確定所述數(shù)據(jù)庫(kù) 系統(tǒng)中待恢復(fù)的事務(wù)之前,所述方法還包括:根據(jù)所述待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行的所述 更新操作,生成所述更新操作日志,所述更新操作日志包括:事務(wù)標(biāo)識(shí)、操作對(duì)象與歷史地 址,所述事務(wù)標(biāo)識(shí)用于指示所述待恢復(fù)事務(wù),所述操作對(duì)象用于指示所述待恢復(fù)事務(wù)所操 作的所述數(shù)據(jù),所述歷史地址用于指示所述舊值在所述存儲(chǔ)設(shè)備中的物理地址;在將所述 新值寫入所述存儲(chǔ)設(shè)備之前,將所述更新操作日志寫入所述存儲(chǔ)設(shè)備中。
[0019] 在本發(fā)明實(shí)施例中,通過(guò)在記錄事務(wù)對(duì)數(shù)據(jù)執(zhí)行更新操作的日志記錄中記錄數(shù)據(jù) 的舊值在存儲(chǔ)設(shè)備中的物理地址,在事務(wù)恢復(fù)時(shí),根據(jù)該日志記錄,利用該數(shù)據(jù)的舊值的物 理地址替換該數(shù)據(jù)的新值在存儲(chǔ)設(shè)備中的物理地址,將數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)到事務(wù)執(zhí)行之前的 狀態(tài),即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事務(wù)恢復(fù)時(shí),能夠有效減少寫 操作,在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少SSD的擦除操作,從而能夠延長(zhǎng)SSD的壽命。 另外,由于減少了寫操作,因此也能夠有效提高事務(wù)恢復(fù)的效率。
[0020] 結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的 實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備為基于閃存作為存儲(chǔ)介質(zhì)的固態(tài)硬盤,所述存儲(chǔ)設(shè)備的閃存轉(zhuǎn) 換層的邏輯地址LBA與物理地址PBA的映射表中存儲(chǔ)有所述舊值在所述存儲(chǔ)設(shè)備中的物理 地址。
[0021] 結(jié)合第一方面或第一方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第一方面的第三 種可能的實(shí)現(xiàn)方式中,所述更新操作為插入操作,所述舊值以及所述舊值在所述存儲(chǔ)設(shè)備 中的物理地址為空值;或所述更新操作為刪除操作,所述新值以及所述新值在所述存儲(chǔ)設(shè) 備中的物理地址為空值。
[0022] 在上述各個(gè)實(shí)現(xiàn)方式中,數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備指的是硬盤或磁盤,而非內(nèi)存。
[0023] 在上述各個(gè)實(shí)現(xiàn)方式中,數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備為支持寫時(shí)復(fù)制特征的存儲(chǔ)設(shè) 備,包括但不限于固態(tài)硬盤(SSD)或文件系統(tǒng)等。本文的有些地方描述為將數(shù)據(jù)或日志記錄 寫入磁盤,該磁盤對(duì)應(yīng)于該存儲(chǔ)設(shè)備。
[0024] 在上述各個(gè)實(shí)現(xiàn)方式中,事務(wù)的更新操作包括以下幾種操作:
[0025] 1)修改操作,指的是,所述事務(wù)修改數(shù)據(jù)庫(kù)中原本存在的數(shù)據(jù),將所述數(shù)據(jù)由舊值 修改為新值。這種情形下,所述數(shù)據(jù)的舊值與新值均為實(shí)際的數(shù)據(jù)值,且所述舊值與新值在 數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備都具有對(duì)應(yīng)的物理地址。
[0026] 2)插入操作,指的是,所述事務(wù)在數(shù)據(jù)庫(kù)中插入數(shù)據(jù)。這種情形下,所述數(shù)據(jù)的舊 值及其物理地址均為空值,因此,在所述插入操作的日志記錄中,用于記錄所述數(shù)據(jù)的舊值 的物理地址的項(xiàng)為空項(xiàng)。
[0027] 3)刪除操作,指的是,所述事務(wù)刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)。這種情形下,所述數(shù)據(jù)的新 值及其物理地址均為空值。
[0028]第二方面提供了一種數(shù)據(jù)庫(kù)管理系統(tǒng),所述數(shù)據(jù)庫(kù)管理系統(tǒng)所屬的數(shù)據(jù)庫(kù)系統(tǒng)的 存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特性,所述數(shù)據(jù)庫(kù)管理系統(tǒng)用于執(zhí)行上述第一方面或第一方面的任 一方面的可能實(shí)現(xiàn)方式中的方法。
[0029]具體地,所述數(shù)據(jù)庫(kù)管理系統(tǒng)可以包括用于執(zhí)行第一方面或第一方面的任一可能 的實(shí)現(xiàn)方式中的方法的模塊。
[0030]第三方面提供了一種數(shù)據(jù)庫(kù)管理系統(tǒng),所述數(shù)據(jù)庫(kù)管理系統(tǒng)所屬的數(shù)據(jù)庫(kù)系統(tǒng)的 存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特性,所述數(shù)據(jù)庫(kù)管理系統(tǒng)包括內(nèi)存(Memory)和處理器,該內(nèi)存用 于存儲(chǔ)指令,該處理器用于執(zhí)行該內(nèi)存存儲(chǔ)的指令,并且對(duì)該內(nèi)存中存儲(chǔ)的指令的執(zhí)行使 得該處理器執(zhí)行第一方面或第一方面的任一方面的可能實(shí)現(xiàn)方式中的方法。
[0031]基于上述技術(shù)方案,在本發(fā)明實(shí)施例中,恢復(fù)事務(wù)時(shí),通過(guò)利用數(shù)據(jù)的舊值的物理 地址替換所述數(shù)據(jù)的新值的物理地址,使所述數(shù)據(jù)的邏輯地址指向所述數(shù)據(jù)的舊值的物理 地址,使得所述數(shù)據(jù)恢復(fù)為舊值,即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事 務(wù)恢復(fù)時(shí),能夠有效減少寫操作。在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少SSD的擦除操 作,從而能夠延長(zhǎng)SSD的壽命。另外,由于減少了寫操作,因此也能夠有效提高事務(wù)恢復(fù)的效 率。
【附圖說(shuō)明】
[0032] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中 所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí) 施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附 圖獲得其他的附圖。
[0033] 圖la-c示出了根據(jù)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)系統(tǒng)的示意圖。
[0034] 圖2示出了根據(jù)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法的示意性流程 圖。
[0035] 圖3示出了根據(jù)本發(fā)明實(shí)施例提供的生成事務(wù)日志的方法的示意性流程圖。
[0036] 圖4示出了根據(jù)本發(fā)明實(shí)施例提供的回收事務(wù)日志的方法的示意性流程圖。
[0037] 圖5示出了根據(jù)本發(fā)明實(shí)施例提供的方法進(jìn)行事務(wù)恢復(fù)的實(shí)驗(yàn)結(jié)果的示意圖。
[0038] 圖6示出了根據(jù)本發(fā)明實(shí)施例提供的方法進(jìn)行事務(wù)恢復(fù)的實(shí)驗(yàn)結(jié)果的另一示意 圖。
[0039] 圖7示出了根據(jù)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng)的示意性框圖。
[0040] 圖8示出了根據(jù)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng)的另一示意性框圖。
[0041 ]圖9示出了根據(jù)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng)的再一示意性框圖。
【具體實(shí)施方式】
[0042]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā) 明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施 例,都屬于本發(fā)明保護(hù)的范圍。
[0043]本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法與數(shù)據(jù)庫(kù)管理系統(tǒng)可以應(yīng)用于單 機(jī)、集群或者雙機(jī)備份等數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)系統(tǒng)(Database System)是為適應(yīng)數(shù)據(jù)處理的 需要而發(fā)展起來(lái)的一種較為理想的數(shù)據(jù)處理系統(tǒng)。數(shù)據(jù)庫(kù)系統(tǒng)一般由以下三部分組成:(1) 數(shù)據(jù)庫(kù)(database,DB),指長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的,有組織,可共享的數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中 的數(shù)據(jù)按一定的數(shù)學(xué)模型組織、描述和存儲(chǔ),具有較小的冗余,較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展 性,并可為各種用戶共享。(2)硬件,包括存儲(chǔ)數(shù)據(jù)所需的存儲(chǔ)設(shè)備,例如內(nèi)存和/或磁盤。 (3)軟件,包括數(shù)據(jù)庫(kù)管理系統(tǒng)(database management system,DBMS),DBMS是數(shù)據(jù)庫(kù)系統(tǒng) 的核心軟件,是用于科學(xué)地組織和存儲(chǔ)數(shù)據(jù),以及高效獲取和維護(hù)數(shù)據(jù)的系統(tǒng)軟件,數(shù)據(jù)庫(kù) 弓丨擎是DBMS的核心內(nèi)容。
[0044]具體地,如圖1所示,圖la為單機(jī)數(shù)據(jù)庫(kù)系統(tǒng)示意圖,包括一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)和 存儲(chǔ)設(shè)備,該數(shù)據(jù)庫(kù)管理系統(tǒng)用于提供數(shù)據(jù)庫(kù)的查詢和修改等服務(wù),該數(shù)據(jù)庫(kù)管理系統(tǒng)將 數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備中。圖lb為集群數(shù)據(jù)庫(kù)系統(tǒng)示意圖,包括多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),分別為 用戶提供數(shù)據(jù)庫(kù)的查詢和修改等服務(wù),該多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)存儲(chǔ)有共享的數(shù)據(jù)在存儲(chǔ)設(shè) 備中,并且通過(guò)存儲(chǔ)區(qū)網(wǎng)絡(luò)(Storage Area Network,SAN)交換機(jī)對(duì)存儲(chǔ)設(shè)備中的數(shù)據(jù)執(zhí)行 讀寫操作。圖lc為雙機(jī)備份數(shù)據(jù)庫(kù)系統(tǒng)示意圖,包括2個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),其中一個(gè)為主機(jī), 另一個(gè)為備機(jī),主機(jī)和備機(jī)通過(guò)交換機(jī)相連接,并分別存儲(chǔ)數(shù)據(jù)到各自對(duì)應(yīng)的存儲(chǔ)設(shè)備上, 而且保持主機(jī)和備機(jī)存儲(chǔ)的數(shù)據(jù)同步,以便在主機(jī)故障時(shí)根據(jù)備機(jī)進(jìn)行恢復(fù)。圖1中未示出 數(shù)據(jù)庫(kù),應(yīng)理解,數(shù)據(jù)庫(kù)存儲(chǔ)在存儲(chǔ)設(shè)備中。
[0045] 在本發(fā)明實(shí)施例中,數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備為支持寫時(shí)復(fù)制(COW)特征的存儲(chǔ)設(shè) 備,包括但不限于固態(tài)硬盤(SSD)或文件系統(tǒng)等。
[0046] 為了便于理解和描述,作為示例而非限定,下面以數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備為SSD為 例進(jìn)行說(shuō)明。但是本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明實(shí)施例的教導(dǎo)可以很清楚地理解,本發(fā)明實(shí) 施例的方法同樣可以應(yīng)用于數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備為其他具有寫時(shí)復(fù)制(C0W)特征的存儲(chǔ) 設(shè)備(例如文件系統(tǒng))的場(chǎng)景,這樣的應(yīng)用均落入本發(fā)明的保護(hù)范圍內(nèi)。
[0047] 為了便于理解本發(fā)明實(shí)施例,下面結(jié)合表1以基于閃存作為存儲(chǔ)介質(zhì)的SSD為例介 紹一下寫時(shí)復(fù)制(C0W)特性。
[0048] 表1中的LBA指的是邏輯區(qū)塊地址(Logical Block Address),是描述SSD上數(shù)據(jù)所 在區(qū)塊的通用機(jī)制,LBA也可簡(jiǎn)稱為邏輯地址,如表1中所示的頁(yè)pageO。表1中的指的是 物理區(qū)塊地址(Physical Block Address),也可簡(jiǎn)稱為物理地址,如表1中所示的物理地址 11、11+1、11+2。由于閃存具有先擦除才能再寫入、讀/寫操作以頁(yè)為單位,擦除操作以塊(包括 多個(gè)頁(yè))為單位的特性,導(dǎo)致SSD的LBA與PBA的映射關(guān)系不是固定不變的,因此,需要閃存轉(zhuǎn) 換層(Flash translation layer,F(xiàn)TL)來(lái)負(fù)責(zé)LBA與PBA之間的轉(zhuǎn)換。FTL算法就是一種LBA 到PBA的映射關(guān)系。在SSD中,F(xiàn)TL利用LBA與PBA的映射表來(lái)管理閃存,當(dāng)閃存中的數(shù)據(jù)需要 更新時(shí),F(xiàn)TL將該數(shù)據(jù)更新后的新值寫入空白的閃存空間(對(duì)應(yīng)于新的PBA),然后更新該數(shù) 據(jù)的LBA與PBA的映射關(guān)系,將該數(shù)據(jù)的LBA指向新的PBA。以一個(gè)具體例子進(jìn)行說(shuō)明,假設(shè)初 始在閃存中寫入數(shù)據(jù),該數(shù)據(jù)的邏輯地址為表1中所示的pageO,該數(shù)據(jù)的物理地址為表1中 的物理地址為n,這時(shí),該數(shù)據(jù)的LBA與PBA的映射關(guān)系為pageO指向物理地址n(如表1第三行 所示表項(xiàng))。接著該數(shù)據(jù)需要被更新,由于SSD的C0W特性,該數(shù)據(jù)更新后的新值會(huì)被寫入其 他空白的閃存空間中,假設(shè)寫入新值的閃存空間對(duì)應(yīng)的物理地址為表1中所示的物理地址 (n+1),F(xiàn)TL更新該數(shù)據(jù)的LBA與PBA的映射關(guān)系為:page0指向物理地址(n+1),這樣,就實(shí)現(xiàn) 了對(duì)該數(shù)據(jù)的更新(即該數(shù)據(jù)的賦值為新值)。
[0049] 表 1
[0051]假設(shè)數(shù)據(jù)庫(kù)包括數(shù)據(jù)X,該數(shù)據(jù)X的邏輯地址LBA為表2中第三行所示的pageO,該數(shù) 據(jù)X在SSD中的物理地址PBA為表2中第三行所示的n,該數(shù)據(jù)X的賦值為a,a存儲(chǔ)在物理地址n 對(duì)應(yīng)的閃存空間中,該數(shù)據(jù)X的LBA與PBA之間的映射關(guān)系為pageO指向物理地址n。假設(shè)事務(wù) T對(duì)數(shù)據(jù)庫(kù)中的該數(shù)據(jù)對(duì)丸行修改操作,將數(shù)據(jù)X由舊值a修改為新值b。由于SSD的寫時(shí)復(fù)制 特性,該數(shù)據(jù)X的新值b被寫入空白的閃存空間,假設(shè)寫入新值b的閃存空間對(duì)應(yīng)的物理地址 為表2中第4行所示的物理地址(n+1),這時(shí),F(xiàn)TL更新該數(shù)據(jù)X的LBA與PBA的映射關(guān)系為: pageO指向物理地址(n+1),則該數(shù)據(jù)X被修改為新值b。假設(shè)系統(tǒng)發(fā)生故障,在故障發(fā)生之 前,該事務(wù)T未成功提交,則需要對(duì)該事務(wù)T進(jìn)行撤銷(UNDO)處理。
[0052]在傳統(tǒng)數(shù)據(jù)庫(kù)恢復(fù)技術(shù)中,用于描繪事務(wù)T的修改操作的日記記錄包括以下內(nèi)容: "該事務(wù)T的事務(wù)標(biāo)識(shí)"、"該事務(wù)T的操作對(duì)象X"、"更新前數(shù)據(jù)的舊值a"、"更新后數(shù)據(jù)的新 值b"。在對(duì)該事務(wù)T進(jìn)行UNDO處理時(shí),相當(dāng)于是對(duì)該事務(wù)T的修改操作執(zhí)行逆操作,即將數(shù)據(jù) X修改為日志記錄中的"更新前數(shù)據(jù)的舊值a"。由于SSD的寫時(shí)復(fù)制特性,該"更新前數(shù)據(jù)的 舊值a"被寫入空白的閃存空間,假設(shè)寫入該"更新前數(shù)據(jù)的舊值a"的閃存空間對(duì)應(yīng)的物理 地址為表2中第5行所示的物理地址(n+2),這時(shí),F(xiàn)TL更新該數(shù)據(jù)X的LBA與的映射關(guān)系 為:pageO指向物理地址(n+2),則該數(shù)據(jù)X又恢復(fù)為舊值a。這時(shí),通過(guò)撤銷(UNDO)處理,將數(shù) 據(jù)庫(kù)數(shù)據(jù))(恢復(fù)到被事務(wù)T修改之前的狀態(tài)。
[0053]但是從表2可以看出,數(shù)據(jù)X的同一個(gè)賦值"a"分別寫入閃存中的兩個(gè)存儲(chǔ)空間。將 "更新前數(shù)據(jù)的舊值a"寫入物理地址(n+2)對(duì)應(yīng)的閃存空間的寫操作,是一個(gè)不必要的寫操 作,這在閃存中是不希望看到的。
[0054]如果需要執(zhí)行撤銷(UNDO)處理的事務(wù)較多,則會(huì)大量出現(xiàn)如表2中第5行所示的不 必要的寫操作,大量不必要的寫操作可能會(huì)帶來(lái)不必要的擦除操作,導(dǎo)致縮短閃存的壽命, 進(jìn)而縮短SSD的壽命。
[0055] 此外,在傳統(tǒng)數(shù)據(jù)庫(kù)恢復(fù)技術(shù)中,在使用SSD作為存儲(chǔ)設(shè)備的情形下,通常必須要 通過(guò)執(zhí)行寫操作才能完成事務(wù)的撤銷(UNDO)處理,也降低了事務(wù)恢復(fù)的效率。
[0056] 表2
[0058]針對(duì)上述問(wèn)題,本發(fā)明實(shí)施例提出一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法與數(shù)據(jù)庫(kù)管 理系統(tǒng),在數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備為支持寫時(shí)復(fù)制特性的存儲(chǔ)設(shè)備(例如SSD)的情形下,能 夠在對(duì)事務(wù)執(zhí)行撤銷(UNDO)處理時(shí),有效減少寫操作,從而減少存儲(chǔ)設(shè)備的擦除操作,能夠 延長(zhǎng)存儲(chǔ)設(shè)備的壽命。
[0059] 如圖2所示,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法100,該數(shù)據(jù) 庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特性,該方法100的執(zhí)行主體可以為數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)庫(kù) 管理系統(tǒng),該方法100包括:
[0060] S110,反向掃描日志文件,即從日志文件的尾部向前掃描日志記錄。
[0061 ] S120,在掃描過(guò)程中,判斷事務(wù)T是否提交,若是,轉(zhuǎn)到S130,若否,轉(zhuǎn)到S140。
[0062]具體地,在掃描日志文件過(guò)程中,查找該事務(wù)T是否有提交(Commit)日志記錄,若 有,則認(rèn)為該事務(wù)T成功提交,若沒(méi)有,則認(rèn)為該事務(wù)T未提交,但是該事務(wù)T對(duì)數(shù)據(jù)庫(kù)的更新 操作可能已經(jīng)寫入磁盤,這時(shí)需要對(duì)該事務(wù)T進(jìn)行撤銷(UNDO)處理,以將數(shù)據(jù)庫(kù)恢復(fù)到該事 務(wù)T未執(zhí)行之前的狀態(tài)。
[0063] S130,跳過(guò),不做處理。
[0064] S140,確定事務(wù)T未提交,恢復(fù)該事務(wù)T,假設(shè)該事務(wù)T對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)執(zhí)行了更新 操作。從用于記錄該待恢復(fù)事務(wù)T對(duì)該數(shù)據(jù)執(zhí)行該更新操作的更新操作日志中,獲取該數(shù)據(jù) 的舊值在該存儲(chǔ)設(shè)備中的物理地址,該舊值為該數(shù)據(jù)在該更新操作之前的值,該更新操作 日志中包括該舊值在該存儲(chǔ)設(shè)備中的物理地址。
[0065] S150,利用該舊值在該存儲(chǔ)設(shè)備中的物理地址替換該數(shù)據(jù)的新值在該存儲(chǔ)設(shè)備中 的物理地址,并將該新值在該存儲(chǔ)設(shè)備中的物理地址置為無(wú)效,以使得該數(shù)據(jù)的邏輯地址 指向該舊值在該存儲(chǔ)設(shè)備中的物理地址,該新值為該數(shù)據(jù)在該更新操作之后的值。
[0066] S160,判斷日志文件掃描是否完畢,若是,轉(zhuǎn)到S170,若否,轉(zhuǎn)到S120。
[0067] S170,結(jié)束事務(wù)恢復(fù)過(guò)程。
[0068] 應(yīng)理解,通常在閃存中,讀操作的速度較快,寫操作的速度略慢,擦除操作的速度 最慢,在基于閃存的數(shù)據(jù)結(jié)構(gòu)中,應(yīng)當(dāng)盡量減少寫操作和擦除操作。在本發(fā)明實(shí)施例中,在 事務(wù)恢復(fù)時(shí),利用數(shù)據(jù)的舊值的物理地址替換數(shù)據(jù)的新值的物理地址,能夠減少寫操作,進(jìn) 而能夠減少閃存的擦除操作,從而能夠延長(zhǎng)閃存的壽命。
[0069] 因此,相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事務(wù)恢復(fù)時(shí),能夠有效減少寫操作,在存 儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少閃存的擦除操作,從而能夠延長(zhǎng)閃存的壽命。另外,由 于減少了寫操作,因此也能夠有效提高事務(wù)恢復(fù)的效率。
[0070] 應(yīng)理解,本發(fā)明實(shí)施例的方法可以應(yīng)用于事務(wù)故障恢復(fù)的場(chǎng)景,也可應(yīng)用于數(shù)據(jù) 庫(kù)系統(tǒng)故障恢復(fù)中的撤銷(UNDO)處理的場(chǎng)景。
[0071] 不同于現(xiàn)有技術(shù)的在用于描述事務(wù)對(duì)數(shù)據(jù)進(jìn)行更新操作日志記錄中記錄數(shù)據(jù)的 舊值,在本發(fā)明實(shí)施例中,在用于記錄事務(wù)對(duì)數(shù)據(jù)進(jìn)行更新操作的日志記錄中記錄有舊值 在存儲(chǔ)設(shè)備中的物理地址。
[0072] 可選地,在本發(fā)明實(shí)施例中,在掃描所述日志文件之前,所述方法100還包括:
[0073] 根據(jù)該待恢復(fù)事務(wù)對(duì)該數(shù)據(jù)執(zhí)行的該更新操作,生成該更新操作日志,該更新操 作日志包括:事務(wù)標(biāo)識(shí)、操作對(duì)象與歷史地址,該事務(wù)標(biāo)識(shí)用于指示該待恢復(fù)事務(wù),該操作 對(duì)象用于指示該待恢復(fù)事務(wù)所操作的該數(shù)據(jù),該歷史地址用于指示該舊值在該存儲(chǔ)設(shè)備中 的物理地址;在將該新值寫入該存儲(chǔ)設(shè)備之前,將該更新操作日志寫入該存儲(chǔ)設(shè)備中。
[0074] 具體地,圖3示出了根據(jù)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)系統(tǒng)中生成事務(wù)日志的方法 200的示意性流程圖,該數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特性,該方法200的執(zhí)行主體 可以為數(shù)據(jù)庫(kù)管理系統(tǒng),該方法200包括:
[0075] S210,開始一個(gè)事務(wù)T。
[0076] S220,執(zhí)行該事務(wù)T,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行修改操作,具體地,將數(shù)據(jù)X的舊值修 改為新值。
[0077] S230,生成一條用于記錄該事務(wù)T修改數(shù)據(jù)X的日志記錄,該日志記錄包括事務(wù)標(biāo) 識(shí)、操作對(duì)象與歷史地址,該事務(wù)標(biāo)識(shí)用于標(biāo)識(shí)該事務(wù)T,該操作對(duì)象用于指示該事務(wù)所操 作的數(shù)據(jù)X,該歷史地址用于指示該數(shù)據(jù)X的舊值在存儲(chǔ)設(shè)備中的物理地址,該日志記錄還 可以包括該數(shù)據(jù)X的新值。其中,該數(shù)據(jù)X的舊值表示該數(shù)據(jù)X在被該事務(wù)T修改之前的值,該 數(shù)據(jù)X的新值表示該數(shù)據(jù)X在被該事務(wù)T修改之后的值。
[0078] S240,將S230中生成的日志記錄寫入磁盤(即數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備SSD)。
[0079] S250,將該數(shù)據(jù)X的新值寫入磁盤(即SSD)。步驟S240必須在步驟S250之前執(zhí)行。 [0080] S260,提交該事務(wù)T。
[0081] S270,產(chǎn)生一條該事務(wù)T的提交(COMMIT)日志記錄。
[0082] S280,將S270產(chǎn)生的該事務(wù)T的提交(COMMIT)日志記錄寫入磁盤(即SSD)。
[0083]假設(shè),在步驟S250之后,數(shù)據(jù)庫(kù)系統(tǒng)發(fā)生故障,導(dǎo)致事務(wù)T在運(yùn)行至正常結(jié)束點(diǎn)(即 S280)之前被終止,即步驟S260、S270和S280未執(zhí)行。但是在故障發(fā)生之前,事務(wù)T對(duì)數(shù)據(jù)庫(kù) 的更新操作已經(jīng)生效,即事務(wù)T對(duì)數(shù)據(jù)X修改之后的新值已經(jīng)寫入磁盤。這時(shí),數(shù)據(jù)庫(kù)處于錯(cuò) 誤狀態(tài),需要恢復(fù)該事務(wù)T,即根據(jù)事務(wù)T的日志記錄撤銷(UNDO)該事務(wù)T。如圖2中所示,反 向掃描日志文件,查找事務(wù)T的日記記錄,根據(jù)日志記錄恢復(fù)該事務(wù)T,以將數(shù)據(jù)庫(kù)恢復(fù)到該 事務(wù)T未執(zhí)行之前的一致性狀態(tài)。
[0084]在本發(fā)明實(shí)施例中,在生成事務(wù)的日志記錄過(guò)程中,通過(guò)將數(shù)據(jù)的舊值在存儲(chǔ)設(shè) 備中的物理地址記錄到事務(wù)的日記記錄中,從而使得在事務(wù)恢復(fù)時(shí),通過(guò)利用日志記錄中 記載的數(shù)據(jù)的舊值的物理地址替換該數(shù)據(jù)的新值的物理地址,使得數(shù)據(jù)庫(kù)事務(wù)恢復(fù)到事務(wù) 執(zhí)行之前的狀態(tài)。因此,相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事務(wù)恢復(fù)時(shí),能夠有效減少寫操 作,在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少閃存的擦除操作,從而能夠延長(zhǎng)閃存的壽命。 另外,由于減少了寫操作,因此也能夠有效提高事務(wù)恢復(fù)的效率。
[0085] 還應(yīng)理解,在圖3中,如果事務(wù)T運(yùn)行至正常結(jié)束點(diǎn),即順利執(zhí)行完步驟S280,則該 事務(wù)T成功提交。則在如圖2所示的事務(wù)恢復(fù)的步驟S120中,判斷事務(wù)T有提交(COMMIT)日記 記錄,則不做處理(如圖2中的步驟S130所示)。
[0086]可選地,在本發(fā)明實(shí)施例中,事務(wù)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行更新操作包括以下幾種情 形:
[0087]第一種情形:修改數(shù)據(jù)(如圖3所示)。
[0088] 事務(wù)T修改數(shù)據(jù)X的數(shù)值,例如數(shù)據(jù)X的初始數(shù)值為a (對(duì)應(yīng)于舊值),事務(wù)T將數(shù)據(jù)X 的數(shù)值修改為b(對(duì)應(yīng)于新值)。這種情形下,數(shù)據(jù)X的舊值a與新值b各自存儲(chǔ)在磁盤中,數(shù)據(jù) X的舊值a在磁盤中有對(duì)應(yīng)的物理地址,數(shù)據(jù)X的新值b在磁盤中有對(duì)應(yīng)的物理地址。
[0089] 第二種情形,插入數(shù)據(jù)。
[0090] 在事務(wù)T執(zhí)行之前,數(shù)據(jù)庫(kù)中不存在數(shù)據(jù)X。執(zhí)行事務(wù)T,事務(wù)T將數(shù)據(jù)X插入數(shù)據(jù)庫(kù) 中。這種情形下,數(shù)據(jù)X的舊值及其物理地址均為空值,相應(yīng)地,日記記錄中針對(duì)該數(shù)據(jù)X的 舊值的物理地址的記錄項(xiàng)也為空項(xiàng)。
[0091] 第三種情形,刪除數(shù)據(jù)。
[0092] 在事務(wù)T執(zhí)行之前,數(shù)據(jù)庫(kù)中存在數(shù)據(jù)X。執(zhí)行事務(wù)T,該事務(wù)T將數(shù)據(jù)X從數(shù)據(jù)庫(kù)中 刪除。這種情形下,該數(shù)據(jù)X的新值及其物理地址均為空值,相應(yīng)地,日記記錄中針對(duì)該數(shù)據(jù) X的新值的記錄項(xiàng)也為空項(xiàng)。
[0093] 可選地,在本發(fā)明實(shí)施例中,如表3所示,根據(jù)事務(wù)對(duì)數(shù)據(jù)執(zhí)行的更新操作生成的 更新操作日志包括:
[0094]事務(wù)標(biāo)識(shí)(T_ID),用于指示該事務(wù),例如用于存儲(chǔ)該事務(wù)的標(biāo)示符。
[0095]操作對(duì)象(Element),用于指示該事務(wù)所操作的數(shù)據(jù)。
[0096]可選地,該操作對(duì)象可以直接存儲(chǔ)該事務(wù)所操作的數(shù)據(jù)的新值或者該數(shù)據(jù)的新值 在存儲(chǔ)設(shè)備中的物理地址;
[0097]歷史地址(PreAddress),用于指示該事務(wù)所操作的數(shù)據(jù)的舊值的物理地址。具體 地,歷史地址可以直接存儲(chǔ)該事務(wù)所操作的數(shù)據(jù)的舊值在存儲(chǔ)設(shè)備中的物理地址。
[0098]表 3
[0100]從表3可知,針對(duì)上述事務(wù)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行更新操作的三種不同情形,對(duì)應(yīng)的 日志記錄的內(nèi)容有所不同,在上述三種不同情形中,Element與PreAddress中存儲(chǔ)的信息分 別如下所述:
[0101 ]在第一種情形(修改數(shù)據(jù))中,Element中存儲(chǔ)的是事務(wù)修改之后的數(shù)據(jù)的新值, PreAddre ss中存儲(chǔ)的是事務(wù)修改之前的數(shù)據(jù)的舊值的物理地址,如表1中第2行、第3行、第7 行、第8行所示。
[0102]在第二種情形(插入數(shù)據(jù))中,Element中存儲(chǔ)的是事務(wù)修改之后的數(shù)據(jù)的新值, PreAddress中存儲(chǔ)的數(shù)據(jù)的舊值的物理地址設(shè)置為空,如表2中第4行所示。
[0103]在第三種情形(刪除數(shù)據(jù))中,在更新記錄(如表2中第5行所示)的同時(shí),再增加一 條日志,使用相同的事務(wù)標(biāo)識(shí)和Element,但是將數(shù)據(jù)的舊值的物理地址設(shè)置為刪除標(biāo)識(shí) (如表2中第6行所示)。
[0104]在基于表3所示的日志記錄進(jìn)行事務(wù)恢復(fù)過(guò)程中,對(duì)于第一種情形(如表1中第2 行、第3行、第7行、第8行所示),利用,PreAddress中存儲(chǔ)的數(shù)據(jù)的舊值的物理地址替換 Element中存儲(chǔ)的數(shù)據(jù)的新值的物理地址。對(duì)于第二種情形(如表2中第4行所示),可以直接 將數(shù)據(jù)的新值的物理地址置為空。對(duì)于第三種情形(如表2中第5行和第6行所示),按照刪除 日志(如表2中第6行所示)的前一條日志的記錄信息進(jìn)行恢復(fù),與第一種情形的恢復(fù)過(guò)程類 似。
[0105] 在本發(fā)明實(shí)施例中,提交(Commit)日志記錄如表3中第10行所示,舊值的物理地址 置為空,El ement中存儲(chǔ)提交(Commi t)標(biāo)識(shí)。
[0106]可選地,在本發(fā)明實(shí)施例中,所述存儲(chǔ)系統(tǒng)的閃存轉(zhuǎn)換層(Flash translation layer,F(xiàn)TL)的邏輯地址LBA與物理地址的映射表中存儲(chǔ)有所述舊值在所述存儲(chǔ)系統(tǒng)中 的物理地址。
[0107]應(yīng)理解,在閃存中,F(xiàn)TL負(fù)責(zé)LBA與PBA之間的轉(zhuǎn)換,具體地,F(xiàn)TL是通過(guò)維護(hù)和更新 LBA與PBA的映射表(如表1或表2所示)來(lái)實(shí)現(xiàn)LBA與PBA之間的轉(zhuǎn)換的。因此,F(xiàn)TL要想實(shí)現(xiàn)將 數(shù)據(jù)的邏輯地址(即LBA)指向數(shù)據(jù)的舊值的物理地址(即PBA),F(xiàn)TL所維護(hù)和更新的LBA與 PBA的映射表中就要事先存儲(chǔ)有該數(shù)據(jù)的舊值的物理地址,這樣,才能根據(jù)日志中記錄的數(shù) 據(jù)的舊值的物理地址,實(shí)現(xiàn)將數(shù)據(jù)的邏輯地址(即LBA)指向數(shù)據(jù)的舊值的物理地址(即 PBA),從而將數(shù)據(jù)恢復(fù)到被事務(wù)修改之前的狀態(tài)。
[0108]應(yīng)理解,數(shù)據(jù)庫(kù)管理系統(tǒng)定期會(huì)回收已提交事務(wù)的日志記錄,通過(guò)掃描日志文件, 將具有提交(COMMIT)日記記錄的事務(wù)的日志回收。
[0109] 如圖4所示,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)日志回收的方法300, 該數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特性,該方法300的執(zhí)行主體可以為數(shù)據(jù)庫(kù)管理系 統(tǒng),該方法300包括:
[0110] S310,反向掃描日志文件,即從日志文件的尾部逐步掃描日志。
[0111] S320,在掃描過(guò)程中,判斷事務(wù)T是否有提交(COMMIT)日志記錄,若否,轉(zhuǎn)到S330, 若是,轉(zhuǎn)到S340。
[0112] S330,確定事務(wù)T沒(méi)有提交(COMMIT)日志記錄,認(rèn)為該事務(wù)T未提交,對(duì)其不做日志 回收處理。
[0113] S340,確定事務(wù)T有提交(COMMIT)日志記錄,認(rèn)為該事務(wù)T已經(jīng)提交,回收該事務(wù)T 中被標(biāo)記為無(wú)效的數(shù)據(jù)存儲(chǔ)地址,例如數(shù)據(jù)的邏輯地址與物理地址。
[0114] S350,刪除該事務(wù)T的日志記錄。
[0115] S360,判斷日志文件是否掃描完畢,若是,轉(zhuǎn)到S370,若否,轉(zhuǎn)到S320。
[0116] S370,回收刪除的日志記錄所在的日志數(shù)據(jù)頁(yè),例如刪除該事務(wù)T的日志記錄所在 的日志數(shù)據(jù)頁(yè)。應(yīng)理解,日志數(shù)據(jù)頁(yè)指的是寫入物理地址中的日志數(shù)據(jù)。
[0117] 在S340中,回收事務(wù)T中被標(biāo)記為無(wú)效的數(shù)據(jù)物理地址,應(yīng)理解,應(yīng)理解,現(xiàn)有技術(shù) 中,在日志回收過(guò)程中,數(shù)據(jù)的舊值的物理存儲(chǔ)空間均被回收,但在本發(fā)明實(shí)施例中,僅回 收被標(biāo)識(shí)為無(wú)效的數(shù)據(jù)物理地址。
[0118] 可選地,在本發(fā)明實(shí)施例的步驟S330中,確定該事務(wù)T未提交的情況下,可以將該 事務(wù)T的日志記錄與其他未提交事務(wù)的日志記錄進(jìn)行日志頁(yè)合并。例如,將該事務(wù)T的日志 記錄移動(dòng)到其他未提交事務(wù)的日志記錄所在的日志數(shù)據(jù)頁(yè)上。
[0119] 應(yīng)理解,回收事務(wù)日志是數(shù)據(jù)庫(kù)系統(tǒng)的維護(hù)性操作,實(shí)際應(yīng)用中,可以根據(jù)數(shù)據(jù)庫(kù) 的事務(wù)量制定合理的調(diào)度計(jì)劃。
[0120]本發(fā)明實(shí)施例中,在事務(wù)恢復(fù)過(guò)程中,利用數(shù)據(jù)的舊值的物理地址替換數(shù)據(jù)的新 值的物理地址,同時(shí)也要調(diào)整數(shù)據(jù)庫(kù)的索引,應(yīng)理解,數(shù)據(jù)庫(kù)的索引是為了方便檢索而對(duì)數(shù) 據(jù)按照特定方式進(jìn)行組織的一種文件,因此,在數(shù)據(jù)庫(kù)事務(wù)恢復(fù)時(shí),也要調(diào)整對(duì)應(yīng)的索引, 可以基于目前的相關(guān)技術(shù)調(diào)整數(shù)據(jù)庫(kù)索引,在此不再贅述。
[0121]綜上所述,在本發(fā)明實(shí)施例中,恢復(fù)事務(wù)時(shí),通過(guò)利用數(shù)據(jù)的舊值的物理地址替換 所述數(shù)據(jù)的新值的物理地址,使所述數(shù)據(jù)的邏輯地址指向所述數(shù)據(jù)的舊值的物理地址,使 得所述數(shù)據(jù)恢復(fù)為舊值,即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事務(wù)恢復(fù) 時(shí),能夠有效減少寫操作,在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少閃存的擦除操作,從而 能夠延長(zhǎng)閃存的壽命。另外,由于減少了與操作,因此也能夠有效提尚事務(wù)恢復(fù)的效率。
[0122] 為了便于理解和描述,上文以數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備為SSD為例,描述了本發(fā)明實(shí) 施例的方法。但是本發(fā)明實(shí)施例對(duì)此不作限定,數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備還可以是其他支持 寫時(shí)復(fù)制(C0W)特征的存儲(chǔ)設(shè)備,該存儲(chǔ)設(shè)備可以基于硬件,也可以是基于軟件,例如文件 系統(tǒng)。
[0123] 上文均以SSD基于閃存為存儲(chǔ)介質(zhì)為例進(jìn)行描述,應(yīng)理解,SSD還可以動(dòng)態(tài)隨機(jī)存 儲(chǔ)器(dynamic random access memory,DRAM)作為存儲(chǔ)介質(zhì),本發(fā)明實(shí)施例對(duì)此不做限定。
[0124] 如圖5所示,在同等條件下,利用本發(fā)明實(shí)施例的方法進(jìn)行事務(wù)恢復(fù)所產(chǎn)生的寫操 作的次數(shù),明顯少于利用傳統(tǒng)數(shù)據(jù)庫(kù)事務(wù)恢復(fù)技術(shù)進(jìn)行事恢復(fù)所產(chǎn)生的寫操作的次數(shù)。
[0125] 如圖6所示,在數(shù)據(jù)庫(kù)的存儲(chǔ)設(shè)備為SSD的情形下,在同等更新操作(Update Ops) 次數(shù)條件下,利用本發(fā)明實(shí)施例的方法進(jìn)行事務(wù)恢復(fù)所需的恢復(fù)時(shí)間明顯少于利用傳統(tǒng)數(shù) 據(jù)庫(kù)事務(wù)恢復(fù)技術(shù)進(jìn)行事務(wù)恢復(fù)所需的恢復(fù)時(shí)間。圖6中的HDD指的是硬盤驅(qū)動(dòng)器(Hard Disk Drive,HDD),在數(shù)據(jù)庫(kù)的存儲(chǔ)設(shè)備為HDD的情形下,在同等更新操作(Update Ops)次 數(shù)條件下,利用本發(fā)明實(shí)施例的方法進(jìn)行事務(wù)恢復(fù)所需的恢復(fù)時(shí)間明顯少于傳統(tǒng)數(shù)據(jù)庫(kù)事 務(wù)恢復(fù)技術(shù)的恢復(fù)時(shí)間。
[0126] 圖7示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)管理系統(tǒng)400的示意性框圖,該數(shù)據(jù)庫(kù)管理 系統(tǒng)400所屬的數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特性,數(shù)據(jù)庫(kù)管理系統(tǒng)400包括:
[0127] 確定模塊410,用于確定該數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事務(wù),該待恢復(fù)事務(wù)未提交,該 待恢復(fù)事務(wù)對(duì)該數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)執(zhí)行了更新操作。
[0128] 獲取模塊420,用于從用于記錄該確定模塊確定的該待恢復(fù)事務(wù)對(duì)該數(shù)據(jù)執(zhí)行該 更新操作的更新操作日志中,獲取該數(shù)據(jù)的舊值在該存儲(chǔ)設(shè)備中的物理地址,該舊值為該 數(shù)據(jù)在該更新操作之前的值。
[0129] 替換模塊430,用于利用該獲取模塊獲取的該舊值在該存儲(chǔ)設(shè)備中的物理地址替 換該數(shù)據(jù)的新值在該存儲(chǔ)設(shè)備中的物理地址,并將該新值在該存儲(chǔ)設(shè)備中的物理地址置為 無(wú)效,以使得該數(shù)據(jù)的邏輯地址指向該舊值在該存儲(chǔ)設(shè)備中的物理地址,該新值為該數(shù)據(jù) 在該更新操作之后的值。
[0130]可選地,在本發(fā)明實(shí)施例中,確定模塊410、獲取模塊420與替換模塊430,可以由數(shù) 據(jù)庫(kù)管理系統(tǒng)400中的處理器或處理器相關(guān)電路組件實(shí)現(xiàn)。
[0131]本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng),恢復(fù)事務(wù)時(shí),通過(guò)利用數(shù)據(jù)的舊值的物理 地址替換所述數(shù)據(jù)的新值的物理地址,使所述數(shù)據(jù)的邏輯地址指向所述數(shù)據(jù)的舊值的物理 地址,使得所述數(shù)據(jù)恢復(fù)為舊值,即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事 務(wù)恢復(fù)時(shí),能夠有效減少寫操作,在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少閃存的擦除操 作,從而能夠延長(zhǎng)閃存的壽命。另外,由于減少了寫操作,因此也能夠有效提高事務(wù)恢復(fù)的 效率。
[0132] 可選地,在本發(fā)明實(shí)施例中,該數(shù)據(jù)庫(kù)管理系統(tǒng)400還包括:
[0133] 日志生成模塊440,用于根據(jù)該待恢復(fù)事務(wù)對(duì)該數(shù)據(jù)執(zhí)行的該更新操作,生成該更 新操作日志,該更新操作日志包括:事務(wù)標(biāo)識(shí)、操作對(duì)象與歷史地址,該事務(wù)標(biāo)識(shí)用于指示 該待恢復(fù)事務(wù),該操作對(duì)象用于指示該待恢復(fù)事務(wù)所操作的該數(shù)據(jù),該歷史地址用于指示 該舊值在該存儲(chǔ)設(shè)備中的物理地址;
[0134] 日志寫入模塊450,用于在將該新值寫入該存儲(chǔ)設(shè)備之前,將該更新操作日志寫入 該存儲(chǔ)設(shè)備中。
[0135] 具體地,該日志生成模塊440與日志寫入模塊450可以由數(shù)據(jù)庫(kù)管理系統(tǒng)400中的 處理器或處理器相關(guān)電路組件實(shí)現(xiàn)。
[0136] 可選地,在本發(fā)明實(shí)施例中,該存儲(chǔ)設(shè)備的閃存轉(zhuǎn)換層的邏輯地址LBA與物理地址 PBA的映射表中存儲(chǔ)有該舊值在該存儲(chǔ)設(shè)備中的物理地址。
[0137] 可選地,在本發(fā)明實(shí)施例中,該更新操作為插入操作,該舊值以及該舊值在該存儲(chǔ) 設(shè)備中的物理地址為空值;或
[0138] 該更新操作為刪除操作,該新值以及該新值在該存儲(chǔ)設(shè)備中的物理地址為空值。
[0139] 應(yīng)理解,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)管理系統(tǒng)400中的各個(gè)模塊的上述和其它操 作和/或功能分別為了實(shí)現(xiàn)圖2至圖4中的各個(gè)方法的相應(yīng)流程,為了簡(jiǎn)潔,在此不再贅述。 [0140]需要說(shuō)明的是,以圖8為例介紹本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng)500的邏輯結(jié) 構(gòu)。如圖8所示,數(shù)據(jù)庫(kù)管理系統(tǒng)500的硬件層包括處理器,例如CPU,當(dāng)然還可以包括內(nèi)存 (Memory)、輸入/輸出設(shè)備、網(wǎng)絡(luò)接口等。在硬件層之上運(yùn)行有操作系統(tǒng)內(nèi)核,例如Linux Kernel以及一些驅(qū)動(dòng)程序。除此之外,數(shù)據(jù)庫(kù)管理系統(tǒng)還包括應(yīng)用層,該應(yīng)用層包括應(yīng)用程 序等。
[0141] 應(yīng)理解,圖8中所示的內(nèi)存(Memory)用于暫時(shí)存放圖8中所示處理器中的運(yùn)算數(shù) 據(jù),以及與硬盤等外部存儲(chǔ)器(如圖1中所示的存儲(chǔ)設(shè)備)交換的數(shù)據(jù)。
[0142] 本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng)400包含的確定模塊410、獲取模塊420與替 換模塊430具體可以由如圖8中所示的處理器來(lái)實(shí)現(xiàn)。
[0143] 需要說(shuō)明的是,在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)管理系統(tǒng)500的產(chǎn)品形態(tài)可 以是計(jì)算節(jié)點(diǎn),或者服務(wù)器上的功能模塊,本發(fā)明對(duì)此不作限定。
[0144] 應(yīng)理解,本實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng)500可以執(zhí)行上述任一方法實(shí)施例中提 供的方法,詳細(xì)過(guò)程見(jiàn)方法實(shí)施例中的描述,此處不贅述。此外,本實(shí)施例提供的數(shù)據(jù)庫(kù)管 理系統(tǒng)500對(duì)應(yīng)于本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng)400。
[0145] 本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng),恢復(fù)事務(wù)時(shí),通過(guò)利用數(shù)據(jù)的舊值的物理 地址替換所述數(shù)據(jù)的新值的物理地址,使所述數(shù)據(jù)的邏輯地址指向所述數(shù)據(jù)的舊值的物理 地址,使得所述數(shù)據(jù)恢復(fù)為舊值,即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事 務(wù)恢復(fù)時(shí),能夠有效減少寫操作,在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少閃存的擦除操 作,從而能夠延長(zhǎng)閃存的壽命。另外,由于減少了寫操作,因此也能夠有效提高事務(wù)恢復(fù)的 效率。
[0146] 圖9示出了本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)庫(kù)管理系統(tǒng)600的示意性框圖,該數(shù)據(jù) 庫(kù)管理系統(tǒng)600所屬的數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特性,數(shù)據(jù)庫(kù)管理系統(tǒng)600可包 括處理器610、內(nèi)存(Memory)620、總線系統(tǒng)630、輸入設(shè)備640、輸出設(shè)備650。
[0147] 內(nèi)存620可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器610提供指令和數(shù) 據(jù)。內(nèi)存620的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)。
[0148] 內(nèi)存620存儲(chǔ)了如下的元素,可執(zhí)行模塊或者數(shù)據(jù)結(jié)構(gòu),或者它們的子集,或者它 們的擴(kuò)展集:
[0149] 操作指令:包括各種操作指令,用于實(shí)現(xiàn)各種操作。
[0150] 操作系統(tǒng):包括各種系統(tǒng)程序,用于實(shí)現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任務(wù)。
[0151] 在本發(fā)明實(shí)施例中,處理器610通過(guò)調(diào)用內(nèi)存620存儲(chǔ)的操作指令(該操作指令可 存儲(chǔ)在操作系統(tǒng)中),執(zhí)行如下操作:
[0152] 確定該數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事務(wù),該待恢復(fù)事務(wù)未提交,該待恢復(fù)事務(wù)對(duì)該數(shù) 據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)執(zhí)行了更新操作;從用于記錄該待恢復(fù)事務(wù)對(duì)該數(shù)據(jù)執(zhí)行該更新操作的 更新操作日志中,獲取該數(shù)據(jù)的舊值在該存儲(chǔ)設(shè)備中的物理地址,該舊值為該數(shù)據(jù)在該更 新操作之前的值;利用該舊值在該存儲(chǔ)設(shè)備中的物理地址替換該數(shù)據(jù)的新值在該存儲(chǔ)設(shè)備 中的物理地址,并將該新值在該存儲(chǔ)設(shè)備中的物理地址置為無(wú)效,以使得該數(shù)據(jù)的邏輯地 址指向該舊值在該存儲(chǔ)設(shè)備中的物理地址,該新值為該數(shù)據(jù)在該更新操作之后的值。
[0153]本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng),恢復(fù)事務(wù)時(shí),通過(guò)利用數(shù)據(jù)的舊值的物理 地址替換所述數(shù)據(jù)的新值的物理地址,使所述數(shù)據(jù)的邏輯地址指向所述數(shù)據(jù)的舊值的物理 地址,使得所述數(shù)據(jù)恢復(fù)為舊值,即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事 務(wù)恢復(fù)時(shí),能夠有效減少寫操作,在存儲(chǔ)設(shè)備為SSD的情況下,進(jìn)而能夠減少SSD的擦除操 作,從而能夠延長(zhǎng)SSD的壽命。另外,由于減少了寫操作,因此也能夠有效提高事務(wù)恢復(fù)的效 率。
[0154] 處理器610還可以稱為CPU(Central Processing Unit,中央處理單元)。內(nèi)存620 可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器610提供指令和數(shù)據(jù)。內(nèi)存620的一部 分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)。具體的應(yīng)用中,數(shù)據(jù)庫(kù)管理系統(tǒng)600的各 個(gè)組件通過(guò)總線系統(tǒng)630耦合在一起,其中總線系統(tǒng)630除包括數(shù)據(jù)總線之外,還可以包括 電源總線、控制總線和狀態(tài)信號(hào)總線等。但是為了清楚說(shuō)明起見(jiàn),在圖中將各種總線都標(biāo)為 總線系統(tǒng)630。
[0155] 上述本發(fā)明實(shí)施例揭示的方法可以應(yīng)用于處理器610中,或者由處理器610實(shí)現(xiàn)。 處理器610可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過(guò)程中,上述方法的各 步驟可以通過(guò)處理器610中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理 器610可以是通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列 (FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或 者執(zhí)行本發(fā)明實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或 者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直 接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完 成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可 編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于內(nèi)存620,處理器610讀取 內(nèi)存620中的信息,結(jié)合其硬件完成上述方法的步驟。
[0156] 可選地,在本發(fā)明實(shí)施例中,處理器610具體用于,根據(jù)該待恢復(fù)事務(wù)對(duì)該數(shù)據(jù)執(zhí) 行的該更新操作,生成該更新操作日志,該更新操作日志包括:事務(wù)標(biāo)識(shí)、操作對(duì)象與歷史 地址,該事務(wù)標(biāo)識(shí)用于指示該待恢復(fù)事務(wù),該操作對(duì)象用于指示該待恢復(fù)事務(wù)所操作的該 數(shù)據(jù),該歷史地址用于指示該舊值在該存儲(chǔ)設(shè)備中的物理地址;在將該新值寫入該存儲(chǔ)設(shè) 備之前,將該更新操作日志寫入該存儲(chǔ)設(shè)備中。
[0157] 可選地,在本發(fā)明實(shí)施例中,該存儲(chǔ)設(shè)備的閃存轉(zhuǎn)換層的邏輯地址LBA與物理地址 PBA的映射表中存儲(chǔ)有該舊值在該存儲(chǔ)設(shè)備中的物理地址。
[0158] 可選地,在本發(fā)明實(shí)施例中,該更新操作為插入操作,該舊值以及該舊值在該存儲(chǔ) 設(shè)備中的物理地址為空值;或
[0159]該更新操作為刪除操作,該新值以及該新值在該存儲(chǔ)設(shè)備中的物理地址為空值。 [0160]本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)管理系統(tǒng),恢復(fù)事務(wù)時(shí),通過(guò)利用數(shù)據(jù)的舊值的物理 地址替換所述數(shù)據(jù)的新值的物理地址,使所述數(shù)據(jù)的邏輯地址指向所述數(shù)據(jù)的舊值的物理 地址,使得所述數(shù)據(jù)恢復(fù)為舊值,即實(shí)現(xiàn)了事務(wù)恢復(fù)。相對(duì)于傳統(tǒng)技術(shù),本發(fā)明實(shí)施例在事 務(wù)恢復(fù)時(shí),能夠有效減少寫操作,進(jìn)而能夠減少存儲(chǔ)設(shè)備的擦除操作,從而能夠延長(zhǎng)存儲(chǔ)設(shè) 備的壽命。另外,由于減少了與操作,因此也能夠有效提尚事務(wù)恢復(fù)的效率。
[0161]應(yīng)理解,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)管理系統(tǒng)600可對(duì)應(yīng)于本發(fā)明實(shí)施例的數(shù)據(jù) 庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法的執(zhí)行主體,以及可以對(duì)應(yīng)于根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)管理系 統(tǒng)400和數(shù)據(jù)庫(kù)管理系統(tǒng)500,并且數(shù)據(jù)庫(kù)管理系統(tǒng)600中的各個(gè)模塊的上述和其它操作和/ 或功能分別為了實(shí)現(xiàn)圖2至圖4中的各個(gè)方法的相應(yīng)流程,為了簡(jiǎn)潔,在此不再贅述。
[0162] 應(yīng)理解,在本發(fā)明的各種實(shí)施例中,上述各過(guò)程的序號(hào)的大小并不意味著執(zhí)行順 序的先后,各過(guò)程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本發(fā)明實(shí)施例的實(shí)上 施過(guò)程構(gòu)成任何限定。
[0163] 本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單 元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟 以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員 可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出 本發(fā)明的范圍。
[0164] 所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、 裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0165] 在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以 通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的 劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件 可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或 討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦 合或通信連接,可以是電性,機(jī)械或其它的形式。
[0166] 所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè) 網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目 的。
[0167] 另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以 是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
[0168] 所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以 存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō) 對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì) 算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè) 人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。 而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(R0M,Read-0nly Memory)、隨機(jī)存取存 儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0169]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1. 一種數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)恢復(fù)的方法,所述數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí)復(fù)制特 性,其特征在于,包括: 確定所述數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事務(wù),所述待恢復(fù)事務(wù)未提交,所述待恢復(fù)事務(wù)對(duì)所 述數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)執(zhí)行了更新操作; 從用于記錄所述待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行所述更新操作的更新操作日志中,獲取所 述數(shù)據(jù)的舊值在所述存儲(chǔ)設(shè)備中的物理地址,所述舊值為所述數(shù)據(jù)在所述更新操作之前的 值; 利用所述舊值在所述存儲(chǔ)設(shè)備中的物理地址替換所述數(shù)據(jù)的新值在所述存儲(chǔ)設(shè)備中 的物理地址,并將所述新值在所述存儲(chǔ)設(shè)備中的物理地址置為無(wú)效,以使得所述數(shù)據(jù)的邏 輯地址指向所述舊值在所述存儲(chǔ)設(shè)備中的物理地址,所述新值為所述數(shù)據(jù)在所述更新操作 之后的值。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述確定所述數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事 務(wù)之前,所述方法還包括: 根據(jù)所述待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行的所述更新操作,生成所述更新操作日志,所述 更新操作日志包括:事務(wù)標(biāo)識(shí)、操作對(duì)象與歷史地址,所述事務(wù)標(biāo)識(shí)用于指示所述待恢復(fù)事 務(wù),所述操作對(duì)象用于指示所述待恢復(fù)事務(wù)所操作的所述數(shù)據(jù),所述歷史地址用于指示所 述舊值在所述存儲(chǔ)設(shè)備中的物理地址; 在將所述新值寫入所述存儲(chǔ)設(shè)備之前,將所述更新操作日志寫入所述存儲(chǔ)設(shè)備中。3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述存儲(chǔ)設(shè)備為基于閃存作為存儲(chǔ)介 質(zhì)的固態(tài)硬盤,所述存儲(chǔ)設(shè)備的閃存轉(zhuǎn)換層的邏輯地址LBA與物理地址PBA的映射表中存儲(chǔ) 有所述舊值在所述存儲(chǔ)設(shè)備中的物理地址。4. 根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述更新操作為插入操作,所 述舊值以及所述舊值在所述存儲(chǔ)設(shè)備中的物理地址為空值;或 所述更新操作為刪除操作,所述新值以及所述新值在所述存儲(chǔ)設(shè)備中的物理地址為空 值。5. -種數(shù)據(jù)庫(kù)管理系統(tǒng),所述數(shù)據(jù)庫(kù)管理系統(tǒng)所屬的數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí) 復(fù)制特性,其特征在于,包括: 確定模塊,用于確定所述數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事務(wù),所述待恢復(fù)事務(wù)未提交,所述待 恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)執(zhí)行了更新操作; 獲取模塊,用于從用于記錄所述確定模塊確定的所述待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行所述 更新操作的更新操作日志中,獲取所述數(shù)據(jù)的舊值在所述存儲(chǔ)設(shè)備中的物理地址,所述舊 值為所述數(shù)據(jù)在所述更新操作之前的值; 替換模塊,用于利用所述獲取模塊獲取的所述舊值在所述存儲(chǔ)設(shè)備中的物理地址替換 所述數(shù)據(jù)的新值在所述存儲(chǔ)設(shè)備中的物理地址,并將所述新值在所述存儲(chǔ)設(shè)備中的物理地 址置為無(wú)效,以使得所述數(shù)據(jù)的邏輯地址指向所述舊值在所述存儲(chǔ)設(shè)備中的物理地址,所 述新值為所述數(shù)據(jù)在所述更新操作之后的值。6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)管理系統(tǒng)還包括: 日志生成模塊,用于根據(jù)所述待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行的所述更新操作,生成所述 更新操作日志,所述更新操作日志包括:事務(wù)標(biāo)識(shí)、操作對(duì)象與歷史地址,所述事務(wù)標(biāo)識(shí)用 于指示所述待恢復(fù)事務(wù),所述操作對(duì)象用于指示所述待恢復(fù)事務(wù)所操作的所述數(shù)據(jù),所述 歷史地址用于指示所述舊值在所述存儲(chǔ)設(shè)備中的物理地址; 日志寫入模塊,用于在將所述新值寫入所述存儲(chǔ)設(shè)備之前,將所述更新操作日志寫入 所述存儲(chǔ)設(shè)備中。7. 根據(jù)權(quán)利要求5或6所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其特征在于,所述存儲(chǔ)設(shè)備為基于閃存 作為存儲(chǔ)介質(zhì)的固態(tài)硬盤,所述存儲(chǔ)設(shè)備的閃存轉(zhuǎn)換層的邏輯地址LBA與物理地址PBA的映 射表中存儲(chǔ)有所述舊值在所述存儲(chǔ)設(shè)備中的物理地址。8. 根據(jù)權(quán)利要求5至7中任一項(xiàng)所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其特征在于,所述更新操作為 插入操作,所述舊值以及所述舊值在所述存儲(chǔ)設(shè)備中的物理地址為空值;或 所述更新操作為刪除操作,所述新值以及所述新值在所述存儲(chǔ)設(shè)備中的物理地址為空 值。9. 一種數(shù)據(jù)庫(kù)管理系統(tǒng),所述數(shù)據(jù)庫(kù)管理系統(tǒng)所屬的數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)設(shè)備支持寫時(shí) 復(fù)制特性,其特征在于,所述數(shù)據(jù)庫(kù)管理系統(tǒng)包括內(nèi)存和處理器,所述內(nèi)存用于存儲(chǔ)指令, 所述處理器用于執(zhí)行所述內(nèi)存存儲(chǔ)的指令,并且對(duì)所述內(nèi)存存儲(chǔ)的指令的執(zhí)行使得所述處 理器用于: 確定所述數(shù)據(jù)庫(kù)系統(tǒng)中待恢復(fù)的事務(wù),所述待恢復(fù)事務(wù)未提交,所述待恢復(fù)事務(wù)對(duì)所 述數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)執(zhí)行了更新操作; 從用于記錄所述待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行所述更新操作的更新操作日志中,獲取所 述數(shù)據(jù)的舊值在所述存儲(chǔ)設(shè)備中的物理地址,所述舊值為所述數(shù)據(jù)在所述更新操作之前的 值; 利用所述舊值在所述存儲(chǔ)設(shè)備中的物理地址替換所述數(shù)據(jù)的新值在所述存儲(chǔ)設(shè)備中 的物理地址,并將所述新值在所述存儲(chǔ)設(shè)備中的物理地址置為無(wú)效,以使得所述數(shù)據(jù)的邏 輯地址指向所述舊值在所述存儲(chǔ)設(shè)備中的物理地址,所述新值為所述數(shù)據(jù)在所述更新操作 之后的值。10. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其特征在于,所述處理器還用于,根據(jù)所述 待恢復(fù)事務(wù)對(duì)所述數(shù)據(jù)執(zhí)行的所述更新操作,生成所述更新操作日志,所述更新操作日志 包括:事務(wù)標(biāo)識(shí)、操作對(duì)象與歷史地址,所述事務(wù)標(biāo)識(shí)用于指示所述待恢復(fù)事務(wù),所述操作 對(duì)象用于指示所述待恢復(fù)事務(wù)所操作的所述數(shù)據(jù),所述歷史地址用于指示所述舊值在所述 存儲(chǔ)設(shè)備中的物理地址;在將所述新值寫入所述存儲(chǔ)設(shè)備之前,將所述更新操作日志寫入 所述存儲(chǔ)設(shè)備中。11. 根據(jù)權(quán)利要求9或10所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其特征在于,所述存儲(chǔ)設(shè)備為基于閃 存作為存儲(chǔ)介質(zhì)的固態(tài)硬盤,所述存儲(chǔ)設(shè)備的閃存轉(zhuǎn)換層的邏輯地址LBA與物理地址PBA的 映射表中存儲(chǔ)有所述舊值在所述存儲(chǔ)設(shè)備中的物理地址。12. 根據(jù)權(quán)利要求9至11中任一項(xiàng)所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其特征在于,所述更新操作 為插入操作,所述舊值以及所述舊值在所述存儲(chǔ)設(shè)備中的物理地址為空值;或 所述更新操作為刪除操作,所述新值以及所述新值在所述存儲(chǔ)設(shè)備中的物理地址為空 值。
【文檔編號(hào)】G06F17/30GK105930500SQ201610300319
【公開日】2016年9月7日
【申請(qǐng)日】2016年5月6日
【發(fā)明人】孟小峰, 孫東旺
【申請(qǐng)人】華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1