欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

延遲日志生成的方法及其設(shè)備的制作方法

文檔序號:6609521閱讀:197來源:國知局
專利名稱:延遲日志生成的方法及其設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種在數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的日志生成(logging) 方法,更具體地說,涉及一種用于在更新DB并且生成日志記錄(log record) 時可通過使用日志項來減小所述日志大小的日志生成方法和設(shè)備。
背景技術(shù)
使用數(shù)據(jù)庫管理系統(tǒng)(DBMS)的目的在于系統(tǒng)地管理數(shù)據(jù),從而更加 容易地開發(fā)應用程序,并且在任何情況下安全地維護并管理數(shù)據(jù)。 一般來說, DBMS根據(jù)數(shù)據(jù)改變來執(zhí)行日志生成,以保證這種數(shù)據(jù)庫(DB )的穩(wěn)定性(持 久性)。
日志生成是DBMS的基本功能,其中,發(fā)生數(shù)據(jù)的插入、刪除或者更新, 并且所述數(shù)據(jù)的插入、刪除或者更新被記錄到穩(wěn)定的存儲裝置(諸如,盤驅(qū) 動)中,以通過使用異常情況下生成的日志的信息來允許恢復到先前的DB 狀態(tài)。
在DBMS中,持久性的概念是業(yè)務處理的重要特征之一,所述重要特征 包括原子性、 一致性、隔離性和持久性(ACID)。持久性表示如果成功 完成業(yè)務,則即使發(fā)生系統(tǒng)錯誤也應當保證在DB中反映出該業(yè)務處理的結(jié) 果。通常,DBMS將在進行業(yè)務處理時發(fā)生的狀態(tài)改變的內(nèi)容記錄為曰志, 并且將該日志存儲到諸如盤的穩(wěn)定的存儲介質(zhì)中。因此,DB的狀態(tài)改變被記 錄在日志中,并且該日志支持DB的狀態(tài)的一致性維護。在其最簡表格中, 由業(yè)務改變的所有內(nèi)容被記錄在盤上的日志文件中;然而,業(yè)務的每一項操 作都伴有盤輸入和輸出_|喿作,所以DBMS的性能被大大地降低。 圖1是示出根據(jù)傳統(tǒng)技術(shù)的DBMS的日志生成處理的示意圖。 在盤(即,永久存儲介質(zhì))驅(qū)動120的預定區(qū)域中的DB 121包括數(shù)據(jù)
文件121a和日志文件121b。當執(zhí)行應用程序引起通過業(yè)務執(zhí)行更新時,相關(guān) 的數(shù)據(jù)文件以頁為單位被載入到存儲器110的緩沖器113中。如果在存儲器 110中執(zhí)行與數(shù)據(jù)頁的業(yè)務相應的區(qū)域llla的更新,則在日志頁112中寫入 與該更新相應的日志記錄112b。根據(jù)預寫式日志(WAL)協(xié)議,所述更新的 輸入頁和產(chǎn)生的日志頁被分別存儲在盤驅(qū)動120的數(shù)據(jù)文件121a和日志文件 121b中。
WAL協(xié)議是首先將日志頁存儲在盤中,并隨后存儲數(shù)據(jù)頁,以排除在未 完成的業(yè)務的改變內(nèi)容被存儲在盤中時發(fā)生的錯誤的過程。根據(jù)WAL協(xié)議, 當再次運行系統(tǒng)時,系統(tǒng)可安全地被恢復到異常發(fā)生之前的狀態(tài)。 圖2是示出根據(jù)傳統(tǒng)技術(shù)的日志記錄格式的數(shù)據(jù)結(jié)構(gòu)的示圖。 如圖2所示,形成具有多個字段的包括更新信息的日志記錄。 先前日志序列號(LSN)是由預定業(yè)務生成的先前日志記錄的LSN。換 句話說,LSN是日志記錄的標識號(ID )并且指示日志頁中記錄日志記錄的 位置。因此,LSN包括日志頁的編號以及所述日志頁內(nèi)的偏移。
除了LSN之外,日志記錄包括業(yè)務ID、指示日志記錄類型的類型字 段、指示更新的數(shù)據(jù)頁的編號的頁ID、更新數(shù)據(jù)的長度、更新的數(shù)據(jù)頁內(nèi)的 偏移和分別與更新前后的鏡像對應的前鏡像和后鏡像。
圖3A和圖3B示出了根據(jù)傳統(tǒng)技術(shù)在執(zhí)行更新時生成的日志記錄。 參照圖3A,可以確定在數(shù)據(jù)頁1 310中發(fā)生過兩次更新4乘作。首先,位 于數(shù)據(jù)頁1 310的偏移10的數(shù)據(jù)"name" 311被改為"kate" 311a,并且位于偏 移31的數(shù)據(jù)"0000" 312被改為"0021" 312a。
這里,從日志記錄1 (LR1 ) 320可以確定更新前的鏡像的值"name"被改 為更新后的鏡像的值"kate"。從日志記錄2 (LR2) 330可以確定值"OOOO"被 改為"0021"。當日志記錄320和330的每一個被生成時,它們被同時記錄在 日志頁中。
如果以這種方式繼續(xù)執(zhí)行更新,則將被寫在日志頁中的日志記錄的數(shù)量 與更新的頻率成比例地增加。
圖3B示出了以下所述。參照圖3B,通過以下參照上述圖3A描述的日 志記錄340和350,由其他更新操作導致了從"kate"改為"john"的日志記錄360 以及被從"0021"改為"0701"的日志記錄370被生成,并且可以確定日志記錄 380被隨后連續(xù)地生成。
以這種方式,由日志生成處理引起的日志大小可變成實際更新的數(shù)據(jù)大 小的幾倍到幾百倍。日志大小的增加引起盤輸入和/或輸出,從而降低更新操 作的速度,并且減少了盤上所剩的可用空間。此外,當由于異常情況的發(fā)生 而執(zhí)行恢復操作時,從盤上讀取并處理很大的日志數(shù)據(jù)增加了恢復需要的時間。

發(fā)明內(nèi)容
本發(fā)明提供一種在由更新生成日志記錄時通過使用日志項來減小日志大 小的日志生成方法和設(shè)備。
根據(jù)本發(fā)明的一方面,提供了一種在數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的日 志生成方法,所述方法包括存儲正被更新的數(shù)據(jù)頁的日志信息;在完成數(shù) 據(jù)頁的更新時讀取存儲的日志信息;通過使用讀取的日志信息生成日志記錄; 和將生成的日志記錄寫入日志頁。
存儲日志信息的步驟可包括生成包括正被更新的數(shù)據(jù)頁的偏移值的曰 志項;將正被更新的數(shù)據(jù)頁的日志信息記錄在生成的日志項中;和通過使用 記錄的日志信息合并至少兩個或者多個日志項。
在合并至少兩個或者多個日志項的步驟中,如果存在關(guān)于與更新的數(shù)據(jù) 頁的區(qū)域相同的區(qū)域而已經(jīng)生成的日志項,則可以將其中記錄有正被更新的 數(shù)據(jù)頁的日志信息的日志項添加到已經(jīng)生成的日志項, >(人而合并日志項。
在合并至少兩個或者多個日志項的步驟中,如果存在關(guān)于與更新的數(shù)據(jù) 頁的區(qū)域相鄰的區(qū)域而已經(jīng)生成的日志項,則關(guān)于所述相鄰區(qū)域,可以對包 括在已經(jīng)生成的日志項中的偏移值進行改變,從而合并日志項。
在合并至少兩個或者多個日志項的步驟中,如果存在關(guān)于與正被更新的 數(shù)據(jù)頁的區(qū)域重疊的區(qū)域而已經(jīng)生成的日志項,則可以關(guān)于所述重疊區(qū)域, 對包括在已經(jīng)生成的日志項中的偏移值進行改變,從而合并日志項。
當完成對數(shù)據(jù)頁的更新操作時可以執(zhí)行合并至少兩個或者多個日志項的步驟。
所述完成數(shù)據(jù)頁的更新操作的時間可以是提交執(zhí)行更新操作的業(yè)務的時 間,或者數(shù)據(jù)頁被轉(zhuǎn)儲清除的時間。
所述生成的日志項關(guān)于正被更新的數(shù)據(jù)頁并且關(guān)于執(zhí)行更新操作的每個 業(yè)務被管理。
所述產(chǎn)生的日志項可根據(jù)包括在該日志項中的偏移值被分類。
生成日志項和記錄日志信息可使用恢復和獨立開發(fā)語義算法(ARIES ), 并且遵守預寫式日志(WAL)協(xié)議。
根據(jù)本發(fā)明的另一方面,提供一種在DBMS中的日志生成方法,所述方 法包括生成正被更新的數(shù)據(jù)頁的復制的鏡像,所述鏡像與更新之前的所述 原始鏡像相同;生成正被更新的數(shù)據(jù)頁的日志項;合并生成的日志項;對原 始鏡像執(zhí)行更新操作;和如果完成更新操作,則通過l吏用所述原始鏡像、復 制的鏡像和合并的日志項生成日志記錄。
在合并生成的日志項的步驟中,如果存在關(guān)于與正被更新的數(shù)據(jù)頁的區(qū) 域相同的區(qū)域而已經(jīng)生成的日志項,則可以將關(guān)于正一皮更新的數(shù)據(jù)頁的曰志 項添加到已經(jīng)生成的日志項,從而合并日志項。
在合并生成的日志項的步驟中,如果存在關(guān)于與更新的數(shù)據(jù)頁的區(qū)域相 鄰的區(qū)域而已經(jīng)生成的日志項,則關(guān)于所述相鄰區(qū)域可以對包括在已經(jīng)生成 的日志項中的偏移值進行改變,從而合并日志項。
在合并生成的日志項的步驟中,如果存在關(guān)于與更新的數(shù)據(jù)頁的區(qū)域重 疊的區(qū)域而已經(jīng)生成的日志項,則關(guān)于所述重疊區(qū)域可以對包括在已經(jīng)生成 的曰志項中的偏移值進行改變,從而合并日志項。
當完成對數(shù)據(jù)頁的更新操作時可以執(zhí)行合并生成的日志項的步驟。
所述完成更新操作的時間可以是提交執(zhí)行更新操作的業(yè)務的時間,或者 原始鏡像的數(shù)據(jù)頁被轉(zhuǎn)儲清除的時間。
所述方法還可以包括在管理始鏡像、復制的鏡像和執(zhí)行更新操作的業(yè) 務之間的關(guān)系的緩存頁信息單元中寄存原始鏡像、復制的鏡像和關(guān)于所述業(yè) 務的信息。
每個業(yè)務被管理。
所述生成的日志項可以根據(jù)包括在該日志項中的偏移值被分類。
日志項可以具有正被更新的數(shù)據(jù)頁的區(qū)域的長度和正被更新的數(shù)據(jù)頁
中的更新的區(qū)域的開始位置,或者正被更新的數(shù)據(jù)頁中的更新的區(qū)域的開始
位置和結(jié)束位置。
如果存在多項執(zhí)行更新操作的業(yè)務,并且所述更新業(yè)務被同時執(zhí)行,則 可以應用嚴^f各兩^:鎖(2PL)協(xié)議。
如果在完成更新時所述業(yè)務被提交,則所述方法還可以包括確定在數(shù) 據(jù)頁中是否存在另一業(yè)務;如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一業(yè)務,則 在復制的鏡像的相應區(qū)域內(nèi)記錄與其提交的業(yè)務的各個日志項相應的原始鏡 像的更新的區(qū)域;和如果確定結(jié)果指示lt據(jù)頁中不存在其他業(yè)務,則刪除復 制的鏡像。
如果在沒有完成更新操:作時所述業(yè)務異常中止,則所述方法還可以包括 確定在數(shù)據(jù)頁中是否存在另一業(yè)務;如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一 業(yè)務,則在原始鏡像的相應區(qū)域內(nèi)記錄與異常中止的業(yè)務的各個曰志項相應 的更新前的復制的鏡像的區(qū)域;和如果確定結(jié)果指示數(shù)據(jù)頁中不存在其他業(yè) 務,則將復制的鏡像替換為原始鏡像。
在完成更新操作時業(yè)務被提交,則所述方法還可以包括確定在數(shù)據(jù)頁 中是否存在另一業(yè)務;如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一業(yè)務,則在緩 存頁信息單元中記錄所述業(yè)務被提交;和如果確定結(jié)果指示數(shù)據(jù)頁中不存在 其他業(yè)務,則刪除復制的鏡像。
如果在沒有完成更新操作時所述業(yè)務異常中止,則所述方法還可以包括 確定在數(shù)據(jù)頁中是否存在另一業(yè)務;通過參照緩存頁信息單元確定在數(shù)據(jù)頁 中是否存在另一提交的業(yè)務;如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一業(yè)務或 者另一提交的業(yè)務,則在原始鏡像的相應區(qū)域內(nèi)記錄與異常中止的業(yè)務的各 個曰志項相應的更新前的復制的鏡像的區(qū)域;和如果確定結(jié)果指示數(shù)據(jù)頁中 不存在其他業(yè)務或者其他提交的業(yè)務,則將復制的鏡像替換為原始鏡像。
如果在完成更新業(yè)務時原始鏡像的數(shù)據(jù)頁被轉(zhuǎn)儲清除,則所述方法還可 以包括生成轉(zhuǎn)儲清除的數(shù)據(jù)頁的全部日志項的日志記錄;和刪除復制的鏡 像。
才艮據(jù)本發(fā)明的另一方面,提供一種在DBMS中的日志生成設(shè)備,包括 曰志存儲單元,存儲正被更新的數(shù)據(jù)頁的日志信息;日志讀取單元,在完成 數(shù)據(jù)頁的更新搡作時讀取存儲在日志存儲單元中的日志信息;和日志控制單 元,基于讀取的日志信息生成日志記錄,并將生成的日志記錄記錄在日志頁 中。
根據(jù)本發(fā)明的另一方面,提供一種在DBMS中的日志生成設(shè)備,所述設(shè) 備包括業(yè)務控制單元,管理執(zhí)行數(shù)據(jù)頁的更新,操作的業(yè)務;日志控制單元, 將根據(jù)由業(yè)務控制單元管理的業(yè)務的更新操作生成的日志信息進行合并,從
而生成日志記錄,并將生成的日志記錄記錄在日志頁中;和緩存控制單元, 管理被執(zhí)行更新操作的數(shù)據(jù)頁,并且管理所述日志頁,從而可以將所述數(shù)據(jù) 頁和日志頁輸入存儲介質(zhì),或者從存儲介質(zhì)輸出所述數(shù)據(jù)頁和日志頁。
日志控制單元可以包括第一存儲單元,存儲復制的鏡像,所述復制的 鏡像與正被執(zhí)行更新操作的數(shù)據(jù)頁的更新之前的原始鏡像相同;第二存儲單 元,存儲日志項,所述日志項根據(jù)由業(yè)務控制單元管理的業(yè)務的更新操作被 生成;日志合并單元,將至少兩個或者多個存儲在第二存儲單元的日志項進
行合并;和日志輸出單元,在完成更新操作時通過使用原始鏡像、復制的鏡
像和合并的日志項生成日志記錄,并且將生成的日志記錄記錄在日志頁中。 緩存控制單元可以管理緩存頁信息單元,在所述緩存頁信息單元中寄存
有原始鏡像、復制的鏡像和關(guān)于執(zhí)行更新操作的業(yè)務的信息。
根據(jù)本發(fā)明的另一方面,提供一種其上實現(xiàn)有用于執(zhí)行所述方法的計算
機程序的計算機可讀記錄介質(zhì)。


通過參照附圖對本發(fā)明示例性實施例的詳細描述,本發(fā)明的以上和其他
方面將變得更加清楚,其中
圖1是示出根據(jù)傳統(tǒng)技術(shù)的DBMS的日志生成處理的示意圖2是示出才艮據(jù)傳統(tǒng)技術(shù)的日志記錄格式的tt據(jù)結(jié)構(gòu)的示圖3A和圖3B示出了根據(jù)傳統(tǒng)技術(shù)在執(zhí)行更新時生成的日志記錄;
圖4A和圖4B示出了根據(jù)本發(fā)明示例性實施例的合并多條日志記錄的結(jié)
果;
圖5是示出才艮據(jù)本發(fā)明示例性實施例的在DB中的日志生成方法的流程
圖6是根據(jù)本發(fā)明示例性實施例的更加詳細地示出圖5中所示的日志信 息的存儲的流程圖7是示出根據(jù)本發(fā)明另一示例性實施例的在DB中的日志生成方法的 流程圖8A和圖8B是示出根據(jù)本發(fā)明示例性實施例的日志項格式的數(shù)據(jù)結(jié)構(gòu) 的示圖9是示出根據(jù)本發(fā)明示例性實施例的通過一次業(yè)務更新的示例的示
圖10是示出根據(jù)本發(fā)明示例性實施例的通過兩次或者多次業(yè)務更新的 示例的示圖11是示出根據(jù)本發(fā)明示例性實施例的每一種模式的更新操作的示圖; 圖12是示出才艮據(jù)本發(fā)明示例性實施例的作為圖11中所示的操作完成的 結(jié)果被生成的日志項的示圖13示出了根據(jù)本發(fā)明示例性實施例的用于生成日志項的處理的偽代
碼;
圖14示出了才艮據(jù)本發(fā)明示 圖15示出了沖艮據(jù)本發(fā)明 代碼;
圖16示出了根據(jù)本發(fā)明示例性實施例的用于轉(zhuǎn)儲清除數(shù)據(jù)頁的處理的 偽代碼;
圖17是示出了根據(jù)本發(fā)明示例性實施例的數(shù)據(jù)庫日志生成設(shè)備的示意 性功能框圖18是示出根據(jù)本發(fā)明示例性實施例的數(shù)據(jù)庫日志生成設(shè)備的功能性 框示圖;和
圖22是示出根據(jù)本發(fā)明示例性實施例的在DB的每一個模塊中減少的日 志記錄的比較表。
具體實施方式
現(xiàn)在將參照附圖更全面地描述本發(fā)明的示例性實施例。 圖4A到圖4B示出了根據(jù)本發(fā)明實施例的合并多條日志記錄的結(jié)果。 參照圖4A,可以從箭頭的左側(cè)看到3條日志記錄410到430??梢源_定 這3條日志記錄410到430是通過更新相對于同一數(shù)據(jù)頁具有同一偏移值的 數(shù)據(jù)(即,通過更新相同區(qū)域的數(shù)據(jù))而被生成的。由于非平衡(non-equalized) 更新操作所以頻繁出現(xiàn)日志記錄410到430的這些類型。頻繁執(zhí)行更新的數(shù) 據(jù)區(qū)域的日志記錄一般具有這種類型,例如,同一用戶訪問頻率的日志記錄, 或者同一音樂文件被收聽的次數(shù)的日志記錄。在這種情況下,利用箭頭右側(cè)
的一條日志記錄440,僅僅"0"(即,第一鏡像)和"3"(即,最后的鏡像) 的信息就足以維護(maintain)業(yè)務的持久性(durability )。
參照圖4B,箭頭左側(cè)的3條日志記錄450到470不涉及相同區(qū)域的數(shù)據(jù) 更新。然而,當與偏移值20、 24和28相關(guān)的各更新的區(qū)域的數(shù)據(jù)長度(4 字節(jié))被彼此比較時,可以確定包含將被更新的數(shù)據(jù)("0")的區(qū)域相鄰。因 此,可以獲得用于將與從偏移值20開始的12字節(jié)相應的數(shù)據(jù)"000"更新為值 "lll"的(如箭頭右側(cè)的日志記錄480) —條日志記錄。
圖5是示出才艮據(jù)本發(fā)明示例性實施例的在DB中的日志生成方法的流程圖。
首先,在操作510存儲正被更新的數(shù)據(jù)頁的日志信息。也就是說,每當 執(zhí)行更新時,臨時地存儲正被更新的數(shù)據(jù)頁的日志信息(業(yè)務ID、類型、頁 ID、更新數(shù)據(jù)長度、偏移值、更新前的鏡像和更新后的鏡像),而不是立即生 成日志記錄并在日志頁中寫入該日志記錄。隨后,如果完成更新操作,則在 操作520讀取存儲的日志信息。也就是說,如果執(zhí)行更新操作的業(yè)務提交 (commit)或者正被更新的數(shù)據(jù)頁被轉(zhuǎn)儲清除,則讀取存儲的日志信息。在 操作530使用所述讀取的日志信息來生成日志記錄,并且在操作540在所述 日志頁中寫入生成的日志記錄。
在用于生成并寫入日志記錄的操作中,使用恢復和獨立開發(fā)語義算法 (ARIES),并且可以使用的WAL協(xié)議遵守ARIES。因此,僅對數(shù)據(jù)頁的更 新鏡像生成日志記錄,并且在存儲所述數(shù)據(jù)頁之前存儲該日志記錄。
現(xiàn)在將描述關(guān)于存儲正被更新的數(shù)據(jù)頁日志信息的詳細操作。
圖6是根據(jù)本發(fā)明示例性實施例的更加詳細地示出圖5中所示的操作510 的流程圖。
參照圖6,在臨時存儲日志信息的步驟中,在梯:作610,首先生成包括數(shù) 據(jù)頁偏移值的日志項,并且在操作620將正被更新的數(shù)據(jù)頁的日志信息寫入 生成的日志項內(nèi)。然后使用寫入的日志信息將一條或者多條日志項合并到一起。
合并的處理可被細分為可在應用程序中頻繁出現(xiàn)的三種情況。 第一,在重復更新同一區(qū)域時可合并日志項。根據(jù)傳統(tǒng)方法,當同一業(yè) 務重復更新預定區(qū)域的數(shù)據(jù)時,在每次更新時生成并記錄更新前的鏡像和更 新后的鏡像的日志記錄。在本示例性實施例中,所需的日志信息是在第一次
更新生成日志記錄之前的鏡像(即,更新前的鏡像)和在最后一次更新生成 日志記錄之后的鏡像(即,更新后的鏡像)。在中間處理中由更新生成的關(guān)于 鏡像改變的信息可以被看作為非必要信,包-。
因此,如果對于正被更新的數(shù)據(jù)頁存在先前生成的關(guān)于數(shù)據(jù)頁同一區(qū)域 的日志項,則包含用于正被更新的數(shù)據(jù)的日志信息的日志項可被添加到先前 生成的同一區(qū)域的日志項內(nèi),從而對日志項進行合并??赏ㄟ^使用頁ID、業(yè) 務ID、數(shù)據(jù)長度和偏移值來找到同一頁,并且還可以通過使用指示數(shù)據(jù)頁區(qū) 域的其他參數(shù)值來找到所述同 一頁。
第二,在更新相鄰區(qū)域時可以合并日志項。根據(jù)傳統(tǒng)技術(shù),當同一業(yè)務 更新相鄰區(qū)域的數(shù)據(jù)時,即當根據(jù)偏移值所述正被更新的區(qū)域相鄰時,在每 次更新時分別生成日志記錄。在這種情況下,如果在日志記錄中出現(xiàn)的更新 后的鏡像可被合并為一個,則可只生成一條日志記錄。
因此,如果在與正#皮更新的數(shù)據(jù)頁的區(qū)域相鄰的區(qū)域中存在先前生成的 日志項,則相對于相鄰區(qū)域改變先前生成的日志項中包括的偏移值,從而對
日志記錄進4亍合并。通過使用頁ID、偏移值和數(shù)據(jù)長度可計算相鄰區(qū)域的定 義(determination )。如果只可以計算數(shù)據(jù)頁上的預定數(shù)據(jù)區(qū)域的開始和結(jié)束 位置,則還可以使用其他定義方法。
第三,當更新包括被一次或者多次更新的區(qū)域時可以合并日志項。這與 混合同一區(qū)域的更新和相鄰區(qū)域的更新的情況相應。根據(jù)傳統(tǒng)技術(shù),當更新 包括至少;陂更新一次的區(qū)域時,每次更新分別生成日志記錄。在本發(fā)明示例 性實施例中,不需要在同一區(qū)域的中間更新處理生成的鏡像,并且如果不同 區(qū)域的鏡像可被合并,則可以將多條日志記錄合并為一條日志記錄。
因此,如果對于正被更新的數(shù)據(jù)頁的同一區(qū)域存在先前生成的日志項, 則對于同一區(qū)域改變包括在所述先前生成的日志項中的偏移值,從而合并所 述日志記錄。這里,可以使用與如上所述的第一種和第二種情況相同的方法 來找到所述同一區(qū)域。
根據(jù)更新操作,可在每當生成日志項或者完成數(shù)據(jù)頁更新時執(zhí)行上述合 并處理。數(shù)據(jù)頁更新的完成通常是指提交更新業(yè)務或者轉(zhuǎn)儲清除數(shù)據(jù)頁時的 點。它還可以指示當由于其他事件在數(shù)據(jù)庫中應當反映出業(yè)務的更新內(nèi)容時 或者當根據(jù)緩存替換策略向盤中輸入或者從盤中輸出緩存頁時的點。
如果使用傳統(tǒng)的日志生成方法,則很難在上述情況下減小日志文件的大
小。這是因為在上述情況出現(xiàn)在應用程序中時沒有連續(xù)出現(xiàn)預定模式。換句 話說,在傳統(tǒng)方法中,即使當發(fā)生更新同一區(qū)域的操作時,該操作也不是出 現(xiàn)的唯一操作;在正在執(zhí)行該操作的同時還可出現(xiàn)其他操作。因此,因為日 志頁上的特定日志記錄與在正在執(zhí)行該操作的同時被執(zhí)行的其他操作相關(guān), 所以很難確定哪個日志記錄與同一區(qū)域、相鄰區(qū)域或者更新的區(qū)域的更新相 關(guān)。
在傳統(tǒng)方法中,即使這些日志記錄相同,也^艮難在將這些日志記錄記錄
在曰志頁的同時將其合并。這是因為所述合并需要改變?nèi)罩居涗浀腖SN,所 述改變?nèi)罩居涗浀腖SN的步驟需要另一將被處理的載入。此外,傳統(tǒng)方法導 致系統(tǒng)開銷的花費,諸如,由于重新寫入全部先前記錄的日志記錄而導致的 存儲器復制花費。
但是,根據(jù)本發(fā)明示例性實施例,在存儲正被更新的數(shù)據(jù)頁的日志信息 的操作中,包括數(shù)據(jù)頁的偏移值的日志項被合并到每一數(shù)據(jù)頁中,和更新操 作的每一項業(yè)務中。這里,基于日志項的偏移值來對日志項分類并形成列表。 因此,在更新數(shù)據(jù)時關(guān)于更新數(shù)據(jù)的日志記錄沒有被立即生成并記錄在曰志 頁內(nèi),并且沒有出現(xiàn)與日志記錄的LSN被立即完成并且很難被改變相關(guān)的問 題。
圖7是示出根據(jù)本發(fā)明另一示例性實施例的在DB中的日志生成方法的
流程圖。
參照圖7,在操作710,如果執(zhí)行更新,則生成正被更新的數(shù)據(jù)頁復制的 鏡像,即,與更新前的原始鏡像相同的鏡像。鏡像副本被臨時存儲在存儲器 中直到日志記錄^C生成。隨后,在操作720,生成關(guān)于正^C更新的數(shù)據(jù)頁的 曰志項。在操作730,將生成的日志項彼此合并??扇缟纤鰣?zhí)行合并模式。 在操作740,與更新相應的改變的內(nèi)容被反映在原始鏡像中,并且在操作750, 如果完成更新,則通過使用合并的日志項來生成日志記錄。在這種情況下, 從鏡像副本中取回日志記錄的前鏡像(before-image)的數(shù)據(jù),和從原始鏡像 中取回后鏡像(after-image)的數(shù)據(jù)。
根據(jù)更新操作,每當生成日志項時可執(zhí)行合并處理,或者通常當完成更 新(諸如,提交更新業(yè)務)時,或者轉(zhuǎn)儲清除數(shù)據(jù)頁時,可執(zhí)行合并處理。
此外,還可包括在緩存頁信息單元中寄存(register)鏡像副本和關(guān)于更 新業(yè)務的信息的操作。緩存頁信息用于管理原始鏡像、鏡像副本和更新業(yè)務
之間的關(guān)系,并且所述緩存頁信息存儲關(guān)于正被更新的數(shù)據(jù)頁的頁ID的信
息、鏡像副本的位置指針、更新業(yè)務的ID以及業(yè)務是否被提交的信息。在存
儲器中,更新生成的日志項和更新的頁由緩存頁信息單元來管理。當通過緩 存替換策略將更新的頁轉(zhuǎn)儲清除到盤中或者業(yè)務被提交時,在日志頁中生成
并寫入日志記錄。
根據(jù)這種日志生成方法,在業(yè)務的開始和結(jié)束之間生成的日志信息被包 括在當業(yè)務被提交時生成的日志記錄中,并且被記錄在日志頁內(nèi),從而保證 了所述日志信息被轉(zhuǎn)儲清除到盤。因此,也就保證了日志信息的恢復。
圖8A和圖8B是示出根據(jù)本發(fā)明實施例的日志項格式的數(shù)據(jù)結(jié)構(gòu)的示圖。
如上所述,日志項被生成并被臨時存儲在存儲器中,而不是在執(zhí)行更新 之后立即生成日志記錄。所述日志項可具有以下字段 長度更新的數(shù)據(jù)區(qū)域的長度; 偏移更新的區(qū)域的開始位置在頁中的偏移值; 下一日志項(next):指示下一日志項的指針;
開始偏移(soffset):指示更新的區(qū)域的開始位置在所述頁中的偏移值; 結(jié)束偏移(eoffest):指示更新的區(qū)域的結(jié)束位置在所述頁中的偏移值; 根據(jù)實現(xiàn)可以選4奪和使用圖8A和圖8B中所示的格式的任何一個,也可
以使用沒有在此詳細示出的其他格式。
這里,應當注意的是基于"位置"的概念來管理由日志項管理的信息。也
就是說,所述日志項根據(jù)所述日志項的位置來存儲更新數(shù)據(jù)頁導致的所有改
變。這是合并日志項的處理中的重要信息,由此,可以大大減少寫入日志頁
中的日志記錄的數(shù)量。
圖9是示出根據(jù)本發(fā)明示例性實施例的通過一次業(yè)務更新的示例的示圖。
參照圖9,頁1910是原始鏡像,頁l'920是原始鏡像的副本。此外,示 出了緩存頁信息單元(頁信息)930、 一項業(yè)務T1 940和兩個日志項950和 960。如果執(zhí)行更新,則生成更新的頁的鏡像副本(頁1,920)。
為了識別執(zhí)行更新的業(yè)務,緩存頁信息單元(頁信息)930管理業(yè)務T1 940 的ID。業(yè)務Tl 940使用關(guān)于頁1 910的更新的信息來生成日志項950和960 的列表。日志項950和960的列表按照偏移值被分類,并在存儲器中被維護。
也就是說,圖9中所示的操作可被如下簡要描述。
i) 業(yè)務Tl 940對從頁1 910的偏移10開始的4字節(jié)區(qū)域進行更新。這 是發(fā)生在頁1 910中的第一次更新。因此,在更新頁1910之前,生成該頁的 副本(頁1, 920 )。業(yè)務Tl 940的ID被寄存在緩存頁信息單元930中,使用 更新信息生成日志項950,以指示由于業(yè)務T1 940更新了該信息。隨后使用 期望的更新鏡像來更新原始鏡像頁1 910。
ii) 業(yè)務Tl 940對從頁1 910的偏移31開始的4字節(jié)區(qū)域進行更新。此 時,日志項960被生成,按照偏移值被分類,并且被插入到日志項列表中。 隨后,使用期望的更新鏡像來更新頁1910。僅在存儲器中維護生成的日志項 950和960,并且所述日志項950和960將不作為日志記錄一皮寫入該日志頁。
iii) 根據(jù)緩存替換策略,頁1 910被選為對象頁(目標),并且被轉(zhuǎn)儲清 除到盤(或者業(yè)務T1 94(H皮^:交)。日志記錄由關(guān)于相應頁(在這種情況下, 即,頁1 910)存在的日志項950和960構(gòu)成,或者由提交的業(yè)務生成(在這 種情況下,即,業(yè)務Tl 940 )的日志項950和960構(gòu)成,并且一皮寫入該曰志 頁。
圖10是示出才艮據(jù)本發(fā)明示例性實施例的通過兩次或者多次業(yè)務更新的 示圖。
參照圖IO,兩項業(yè)務TI 1040和T5 1070分別更新頁1 IOIO的不同區(qū)域, 由更新信息生成日志項1050、 1060、 1080和1090,所述這些日志項與相應 的業(yè)務T1和T5相連并被管理。圖IO和圖9間的不同在于在圖10中,關(guān) 于多項業(yè)務中的每一項來管理日志項的列表。
在這種情況下,當同時執(zhí)行兩項或者多項業(yè)務時,要遵守嚴格兩段鎖 (2PL)協(xié)議。因此,因為要遵守嚴格2PL協(xié)議,所以沒有出現(xiàn)兩項或者多 項運行的(active)業(yè)務更新同一區(qū)域的情況。
鎖協(xié)議是一組規(guī)則,通過所述規(guī)則DBMS僅允許連續(xù)并可恢復的日志安 排。所述鎖協(xié)議包括共享鎖和獨占鎖,并且嚴格2PL鎖根據(jù)以下規(guī)則被執(zhí)行。 第一規(guī)則,即,如果業(yè)務T想要讀取或者寫入對象,則所述業(yè)務T首先要分 別請求共享或者獨占對象的鎖。第二規(guī)則,即,在完成業(yè)務時打開(unlock) 所述業(yè)務擁有的所有鎖狀態(tài)。根據(jù)用于請求和獲得鎖的規(guī)則,當?shù)谝粯I(yè)務的 共享鎖鎖定對象并且第二業(yè)務請求相同對象的共享鎖時,第二業(yè)務可獲得共 享鎖,但是如果第一業(yè)務請求獨占鎖時,第二業(yè)務必須等待。此外,當業(yè)務 的獨占鎖鎖定對象時,請求任何類型的鎖的其他業(yè)務必須等待。但是,其他 業(yè)務可直接讀取已經(jīng)獲得其獨占鎖的對象。
圖11是示出根據(jù)本發(fā)明示例性實施例的每一種模式的更新操作的示圖。 圖12是示出根據(jù)本發(fā)明示例性實施例的作為圖11中所示的操作完成的結(jié)果 被生成的日志項的示圖。
現(xiàn)在將簡要說明圖11所示的情況。業(yè)務T1 1140在從頁1 1110的偏移 IO開始的4字節(jié)的區(qū)域中將"name"更新為"kate",并且在從頁1 1110的偏移 31開始的4字節(jié)的區(qū)域中將"0000"更新為"0021"。生成頁1 1110的副本(頁 1, 1120)和兩個日志項1150和1160。
現(xiàn)在將按照帶圈編號(①到⑥)的順序?qū)D11所示的更新操作的處理進 行說明。
① 將"kate"更新為"john"。這是這樣一種情況,即同一區(qū)域被更新,并 且已經(jīng)生成了用于從"name"到"kate"的改變的相應于前一更新的日志項1150。 此時,唯一需要的操作是將作為原始頁的頁1 1110更新為作為更新后的鏡像 的"john"。因此,將新的日志項合并到先前生成的日志項1150中,而沒有必 要添加新的日志項。
② 將"0005"更新為"0006"。在這種情況下,從偏移35開始的4字節(jié)被更 新,并且所述區(qū)域相鄰于現(xiàn)有更新的區(qū)域。在這種情況下,可以確定用于將 "0000"改為"0021"的第二日志項1160的更新的鏡像的結(jié)束位置相鄰于當前正 在被更新的鏡像,并且可以改變?nèi)罩卷?160的長度字段,從而該長度字段包 括相鄰區(qū)域(③)的長度。
從偏移14到偏移31的區(qū)域的更新。這是這樣一種情況,即位于兩 個現(xiàn)有更新的區(qū)域之間且相鄰的區(qū)域被更新。在這種情況下,刪除兩個現(xiàn)有 曰志項中的第二曰志項1160,將第一曰志項1150的長度字段中的"4"更新為 "29",并且在頁1 1110中記錄更新的鏡像。
⑤和⑥包括已經(jīng)被更新的區(qū)域的區(qū)域的更新。以與 相似的方式執(zhí)行更新。
如果執(zhí)行從①到⑥的操作,則最終僅生成圖12所示的一個日志記錄 1250。因此,當原始鏡像是指復制的鏡像時,可以確定盡管總共執(zhí)行了 8次 更新但是日志項被合并為一個日志項。因此,當業(yè)務被提交時或者頁被轉(zhuǎn)儲 清除時,僅生成和寫入一個日志項。
圖13示出了根據(jù)本發(fā)明示例性實施例的用于生成日志項的處理的偽代 碼。除非操作順序的改變改變了最終結(jié)果,可以以不同的順序執(zhí)行所述操作。
在生成日志項的處理中,如果所述日志項是頁中的第一日志項,則應當 生成所述頁的復制的鏡像。隨后,生成日志項,關(guān)于偏移值進行分類,并將 其添加到列表中。通過參照偏移值,根據(jù)合并模式將日志項彼此合并。最后, 所述頁的原始鏡像被更新為后鏡像,即,更新后的鏡像。代碼。
在當業(yè)務(txn)凈皮^C交時日志生成的處理中,如果存在包括通過提交業(yè) 務更新的日志項的頁,則針對這樣的每一頁執(zhí)行以下操作。首先,讀取所述 業(yè)務的日志項,生成日志記錄。該日志記錄實質(zhì)上需要更新之前的鏡像或前 鏡像以及更新之后的鏡像或后鏡像。如果在所述頁中存在另一業(yè)務的日志項, 則在復制的鏡像中記錄由提交的業(yè)務更新的區(qū)域中的后鏡像,從而在由其他 業(yè)務更新期間這個區(qū)域不會異常中止。這就允許遵守DBMS的持續(xù)性的概念, 即,應當在DB中反映提交的業(yè)務更新的結(jié)果。因此,由于當前提交的業(yè)務 的更新的區(qū)域的數(shù)據(jù)被記錄在所述頁的復制的鏡像中,并從而被保證安全, 所以另一個未來業(yè)務的異常中止不會影響到所述當前提交的業(yè)務的更新的區(qū) 域的數(shù)據(jù)。
此外,業(yè)務已經(jīng)被提交的事實可以被記錄在緩存頁信息單元中,從而可 以為另一業(yè)務的潛在異常中止進行準備。在這種情況下,應當在異常中止操 作中添加一過程,以確定是否在頁中已經(jīng)存在提交的業(yè)務。
因此,在另一業(yè)務異常中止的情況下執(zhí)行預防操作;隨后,在日志頁中 寫入生成的日志記錄,并且刪除讀取的日志項。
此后,如果所述頁中不再存在另一業(yè)務的日志項,也就是說,如果當前 提交的業(yè)務是唯一的業(yè)務,則不需要所述頁的復制的鏡像并因此將其刪除。
圖15示出了指示根據(jù)本發(fā)明示例性實施例的用于異常中止業(yè)務的處理 的偽代碼。
業(yè)務的不完整指示異常情況,諸如當由于DBMS的內(nèi)部原因,業(yè)務被異 常中止,以及業(yè)務被自動重啟時,或者在正在執(zhí)行業(yè)務的同時發(fā)生系統(tǒng)錯誤 或者業(yè)務的預定命令讀取錯誤值,或者盤不能被訪問時。
在異常中止處理中,如果在頁中不存在另一業(yè)務的日志項,也就是說, 如果異常中止的業(yè)務是所述頁中唯一的業(yè)務,則所述頁的原始鏡像被替換為 復制的鏡像,并且所述原始的鏡像可被刪除。但是,如果所述頁的另一業(yè)務 具有日志項,則異常中止的業(yè)務應當讀取其自身日志項,并且只應當恢復更 新之前的相應于每個日志項的鏡像區(qū)域。
如上所述,如果指示是否存在另一提交的業(yè)務的信息被記錄在緩存頁信 息單元中,則這個信息可以被利用。也就是說,如果從緩存頁信息單元能夠 確定在所述頁中存在另一提交的業(yè)務,則異常中止的業(yè)務可讀取其自身的曰 志項,并且可以恢復相應于每個日志項的特定鏡像區(qū)域的前鏡像。
圖16示出了指示根據(jù)本發(fā)明示例性實施例的用于轉(zhuǎn)儲清除數(shù)據(jù)頁的處 理的偽代碼。
當根據(jù)緩存替換策略,頁被轉(zhuǎn)儲清除到盤時,所述頁的全部日志項的日 志記錄被生成并被記錄在日志頁中。刪除所述頁的復制的鏡像也是必要的。
圖17是示出了根據(jù)本發(fā)明示例性實施例的數(shù)據(jù)庫日志生成設(shè)備的示意
性功能框圖。
圖17的設(shè)備大致包括日志存儲單元1710、日志讀取單元1720和曰志 控制單元1730。日志存儲單元1710存儲正被更新的數(shù)據(jù)頁的日志信息,并 且僅當數(shù)據(jù)頁的更新完成時,存儲的日志信息才被傳送到日志讀取單元1720。 曰志控制單元1730使用讀取的日志信息,以構(gòu)成日志記錄,并且所述讀取的 曰志信息被記錄在日志頁中。
圖18是示出根據(jù)本發(fā)明示例性實施例的數(shù)據(jù)庫日志生成設(shè)備的功能性 框圖。
對于每個模塊的功能,業(yè)務控制單元1810通過使用應用程序來管理執(zhí)行 數(shù)據(jù)頁更新的業(yè)務。
緩存控制器單元1830管理存儲介質(zhì)的盤輸入和/或輸出操作,將更新的 數(shù)據(jù)頁和其中被寫入日志記錄的日志頁存儲在存儲介質(zhì)中,或者從所述存儲 介質(zhì)中讀取新的頁。也就是說,緩存控制單元1830負責根據(jù)緩存替換策略的 轉(zhuǎn)儲清除操作。緩存控制單元1830還管理其中寄存了原始鏡像、復制的鏡像 和關(guān)于更新業(yè)務的信息的緩存頁信息單元。在緩存頁信息單元中可以寄存 正被更新的數(shù)據(jù)頁的頁ID、復制的鏡像的位置指針、更新業(yè)務的ID以及關(guān) 于業(yè)務是否被提交的信息。
曰志控制單元1820合并根據(jù)由業(yè)務控制單元1810執(zhí)行的更新生成的曰
志信息,從而生成日志記錄,并將所述日志記錄寫入日志頁。日志控制單元
1820還可包括第一存儲單元1824、第二存儲單元1823、日志合并單元1821 和日志輸出單元1822。
第一存儲單元1824存儲其中執(zhí)行更新的數(shù)據(jù)頁的復制的鏡像,并且,所 述復制的鏡像包括其中反映與在更新之前的原始鏡像的數(shù)據(jù)相同的數(shù)據(jù)。
第二存儲單元1823以列表的形式存儲由業(yè)務控制單元1810管理的業(yè)務 的更新生成的日志項。如上所述,日志項關(guān)于正被更新的每一數(shù)據(jù)頁和關(guān)于 每一業(yè)務被管理,并且根據(jù)偏移值被分類。
日志合并單元1821通過使用這樣分類和管理的日志項來合并存儲在第 二存儲單元1823中的日志項,并且減少日志項的總數(shù)量。根據(jù)上述更新模式 來執(zhí)行所述合并。
如果完成更新,則日志輸出單元1822生成日志記錄并將所述日志記錄寫 入曰志頁。這是因為更新的數(shù)據(jù)頁應當被反映在DB中,并且應當保持一致 性和持久性。在這種情況下,日志輸出單元1822通過使用存儲在第一存儲單 元1824中的復制的鏡像和存儲在第二存儲單元1823中的合并的日志項來生 成曰志記錄并將所述日志記錄寫入日志頁中。根據(jù)上述符合ARIES算法的數(shù) 據(jù)格式,所述日志記錄包括前鏡像、后鏡像和其他需要的信息。前鏡像是 存儲在第一存儲單元1824中的復制的鏡像,后鏡像是當前數(shù)據(jù)頁的鏡像。可 以從存儲在第二存儲單元1823中的日志項確定更新的區(qū)域的偏移信息。
圖19到圖21是示出根據(jù)本發(fā)明示例性實施例的更新的數(shù)據(jù)頁的示例的 示圖。
參照圖19,編號1到12指示更新的順序和相應的數(shù)據(jù)區(qū)域。根據(jù)傳統(tǒng) 方法,如圖19所示的更新操作生成的日志記錄的數(shù)量與更新的數(shù)量成比例。 因此,如果傳統(tǒng)方法^皮應用于圖19中的示例,則可生成12個日志記錄,每 個曰志記錄可被分配LSN,并且每個LSN可被記錄在日志頁中。但是,根據(jù) 本發(fā)明示例性實施例,在這種情況下,更新的區(qū)域(1,5)、 (6,2,7,8,11)、 (4, 9)和(10, 12)是相鄰的區(qū)域,并且僅生成(1,5)、 (3)、 (6,2,7,8,11)、 (4, 9)和(10, 12) 5個日志記錄。此外,即使在先前更新的區(qū)域中執(zhí)行另 一更新,也不生成另外的日志記錄。
參照圖20,在使用堆文件(heap file)和平衡樹(b-tree)方法的DB的 示例中,出現(xiàn)如圖20所示的以1、 2、 3、 4等的順序^Mv兩端向中間移動的更
新模式。在這種模式的更新操作中,如果應用根據(jù)本發(fā)明示例性實施例的日 志生成方法,則僅生成兩個日志記錄。如果如圖20所示更新整個區(qū)域,即繼 續(xù)執(zhí)行所述更新操作并且所述更新在中間匯合,則將只生成一個日志記錄。
的更新模式。所述目錄管理器(CatalogMgr)包括關(guān)于日志計數(shù)和索引關(guān)鍵 字計數(shù)的信息。根據(jù)圖21所示的更新模式,可以確定只生成了更新區(qū)域(1, 2, 3 )和(4, 5 )的兩個日志記錄。
圖22是示出根據(jù)本發(fā)明示例性實施例的在DB的每一個模塊中減少的日 志記錄的比較表。
參照圖22,當7000條記錄被包括在DB的一個表中時,從它們中刪除 5000條記錄,將在各個情況下的當前出現(xiàn)的日志記錄數(shù)量和合并之后出現(xiàn)的 日志記錄數(shù)量進行比較。
DB模塊的總數(shù)指示通過添加空閑頁映射(FPMap)、 CatalogMgr和數(shù)據(jù) 頁的日志記錄獲得的總數(shù)。個別的日志記錄是其中的更新區(qū)域彼此不同的曰 志記錄。合并之后的日志記錄是在所有相鄰區(qū)域一皮合并時生成的日志記錄。 FPMap模塊是用于管理關(guān)于使用和/或不使用整個DB的信息的模塊。 CatalogMgr是上述的目錄管理器,并且是包括關(guān)于記錄計數(shù)和索引關(guān)鍵字計 數(shù)的信息的模塊。數(shù)據(jù)頁是記錄實際數(shù)據(jù)的數(shù)據(jù)頁。
當只考慮同一區(qū)域的日志記錄時,在比較日志大小時,總的日志大小從 1315KB減少到195KB,即減少了1120KB。此外,當考慮相鄰區(qū)域時,可以 確定總大小被減少到23KB,僅僅是根據(jù)傳統(tǒng)技術(shù)的大小的1.7%。
根據(jù)上述本發(fā)明的示例性實施例的DB的日志生成方法,由于日志生成 的原因減少了日志大小,并且盤輸入和/或輸出操作的次數(shù)被減少,從而提高 了數(shù)據(jù)庫系統(tǒng)的更新速度。
此外,當業(yè)務被提交或者頁被轉(zhuǎn)儲清除時頁的多條日志項作為一條日志 記錄被一次記錄。因此,與記錄在日志頁中的日志記錄相應的更新區(qū)域在同 一頁中的概率增加,從而在執(zhí)行恢復操作時增加了將被恢復的頁的局部性。
同時,當業(yè)務異常中止時,從存儲器刪除日志項,并且使用復制的頁替 換原始頁,從而以簡單的方式執(zhí)行異常中止操作,并因此減少了異常中止操 作的花費。
當執(zhí)行恢復操作時,因為日志大小被減小,所以將被從存儲介質(zhì)讀取的
曰志文件的大小也被減小。此外,因為局部性被增強,所以減少了用于恢復 操作的對存儲介質(zhì)執(zhí)行的盤輸入和輸出操作的花費。
因此,在存儲器應當充足的情況下,由于日志記錄的原因會出現(xiàn)盤輸入 和輸出操作的瓶頸,推遲的日志生成方法很大地減少了存儲在存儲介質(zhì)中的
日志文件的大小,從而最大化利益。
盡管已經(jīng)參照本發(fā)明示例性實施例對本發(fā)明進行了詳細示出和描述,但 是本領(lǐng)域普通技術(shù)人員應當理解,在不脫離由權(quán)利要求限定的本發(fā)明的精神 和范圍的情況下,可以在形式和細節(jié)上做出各種改變。所述優(yōu)選實施例僅應
當被理解為描述的目的,而不是限定的目的。因此,本發(fā)明的范圍不是由本 發(fā)明的詳細描述來限定,而是由權(quán)利要求限定,并且所述范圍內(nèi)的所有不同 將被解釋為包括在本發(fā)明內(nèi)。
權(quán)利要求
1、一種在數(shù)據(jù)庫管理系統(tǒng)中的日志生成方法,所述方法包括存儲正被更新的數(shù)據(jù)頁的日志信息;在完成數(shù)據(jù)頁的更新時讀取存儲的日志信息;通過使用讀取的日志信息生成日志記錄;和將生成的日志記錄寫入日志頁。
2、 如權(quán)利要求l所述的方法,其中,存儲日志信息的步驟包括 生成包括正被更新的數(shù)據(jù)頁的偏移值的日志項; 將正被更新的數(shù)據(jù)頁的日志信息記錄在所述日志項中;和 基于日志信息合并至少兩個日志項。
3、 如權(quán)利要求2所述的方法,其中,合并至少兩個日志項的步驟包括 關(guān)于與正被更新的數(shù)據(jù)頁的區(qū)域相同的區(qū)域,確定是否存在一個或者多個先前生成的日志項;和將所述一個或者多個先前生成的日志項組合為所述日志項。
4、 如權(quán)利要求2所述的方法,其中,合并至少兩個日志項的步驟包括 關(guān)于與正被更新的數(shù)據(jù)頁的區(qū)域相鄰的區(qū)域,確定是否存在一個或者多個先前生成的日志項;和關(guān)于所述相鄰區(qū)域,改變包括在所述一個或者多個先前生成的日志項中 的偏移值。
5、 如權(quán)利要求2所述的方法,其中,合并至少兩個日志項的步驟包括 關(guān)于與正被更新的數(shù)據(jù)頁的區(qū)域重疊的區(qū)域,確定是否存在先前生成的日志項;和關(guān)于所述重疊的區(qū)域改變包括在所述先前生成的日志項中的偏移值。
6、 如權(quán)利要求2所述的方法,其中,當完成對數(shù)據(jù)頁的更新操作時執(zhí)行 一次合并至少兩個日志項的步驟。
7、 如權(quán)利要求6所述的方法,其中,所述完成數(shù)據(jù)頁的更新操作的時間 是提交執(zhí)行更新操作的業(yè)務的時間,或者數(shù)據(jù)頁被轉(zhuǎn)儲清除的時間。
8、 如權(quán)利要求2所述的方法,其中,關(guān)于正被更新的數(shù)據(jù)頁并且關(guān)于執(zhí) 行更新操作的每個業(yè)務管理所述日志項。
9、 如權(quán)利要求8所述的方法,其中,所述日志項根據(jù)包括在該日志項中 的偏移值,皮分類。
10、 如權(quán)利要求2所述的方法,其中,生成日志項和記錄日志信息使用 恢復和獨立開發(fā)語義算法,并且遵守預寫式日志協(xié)議。
11、 一種在數(shù)據(jù)庫管理系統(tǒng)中的日志生成方法,所述方法包括 生成正被更新的數(shù)據(jù)頁的復制的鏡像,所述復制的鏡像與更新之前的所述數(shù)據(jù)頁的原始鏡像相同;生成關(guān)于正^皮更新的數(shù)據(jù)頁的日志項;將生成的日志項與另 一 日志項合并,以生成合并的日志項;關(guān)于數(shù)據(jù)頁的原始鏡像執(zhí)行更新操作;和如果完成更新操作,則基于所述原始鏡像、復制的鏡像和合并的日志項 生成日志記錄。
12、 如權(quán)利要求11所述的方法,其中,合并的步驟包括關(guān)于與正被更新的數(shù)據(jù)頁的區(qū)域相同的區(qū)域,確定是否存在一個或者多 個先前生成的日志項;和將所述一個或者多個先前生成的日志項組合為所述日志項。
13、 如權(quán)利要求11所述的方法,其中,合并的步驟包括關(guān)于與正被更新的數(shù)據(jù)頁的區(qū)域相鄰的區(qū)域,確定是否存在一個或者多 個先前生成的日志項;和關(guān)于所述相鄰區(qū)域,改變包括在所述一個或者多個先前生成的日志項中 的偏移值。
14、 如權(quán)利要求11所述的方法,其中,合并的步驟包括關(guān)于與正被更新的數(shù)據(jù)頁的區(qū)域重疊的區(qū)域,確定是否存在先前生成的 日志項;和關(guān)于所述重疊的區(qū)域改變包括在所述先前生成的日志項中的偏移值。
15、 如權(quán)利要求11所述的方法,其中,當完成對數(shù)據(jù)頁的更新操作時執(zhí) 行合并的步驟。
16、 如權(quán)利要求15所述的方法,其中,所述完成數(shù)據(jù)頁的更新操作的時 間是提交執(zhí)行更新操作的業(yè)務的時間,或者是原始鏡像的數(shù)據(jù)頁被轉(zhuǎn)儲清除 的時間。
17、 如;f又利要求11所述的方法,還包括在管理原始鏡像、復制的鏡像和執(zhí)行更新操作的業(yè)務之間的關(guān)系的緩存頁信息單元中寄存關(guān)于原始鏡像、復制的鏡像和所述業(yè)務的信息。
18、 如權(quán)利要求n所述的方法,其中,關(guān)于正被更新的數(shù)據(jù)頁并且關(guān)于 執(zhí)行更新操作的每個業(yè)務管理所述日志項。
19、 如權(quán)利要求18所述的方法,其中,所述日志項根據(jù)包括在該日志項 中的偏移值被分類。
20、 如權(quán)利要求19所述的方法,其中,日志項包括始位置,或者正被更新的數(shù)據(jù)頁中更新的區(qū)域的開始位置和結(jié)束位置。
21、 如權(quán)利要求17所述的方法,其中,如果存在多項執(zhí)行更新操作的業(yè) 務,并且所述更新操作被同時執(zhí)行,則應用嚴格兩段鎖協(xié)議。
22、 如權(quán)利要求21所述的方法,其中,如果在完成更新操作時所述業(yè)務 被4I:交,則所述方法還包括確定在數(shù)據(jù)頁中是否存在另 一業(yè)務;如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一業(yè)務,則在復制的鏡像的相應區(qū) 域內(nèi)記錄與提交的業(yè)務的各個日志項相應的原始鏡像的更新的區(qū)域;和 如果確定結(jié)果指示數(shù)據(jù)頁中不存在其他業(yè)務,則刪除復制的鏡像。
23、 如權(quán)利要求21所述的方法,其中,如果在完成更新操作前所述業(yè)務 異常中止,則所述方法還包括確定在數(shù)據(jù)頁中是否存在另一業(yè)務;如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一業(yè)務,則在原始鏡像的相應區(qū)域 內(nèi)記錄與異常中止的業(yè)務的各個日志項相應的復制的鏡像的區(qū)域;和如果確定結(jié)果指示數(shù)據(jù)頁中不存在其他業(yè)務,則將復制的鏡像替換為原 始鏡像。
24、 如權(quán)利要求21所述的方法,其中,在完成更新操作時業(yè)務被提交, 則所述方法還包括確定在數(shù)據(jù)頁中是否存在另 一業(yè)務;如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一業(yè)務,則在緩存頁信息單元中記 錄所述業(yè)務被提交;和如果確定結(jié)果指示數(shù)據(jù)頁中不存在其他業(yè)務,則刪除復制的鏡像。
25、 如權(quán)利要求21所述的方法,其中,如果在完成更新操作之前所述業(yè) 務異常中止,則所述方法還包括確定在數(shù)據(jù)頁中是否存在另一業(yè)務;通過參照緩存頁信息單元確定在數(shù)據(jù)頁中是否存在另一提交的業(yè)務; 如果確定結(jié)果指示在數(shù)據(jù)頁中存在另一業(yè)務或者另一提交的業(yè)務,則在 原始鏡像的相應區(qū)域內(nèi)記錄與異常中止的業(yè)務的各個日志項相應的復制的鏡像的區(qū)域;和如果確定結(jié)果指示數(shù)據(jù)頁中不存在其他業(yè)務或者其他提交的業(yè)務,則將 復制的鏡像替換為原始鏡像。
26、 如權(quán)利要求21所述的方法,其中,如果在完成更新業(yè)務時原始鏡像 的數(shù)據(jù)頁被轉(zhuǎn)儲清除,則所述方法還包括生成轉(zhuǎn)儲清除的數(shù)據(jù)頁的全部日志項的日志記錄;和 刪除復制的鏡像。
27、 一種在數(shù)據(jù)庫管理系統(tǒng)中的日志生成設(shè)備,所述設(shè)備包括 曰志存儲單元,存儲正被更新的數(shù)據(jù)頁的日志信息;曰志讀取單元,在完成數(shù)據(jù)頁的更新操作時讀取存儲在日志存儲單元中 的曰志信息;和曰志控制單元,基于讀取的日志信息生成日志記錄,并將生成的日志記 錄記錄在日志頁中。
28、 一種在數(shù)據(jù)庫管理系統(tǒng)中的日志生成設(shè)備,所述設(shè)備包括 業(yè)務控制單元,管理執(zhí)行數(shù)據(jù)頁的更新操作的業(yè)務;曰志控制單元,將根據(jù)由業(yè)務控制單元管理的業(yè)務的更新操作生成的曰 志信息進行合并,從而生成日志記錄,并將生成的日志記錄記錄在日志頁中; 和緩存控制單元,管理^皮執(zhí)行更新操作的數(shù)據(jù)頁,并且管理所述日志頁, 從而可以將所述數(shù)據(jù)頁和日志頁輸入存儲介質(zhì),或者從存儲介質(zhì)輸出所述數(shù) 據(jù)頁和日志頁。
29、 如權(quán)利要求28所述的設(shè)備,其中,日志控制單元包括 第一存儲單元,存儲復制的鏡像,所述復制的鏡像與正被執(zhí)行更新搡作的數(shù)據(jù)頁的更新之前的原始鏡像相同;第二存儲單元,存儲日志項,所述日志項根據(jù)由業(yè)務控制單元管理的業(yè)務的更新搡作被生成; 曰志合并單元,將至少兩個或者多個存儲在第二存儲單元中的日志項進行合并;和曰志輸出單元,在完成更新操作時基于原始鏡像、復制的鏡像和合并的 曰志項生成日志記錄,并且將生成的日志記錄記錄在日志頁中。
30、 如權(quán)利要求29所述的設(shè)備,其中,緩存控制單元管理緩存頁信息單 元,在所述緩存頁信息單元中寄存有原始鏡像、復制的鏡像和關(guān)于執(zhí)行更新 操作的業(yè)務的信息。
31、 一種其上實現(xiàn)有用于執(zhí)行權(quán)利要求1的方法的計算機程序的計算機 可讀記錄介質(zhì)。
全文摘要
提供了一種在由更新生成日志記錄時通過使用日志項來減小日志大小的日志生成方法及其設(shè)備。所述方法包括存儲正被更新的數(shù)據(jù)頁的日志信息;在完成數(shù)據(jù)頁的更新時讀取存儲的日志信息;通過使用讀取的日志信息生成日志記錄;和將生成的日志記錄寫入日志頁。根據(jù)所述方法,由于日志生成引起日志大小減小,并且減少了盤輸入和/或輸出操作的次數(shù),從而提高了數(shù)據(jù)庫系統(tǒng)的更新速度。
文檔編號G06F11/14GK101183322SQ20071010851
公開日2008年5月21日 申請日期2007年5月31日 優(yōu)先權(quán)日2006年11月16日
發(fā)明者金映錫, 閔庚燮 申請人:三星電子株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
嘉峪关市| 平乐县| 衡阳县| 黔江区| 合阳县| 泸溪县| 镶黄旗| 武定县| 自治县| 江川县| 呼玛县| 修文县| 长治市| 岑溪市| 许昌市| 洛扎县| 光山县| 武安市| 逊克县| 焉耆| 荣成市| 广昌县| 阿尔山市| 天峨县| 太谷县| 娱乐| 灌云县| 琼结县| 常州市| 内乡县| 莱芜市| 德惠市| 丽水市| 延吉市| 闵行区| 忻州市| 屏南县| 芜湖县| 新和县| 车致| 宁明县|