專利名稱:磁盤陣列中一種基于數(shù)據(jù)庫的i/o緩存流的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及磁盤陣列中一種基于數(shù)據(jù)庫的I/O緩存流技術(shù),通常用于磁盤陣列中
的數(shù)據(jù)庫應(yīng)用。
背景技術(shù):
隨著網(wǎng)絡(luò)應(yīng)用和電子商務(wù)的不斷發(fā)展,各個站點(diǎn)的訪問量越來越大,數(shù)據(jù)庫規(guī)模
也隨之不斷地擴(kuò)大,數(shù)據(jù)庫系統(tǒng)的性能問題就越來越突出,處理用戶的訂單太慢,將會嚴(yán)重 影響到用戶的正常使用。 通常的企業(yè)數(shù)據(jù)庫應(yīng)用建立在磁盤陣列上,因此如何在磁盤陣列中提供一種方 案,使其應(yīng)用在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,能夠提高數(shù)據(jù)庫系統(tǒng)的性能,是目前業(yè)務(wù)量急劇增加面 臨的挑戰(zhàn)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是,提出磁盤陣列中一種基于數(shù)據(jù)庫的I/O緩存流的方
法及系統(tǒng),可以提高數(shù)據(jù)庫服務(wù)器查詢應(yīng)答的速度,提高業(yè)務(wù)響應(yīng)時間。 為了解決上述技術(shù)問題,本發(fā)明提供了磁盤陣列中一種基于數(shù)據(jù)庫的1/0緩存流
的系統(tǒng),包括一緩沖管理模塊、一預(yù)讀模塊和一底層獨(dú)立磁盤冗余陣列(raid)模塊,所述
界面管理模塊分別與所述緩沖管理模塊和所述預(yù)讀模塊相連,所述緩沖管理模塊分別與所
述預(yù)讀模塊、所述底層raid模塊和所述數(shù)據(jù)庫相連,所述預(yù)讀模塊還與所述底層raid模塊 相連,其中 所述界面管理模塊,用以對所述緩沖管理模塊的緩沖容量、所述預(yù)讀模塊的預(yù)讀 窗口的大小,以及最大預(yù)讀尺寸中的一種或者多種進(jìn)行配置; 所述緩沖管理模塊,用于接收數(shù)據(jù)庫操作產(chǎn)生的1/0請求,在所述緩沖管理模塊 中查找所述I/O請求對應(yīng)的數(shù)據(jù),如果能夠查找到,則將其返回給數(shù)據(jù)庫,如果不能查找 到,則控制所述底層raid模塊根據(jù)所述I/O請求進(jìn)行數(shù)據(jù)讀取,緩存所述底層raid模塊讀 取到的數(shù)據(jù),并將所述讀取到的數(shù)據(jù)返回給數(shù)據(jù)庫;以及將接收到的1/0請求的描述信息 發(fā)送給所述預(yù)讀模塊,接收并緩存所述預(yù)讀模塊發(fā)送來的預(yù)讀數(shù)據(jù); 所述預(yù)讀模塊,用于在從所述緩沖管理模塊接收到1/0請求的描述信息后,根據(jù) 一預(yù)設(shè)的預(yù)讀策略從所述底層raid模塊中進(jìn)行數(shù)據(jù)預(yù)讀,并將預(yù)讀出的數(shù)據(jù)發(fā)送給所述 緩沖管理模塊; 所述底層raid?!姥?,用以在所述緩沖管理模塊的控制下處理數(shù)據(jù)庫的I/O請求,
并將讀取到的數(shù)據(jù)返回給所述緩沖管理模塊。 進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn) 所述預(yù)設(shè)的預(yù)讀策略包括所述預(yù)讀模塊維護(hù)一歷史記錄,在從所述緩沖管理模 塊接收到1/0請求的描述信息后,將其保存至所述歷史記錄中,對所述1/0請求的描述信息 及其至少前一歷史記錄進(jìn)行模式識別,如果所述1/0請求及其至少前一歷史記錄對應(yīng)的數(shù)
4據(jù)能夠組成順序數(shù)據(jù)流或者逆序數(shù)據(jù)流,則按照識別出的模式從所述底層raid模塊中進(jìn) 行數(shù)據(jù)預(yù)讀。 進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn) 所述預(yù)讀模塊,在進(jìn)行數(shù)據(jù)預(yù)讀時,是先根據(jù)接收到的1/0請求的描述信息識別 出所述I/O請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量,然后根據(jù)識別出的模式,得到預(yù)讀數(shù)據(jù) 的起始位置,然后從所述預(yù)讀數(shù)據(jù)的起始位置開始,按照所述識別出的模式進(jìn)行數(shù)據(jù)預(yù)讀。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn) 所述緩沖管理模塊,在根據(jù)1/0請求進(jìn)行數(shù)據(jù)查找時,是在所述預(yù)讀模塊識別出 所述1/0請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量后,根據(jù)所述1/0請求對應(yīng)的數(shù)據(jù)的起始位 置和偏移量在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn) 所述界面管理模塊屬于應(yīng)用層,所述緩沖管理模塊、所述預(yù)讀模塊和所述底層 raid模塊屬于內(nèi)核層。 為了解決上述技術(shù)問題,本發(fā)明還提出了磁盤陣列中一種基于數(shù)據(jù)庫的I/0緩存 流的方法,包括 —緩沖管理模塊接收數(shù)據(jù)庫操作產(chǎn)生的1/0請求,根據(jù)接收到的1/0請求在所述 緩沖管理模塊中進(jìn)行數(shù)據(jù)查找,如果能夠查找到對應(yīng)的數(shù)據(jù),則將其返回給數(shù)據(jù)庫,否則控 制底層獨(dú)立磁盤冗余陣列(raid)模塊根據(jù)所述l/0請求進(jìn)行數(shù)據(jù)讀取,緩存所述底層raid 模塊讀取到的數(shù)據(jù),并將所述讀取到的數(shù)據(jù)返回給數(shù)據(jù)庫;以及 所述緩沖管理模塊將接收到的I/O請求的描述信息發(fā)送給一預(yù)讀模塊,所述預(yù)讀 模塊在接收到I/O請求的描述信息后,根據(jù)一預(yù)設(shè)的預(yù)讀策略從所述底層raid模塊中進(jìn)行 數(shù)據(jù)預(yù)讀,并將預(yù)讀出的數(shù)據(jù)緩存至所述緩沖管理模塊中。
進(jìn)一步地,上述方法還可具有以下特點(diǎn) 所述預(yù)設(shè)的預(yù)讀策略包括所述預(yù)讀模塊維護(hù)一歷史記錄,在從所述緩沖管理模 塊接收到1/0請求的描述信息后,將其保存至所述歷史記錄中,對所述1/0請求的描述信息
及其至少前一歷史記錄進(jìn)行模式識別,如果所述i/o請求及其至少前一歷史記錄對應(yīng)的數(shù)
據(jù)能夠組成順序數(shù)據(jù)流或者逆序數(shù)據(jù)流,則按照識別出的模式從所述底層raid模塊中進(jìn) 行數(shù)據(jù)預(yù)讀。
進(jìn)一步地,上述方法還可具有以下特點(diǎn) 所述預(yù)讀模塊在進(jìn)行數(shù)據(jù)預(yù)讀時,是先根據(jù)接收到的I/O請求的描述信息識別出 所述1/0請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量,然后根據(jù)識別出的模式,得到預(yù)讀數(shù)據(jù)的 起始位置,然后從所述預(yù)讀數(shù)據(jù)的起始位置開始,按照所述識別出的模式進(jìn)行數(shù)據(jù)預(yù)讀。
進(jìn)一步地,上述方法還可具有以下特點(diǎn) 所述緩沖管理模塊在根據(jù)I/O請求進(jìn)行數(shù)據(jù)查找時,是在所述預(yù)讀模塊識別出所 述1/0請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量后,根據(jù)所述1/0請求對應(yīng)的數(shù)據(jù)的起始位置 和偏移量在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找。
進(jìn)一步地,上述方法還可具有以下特點(diǎn) 所述緩沖管理模塊的緩沖容量、所述預(yù)讀模塊的預(yù)讀窗口的大小,以及最大預(yù)讀 尺寸中的一種或者多種根據(jù)用戶配置進(jìn)行調(diào)整。
本發(fā)明提出的磁盤陣列中一種基于數(shù)據(jù)庫的1/0緩存流的方法及系統(tǒng),可以提高 數(shù)據(jù)庫服務(wù)器查詢應(yīng)答的速度,提高業(yè)務(wù)響應(yīng)時間,能大幅改善系統(tǒng)的性能,從而應(yīng)對日益 增長的用戶對響應(yīng)時間面臨的挑戰(zhàn)。
圖1是本發(fā)明實(shí)施例磁盤陣列中一種基于數(shù)據(jù)庫的I/O緩存流的系統(tǒng)方框圖;
圖2是本發(fā)明實(shí)施例磁盤陣列中一種基于數(shù)據(jù)庫的I/O緩存流的方法流程圖。
具體實(shí)施例方式
數(shù)據(jù)庫,用以進(jìn)行數(shù)據(jù)的存儲和管理,在進(jìn)行數(shù)據(jù)操作時,例如查詢、修改等操作 時,會產(chǎn)生相應(yīng)的I/0請求。所述數(shù)據(jù)庫一般可以是oracle、 別與所述預(yù)讀模塊和所述底層raid模塊相連,用于接收數(shù) 據(jù)庫操作產(chǎn)生的1/0請求,在所述緩沖管理模塊中查找所述1/0請求對應(yīng)的數(shù)據(jù),如果能夠 查找到,則將其返回給數(shù)據(jù)庫,如果不能查找到,則控制所述底層raid模塊讀取所述I/O請 求對應(yīng)的數(shù)據(jù),緩存所述底層raid模塊讀取到的數(shù)據(jù),并將所述底層raid模塊讀取到的數(shù) 據(jù)返回給所述數(shù)據(jù)庫;以及將接收到的1/0請求的描述信息發(fā)送給所述預(yù)讀模塊,接收并 緩存所述預(yù)讀模塊發(fā)送來的預(yù)讀數(shù)據(jù)。 所述預(yù)讀模塊,分別與所述緩沖管理模塊和所述底層raid模塊相連,用于在從所 述緩沖管理模塊接收到I/O請求的描述信息后,根據(jù)一預(yù)設(shè)的預(yù)讀策略進(jìn)行數(shù)據(jù)預(yù)讀,并 將預(yù)讀出的數(shù)據(jù)發(fā)送給所述緩沖管理模塊。 所述預(yù)設(shè)的預(yù)讀策略包括所述預(yù)讀模塊維護(hù)一歷史記錄,在從所述緩沖管理模 塊接收到1/0請求的描述信息后,將其保存至所述歷史記錄中,對所述1/0請求的描述信息 及其至少前一歷史記錄進(jìn)行模式識別,如果所述1/0請求及其至少前一歷史記錄對應(yīng)的數(shù) 據(jù)能夠組成順序數(shù)據(jù)流或者逆序數(shù)據(jù)流,則按照識別出的模式從所述底層raid模塊中進(jìn) 行數(shù)據(jù)預(yù)讀。例如,當(dāng)前1/0請求為讀取40-49的數(shù)據(jù),所述1/0請求的前一歷史記錄為讀 取30-39的數(shù)據(jù),則兩次請求讀取的數(shù)據(jù)依次是30-39,以及40-49,可以組成順序數(shù)據(jù)流, 則下一讀取的數(shù)據(jù)很可能是從50開始順序讀取一段數(shù)據(jù),所以,可以預(yù)先從50開始順序讀 取一段數(shù)據(jù),并將其保存到所述緩沖管理模塊中,這樣,如果下一 1/0請求是讀取50-59的 數(shù)據(jù),則可以直接從所述緩沖管理模塊中查找到,無需進(jìn)行底層1/0操作,從而可以加快數(shù)據(jù)查找速度。再例如,當(dāng)前1/0請求為讀取39-30的數(shù)據(jù),所述1/0請求的前一歷史記錄為 讀取的數(shù)據(jù),則兩次請求讀取的數(shù)據(jù)依次是49-40,以及39-30,可以組成逆序數(shù)據(jù)流,則下 一讀取的數(shù)據(jù)很可能是從29開始順序讀取一段數(shù)據(jù),所以,可以預(yù)先從29開始順序讀取一 段數(shù)據(jù),并將其保存到所述緩沖管理模塊中,這樣,如果下一 1/0請求是讀取29-20的數(shù)據(jù), 則可以直接從所述緩沖管理模塊中查找到,無需進(jìn)行底層1/0操作,從而可以加快數(shù)據(jù)查 找速度。 所述預(yù)讀模塊,在進(jìn)行數(shù)據(jù)預(yù)讀時,讀取的數(shù)據(jù)長度是所述界面管理模塊配置的 預(yù)讀窗口的大小,所述預(yù)讀窗口的大小不超過所述界面管理模塊配置的最大預(yù)讀尺寸。
所述預(yù)讀模塊,在進(jìn)行數(shù)據(jù)預(yù)讀時,是先根據(jù)接收到的1/0請求的描述信息識別 出所述I/O請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量,然后根據(jù)識別出的模式,得到預(yù)讀數(shù)據(jù) 的起始位置,然后從所述預(yù)讀數(shù)據(jù)的起始位置開始,按照所述識別出的模式進(jìn)行數(shù)據(jù)預(yù)讀。 所述緩沖管理模塊,在根據(jù)1/0請求進(jìn)行數(shù)據(jù)查找時,可以在所述預(yù)讀模塊識別出所述I/O 請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量后,根據(jù)所述I/O請求對應(yīng)的數(shù)據(jù)的起始位置和偏移 量在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找。 所述底層raid模塊,用以在所述緩沖管理模塊的控制下處理數(shù)據(jù)庫的I/O請求, 并將讀取到的數(shù)據(jù)返回給所述緩沖管理模塊。 所述界面管理模塊和數(shù)據(jù)庫屬于應(yīng)用層,所述緩沖管理模塊、所述預(yù)讀模塊和所 述底層raid模塊屬于內(nèi)核層。 參見圖2,該圖示出了本發(fā)明實(shí)施例磁盤陣列中一種基于數(shù)據(jù)庫的1/0緩存流方 法,包括如下步驟 步驟S201 :數(shù)據(jù)庫進(jìn)行操作,產(chǎn)生相應(yīng)的I/O請求; 所述1/0請求是由數(shù)據(jù)庫發(fā)生查詢或修改等操作時,由操作系統(tǒng)塊設(shè)備層產(chǎn)生 的; 步驟S202 :—緩沖管理模塊接收數(shù)據(jù)庫操作產(chǎn)生的I/O請求,先根據(jù)所述I/O請 求在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找,如果查找到對應(yīng)的數(shù)據(jù),則將其返回給數(shù)據(jù)庫,否 則控制底層raid模塊根據(jù)所述I/O請求進(jìn)行數(shù)據(jù)讀取,緩存底層raid模塊讀取到的數(shù)據(jù), 并將所述讀取到的數(shù)據(jù)返回給數(shù)據(jù)庫; 步驟S203 :所述緩沖管理模塊將接收到的I/O請求的描述信息發(fā)送給一預(yù)讀模
塊,所述預(yù)讀模塊在接收到所述i/o請求的描述信息后,根據(jù)一預(yù)設(shè)的預(yù)讀策略從底層
raid模塊中進(jìn)行數(shù)據(jù)預(yù)讀,并將預(yù)讀出的數(shù)據(jù)緩存至所述緩沖管理模塊中。 所述預(yù)設(shè)的預(yù)讀策略包括所述預(yù)讀模塊維護(hù)一歷史記錄,在從所述緩沖管理模
塊接收到1/0請求的描述信息后,將其保存至所述歷史記錄中,對所述1/0請求的描述信息
及其至少前一歷史記錄進(jìn)行模式識別,如果所述1/0請求及其至少前一歷史記錄對應(yīng)的數(shù)
據(jù)能夠組成順序數(shù)據(jù)流或者逆序數(shù)據(jù)流,則按照識別出的模式從所述底層raid模塊中進(jìn)
行數(shù)據(jù)預(yù)讀。 例如,當(dāng)前1/0請求為讀取40-49的數(shù)據(jù),所述I/O請求的前一歷史記錄為讀取 30-39的數(shù)據(jù),則兩次讀取的數(shù)據(jù)依次是30-39,以及40-49,可以組成順序數(shù)據(jù)流,則下一 讀取的數(shù)據(jù)很可能是從50開始順序讀取一段數(shù)據(jù),所以,可以預(yù)先從50開始順序讀取一段 數(shù)據(jù),并將其保存到所述緩沖管理模塊中,這樣,如果下一 I/O請求是查找50-59的數(shù)據(jù),則可以直接從所述緩沖管理模塊中查找到,無需進(jìn)行底層操作,從而可以加快數(shù)據(jù)查找速度。 進(jìn)行數(shù)據(jù)預(yù)讀時,讀取的數(shù)據(jù)長度是所述界面管理模塊配置的預(yù)讀窗口的大小,該預(yù)讀窗 口的大小不超過所述界面管理模塊配置的最大預(yù)讀尺寸。 再例如,當(dāng)前1/0請求為讀取39-30的數(shù)據(jù),所述1/0請求的前一歷史記錄為讀取 的數(shù)據(jù),則兩次請求讀取的數(shù)據(jù)依次是49-40,以及39-30,可以組成逆序數(shù)據(jù)流,則下一讀 取的數(shù)據(jù)很可能是從29開始順序讀取一段數(shù)據(jù),所以,可以預(yù)先從29開始順序讀取一段數(shù) 據(jù),并將其保存到所述緩沖管理模塊中,這樣,如果下一 1/0請求是讀取29-20的數(shù)據(jù),則可 以直接從所述緩沖管理模塊中查找到,無需進(jìn)行底層1/0操作,從而可以加快數(shù)據(jù)查找速 度。 所述緩沖管理模塊的緩沖容量、所述預(yù)讀模塊的預(yù)讀窗口的大小,以及最大預(yù)讀 尺寸中的一種或者多種可以根據(jù)用戶配置進(jìn)行調(diào)整。例如,在進(jìn)行數(shù)據(jù)預(yù)讀時,可以增大預(yù) 讀窗口 ,默認(rèn)設(shè)置為4兆,針對數(shù)據(jù)庫應(yīng)用通過增大預(yù)讀窗口從而使得下一段時間內(nèi)需要 讀取的數(shù)據(jù)都可以在緩沖中,使得應(yīng)用需要數(shù)據(jù)可以直接從緩沖中獲得數(shù)據(jù),而無需等待 磁盤I/O的時間,該方法可以極大地提高數(shù)據(jù)庫系統(tǒng)的性能。 所述緩沖管理模塊,在根據(jù)I/O請求進(jìn)行數(shù)據(jù)查找時,可以先調(diào)用所述預(yù)讀模塊 識別出所述1/0請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量,然后根據(jù)所述1/0請求對應(yīng)的數(shù)據(jù) 的起始位置和偏移量在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找。 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
磁盤陣列中一種基于數(shù)據(jù)庫的I/O緩存流的系統(tǒng),其特征在于,包括一緩沖管理模塊、一預(yù)讀模塊和一底層獨(dú)立磁盤冗余陣列(raid)模塊,所述界面管理模塊分別與所述緩沖管理模塊和所述預(yù)讀模塊相連,所述緩沖管理模塊分別與所述預(yù)讀模塊、所述底層raid模塊和所述數(shù)據(jù)庫相連,所述預(yù)讀模塊還與所述底層raid模塊相連,其中所述界面管理模塊,用以對所述緩沖管理模塊的緩沖容量、所述預(yù)讀模塊的預(yù)讀窗口的大小,以及最大預(yù)讀尺寸中的一種或者多種進(jìn)行配置;所述緩沖管理模塊,用于接收數(shù)據(jù)庫操作產(chǎn)生的I/O請求,在所述緩沖管理模塊中查找所述I/O請求對應(yīng)的數(shù)據(jù),如果能夠查找到,則將其返回給數(shù)據(jù)庫,如果不能查找到,則控制所述底層raid模塊根據(jù)所述I/O請求進(jìn)行數(shù)據(jù)讀取,緩存所述底層raid模塊讀取到的數(shù)據(jù),并將所述讀取到的數(shù)據(jù)返回給數(shù)據(jù)庫;以及將接收到的I/O請求的描述信息發(fā)送給所述預(yù)讀模塊,接收并緩存所述預(yù)讀模塊發(fā)送來的預(yù)讀數(shù)據(jù);所述預(yù)讀模塊,用于在從所述緩沖管理模塊接收到I/O請求的描述信息后,根據(jù)一預(yù)設(shè)的預(yù)讀策略從所述底層raid模塊中進(jìn)行數(shù)據(jù)預(yù)讀,并將預(yù)讀出的數(shù)據(jù)發(fā)送給所述緩沖管理模塊;所述底層raid模塊,用以在所述緩沖管理模塊的控制下處理數(shù)據(jù)庫的I/O請求,并將讀取到的數(shù)據(jù)返回給所述緩沖管理模塊。
2. 如權(quán)利要求1所述的系統(tǒng),其特征在于所述預(yù)設(shè)的預(yù)讀策略包括所述預(yù)讀模塊維護(hù)一歷史記錄,在從所述緩沖管理模塊接 收到1/0請求的描述信息后,將其保存至所述歷史記錄中,對所述1/0請求的描述信息及其 至少前一歷史記錄進(jìn)行模式識別,如果所述I/O請求及其至少前一歷史記錄對應(yīng)的數(shù)據(jù)能 夠組成順序數(shù)據(jù)流或者逆序數(shù)據(jù)流,則按照識別出的模式從所述底層raid模塊中進(jìn)行數(shù) 據(jù)預(yù)讀。
3. 如權(quán)利要求1或2所述的系統(tǒng),其特征在于所述預(yù)讀模塊,在進(jìn)行數(shù)據(jù)預(yù)讀時,是先根據(jù)接收到的1/0請求的描述信息識別出所述i/o請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量,然后根據(jù)識別出的模式,得到預(yù)讀數(shù)據(jù)的起始位置,然后從所述預(yù)讀數(shù)據(jù)的起始位置開始,按照所述識別出的模式進(jìn)行數(shù)據(jù)預(yù)讀。
4. 如權(quán)利要求3所述的系統(tǒng),其特征在于所述緩沖管理模塊,在根據(jù)1/0請求進(jìn)行數(shù)據(jù)查找時,是在所述預(yù)讀模塊識別出所述 1/0請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量后,根據(jù)所述1/0請求對應(yīng)的數(shù)據(jù)的起始位置和 偏移量在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找。
5. 如權(quán)利要求1所述的系統(tǒng),其特征在于所述界面管理模塊屬于應(yīng)用層,所述緩沖管理模塊、所述預(yù)讀模塊和所述底層raid模 塊屬于內(nèi)核層。
6. 磁盤陣列中一種基于數(shù)據(jù)庫的1/0緩存流的方法,其特征在于,包括 一緩沖管理模塊接收數(shù)據(jù)庫操作產(chǎn)生的1/0請求,根據(jù)接收到的1/0請求在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找,如果能夠查找到對應(yīng)的數(shù)據(jù),則將其返回給數(shù)據(jù)庫,否則控制底 層獨(dú)立磁盤冗余陣列(raid)模塊根據(jù)所述I/O請求進(jìn)行數(shù)據(jù)讀取,緩存所述底層raid模 塊讀取到的數(shù)據(jù),并將所述讀取到的數(shù)據(jù)返回給數(shù)據(jù)庫;以及所述緩沖管理模塊將接收到的I/O請求的描述信息發(fā)送給一預(yù)讀模塊,所述預(yù)讀模塊在接收到I/O請求的描述信息后,根據(jù)一預(yù)設(shè)的預(yù)讀策略從所述底層raid模塊中進(jìn)行數(shù)據(jù) 預(yù)讀,并將預(yù)讀出的數(shù)據(jù)緩存至所述緩沖管理模塊中。
7. 如權(quán)利要求6所述的方法,其特征在于所述預(yù)設(shè)的預(yù)讀策略包括所述預(yù)讀模塊維護(hù)一歷史記錄,在從所述緩沖管理模塊接 收到1/0請求的描述信息后,將其保存至所述歷史記錄中,對所述1/0請求的描述信息及其 至少前一歷史記錄進(jìn)行模式識別,如果所述1/0請求及其至少前一歷史記錄對應(yīng)的數(shù)據(jù)能 夠組成順序數(shù)據(jù)流或者逆序數(shù)據(jù)流,則按照識別出的模式從所述底層raid模塊中進(jìn)行數(shù) 據(jù)預(yù)讀。
8. 如權(quán)利要求6或7所述的方法,其特征在于所述預(yù)讀模塊在進(jìn)行數(shù)據(jù)預(yù)讀時,是先根據(jù)接收到的I/O請求的描述信息識別出所述 I/O請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量,然后根據(jù)識別出的模式,得到預(yù)讀數(shù)據(jù)的起始位 置,然后從所述預(yù)讀數(shù)據(jù)的起始位置開始,按照所述識別出的模式進(jìn)行數(shù)據(jù)預(yù)讀。
9. 如權(quán)利要求8所述的方法,其特征在于所述緩沖管理模塊在根據(jù)1/0請求進(jìn)行數(shù)據(jù)查找時,是在所述預(yù)讀模塊識別出所述1/o請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量后,根據(jù)所述i/o請求對應(yīng)的數(shù)據(jù)的起始位置和偏移量在所述緩沖管理模塊中進(jìn)行數(shù)據(jù)查找。
10. 如權(quán)利要求6所述的方法,其特征在于所述緩沖管理模塊的緩沖容量、所述預(yù)讀模塊的預(yù)讀窗口的大小,以及最大預(yù)讀尺寸 中的一種或者多種根據(jù)用戶配置進(jìn)行調(diào)整。
全文摘要
本發(fā)明提出磁盤陣列中一種基于數(shù)據(jù)庫的I/O緩存流的方法及系統(tǒng),該方法包括緩沖管理模塊接收數(shù)據(jù)庫操作產(chǎn)生的I/O請求,根據(jù)接收到的I/O請求在緩沖管理模塊中進(jìn)行數(shù)據(jù)查找,如果能夠查找到對應(yīng)的數(shù)據(jù),則將其返回給數(shù)據(jù)庫,否則控制底層獨(dú)立磁盤冗余陣列(raid)模塊根據(jù)所述I/O請求進(jìn)行數(shù)據(jù)讀取,緩存底層raid模塊讀取到的數(shù)據(jù),并將所述讀取到的數(shù)據(jù)返回給數(shù)據(jù)庫;緩沖管理模塊將接收到的I/O請求的描述信息發(fā)送給預(yù)讀模塊,預(yù)讀模塊在接收到I/O請求的描述信息后,根據(jù)一預(yù)設(shè)的預(yù)讀策略從底層raid模塊中進(jìn)行數(shù)據(jù)預(yù)讀,并將預(yù)讀出的數(shù)據(jù)緩存至緩沖管理模塊中。該方法提高了數(shù)據(jù)庫服務(wù)器查詢應(yīng)答的速度。
文檔編號G06F3/06GK101788887SQ20101010820
公開日2010年7月28日 申請日期2010年2月5日 優(yōu)先權(quán)日2010年2月5日
發(fā)明者呂爍 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司