磁盘阵列中一种基于数据库的i/o缓存流的系统及方法

文档序号:6598075阅读:153来源:国知局
专利名称:磁盘阵列中一种基于数据库的i/o缓存流的系统及方法
技术领域
本发明涉及磁盘阵列中一种基于数据库的I/O缓存流技术,通常用于磁盘阵列中
的数据库应用。
背景技术
随着网络应用和电子商务的不断发展,各个站点的访问量越来越大,数据库规模
也随之不断地扩大,数据库系统的性能问题就越来越突出,处理用户的订单太慢,将会严重 影响到用户的正常使用。 通常的企业数据库应用建立在磁盘阵列上,因此如何在磁盘阵列中提供一种方 案,使其应用在数据库应用系统中,能够提高数据库系统的性能,是目前业务量急剧增加面 临的挑战。

发明内容
本发明要解决的技术问题是,提出磁盘阵列中一种基于数据库的I/O缓存流的方
法及系统,可以提高数据库服务器查询应答的速度,提高业务响应时间。 为了解决上述技术问题,本发明提供了磁盘阵列中一种基于数据库的1/0缓存流
的系统,包括一缓冲管理模块、一预读模块和一底层独立磁盘冗余阵列(raid)模块,所述
界面管理模块分别与所述缓冲管理模块和所述预读模块相连,所述缓冲管理模块分别与所
述预读模块、所述底层raid模块和所述数据库相连,所述预读模块还与所述底层raid模块 相连,其中 所述界面管理模块,用以对所述缓冲管理模块的缓冲容量、所述预读模块的预读 窗口的大小,以及最大预读尺寸中的一种或者多种进行配置; 所述缓冲管理模块,用于接收数据库操作产生的1/0请求,在所述缓冲管理模块 中查找所述I/O请求对应的数据,如果能够查找到,则将其返回给数据库,如果不能查找 到,则控制所述底层raid模块根据所述I/O请求进行数据读取,缓存所述底层raid模块读 取到的数据,并将所述读取到的数据返回给数据库;以及将接收到的1/0请求的描述信息 发送给所述预读模块,接收并缓存所述预读模块发送来的预读数据; 所述预读模块,用于在从所述缓冲管理模块接收到1/0请求的描述信息后,根据 一预设的预读策略从所述底层raid模块中进行数据预读,并将预读出的数据发送给所述 缓冲管理模块; 所述底层raid模±央,用以在所述缓冲管理模块的控制下处理数据库的I/O请求,
并将读取到的数据返回给所述缓冲管理模块。 进一步地,上述系统还可具有以下特点 所述预设的预读策略包括所述预读模块维护一历史记录,在从所述缓冲管理模 块接收到1/0请求的描述信息后,将其保存至所述历史记录中,对所述1/0请求的描述信息 及其至少前一历史记录进行模式识别,如果所述1/0请求及其至少前一历史记录对应的数
4据能够组成顺序数据流或者逆序数据流,则按照识别出的模式从所述底层raid模块中进 行数据预读。 进一步地,上述系统还可具有以下特点 所述预读模块,在进行数据预读时,是先根据接收到的1/0请求的描述信息识别 出所述I/O请求对应的数据的起始位置和偏移量,然后根据识别出的模式,得到预读数据 的起始位置,然后从所述预读数据的起始位置开始,按照所述识别出的模式进行数据预读。
进一步地,上述系统还可具有以下特点 所述缓冲管理模块,在根据1/0请求进行数据查找时,是在所述预读模块识别出 所述1/0请求对应的数据的起始位置和偏移量后,根据所述1/0请求对应的数据的起始位 置和偏移量在所述缓冲管理模块中进行数据查找。
进一步地,上述系统还可具有以下特点 所述界面管理模块属于应用层,所述缓冲管理模块、所述预读模块和所述底层 raid模块属于内核层。 为了解决上述技术问题,本发明还提出了磁盘阵列中一种基于數据库的I/0缓存 流的方法,包括 —缓冲管理模块接收数据库操作产生的1/0请求,根据接收到的1/0请求在所述 缓冲管理模块中进行数据查找,如果能够查找到对应的数据,则将其返回给数据库,否则控 制底层独立磁盘冗余阵列(raid)模块根据所述l/0请求进行数据读取,缓存所述底层raid 模块读取到的数据,并将所述读取到的数据返回给数据库;以及 所述缓冲管理模块将接收到的I/O请求的描述信息发送给一预读模块,所述预读 模块在接收到I/O请求的描述信息后,根据一预设的预读策略从所述底层raid模块中进行 数据预读,并将预读出的数据缓存至所述缓冲管理模块中。
进一步地,上述方法还可具有以下特点 所述预设的预读策略包括所述预读模块维护一历史记录,在从所述缓冲管理模 块接收到1/0请求的描述信息后,将其保存至所述历史记录中,对所述1/0请求的描述信息
及其至少前一历史记录进行模式识别,如果所述i/o请求及其至少前一历史记录对应的数
据能够组成顺序数据流或者逆序数据流,则按照识别出的模式从所述底层raid模块中进 行数据预读。
进一步地,上述方法还可具有以下特点 所述预读模块在进行数据预读时,是先根据接收到的I/O请求的描述信息识别出 所述1/0请求对应的数据的起始位置和偏移量,然后根据识别出的模式,得到预读数据的 起始位置,然后从所述预读数据的起始位置开始,按照所述识别出的模式进行数据预读。
进一步地,上述方法还可具有以下特点 所述缓冲管理模块在根据I/O请求进行数据查找时,是在所述预读模块识别出所 述1/0请求对应的数据的起始位置和偏移量后,根据所述1/0请求对应的数据的起始位置 和偏移量在所述缓冲管理模块中进行数据查找。
进一步地,上述方法还可具有以下特点 所述缓冲管理模块的缓冲容量、所述预读模块的预读窗口的大小,以及最大预读 尺寸中的一种或者多种根据用户配置进行调整。
本发明提出的磁盘阵列中一种基于数据库的1/0缓存流的方法及系统,可以提高 数据库服务器查询应答的速度,提高业务响应时间,能大幅改善系统的性能,从而应对日益 增长的用户对响应时间面临的挑战。


图1是本发明实施例磁盘阵列中一种基于数据库的I/O缓存流的系统方框图;
图2是本发明实施例磁盘阵列中一种基于数据库的I/O缓存流的方法流程图。
具体实施例方式
数据库,用以进行数据的存储和管理,在进行数据操作时,例如查询、修改等操作 时,会产生相应的I/0请求。所述数据库一般可以是oracle、 别与所述预读模块和所述底层raid模块相连,用于接收数 据库操作产生的1/0请求,在所述缓冲管理模块中查找所述1/0请求对应的数据,如果能够 查找到,则将其返回给数据库,如果不能查找到,则控制所述底层raid模块读取所述I/O请 求对应的数据,缓存所述底层raid模块读取到的数据,并将所述底层raid模块读取到的数 据返回给所述数据库;以及将接收到的1/0请求的描述信息发送给所述预读模块,接收并 缓存所述预读模块发送来的预读数据。 所述预读模块,分别与所述缓冲管理模块和所述底层raid模块相连,用于在从所 述缓冲管理模块接收到I/O请求的描述信息后,根据一预设的预读策略进行数据预读,并 将预读出的数据发送给所述缓冲管理模块。 所述预设的预读策略包括所述预读模块维护一历史记录,在从所述缓冲管理模 块接收到1/0请求的描述信息后,将其保存至所述历史记录中,对所述1/0请求的描述信息 及其至少前一历史记录进行模式识别,如果所述1/0请求及其至少前一历史记录对应的数 据能够组成顺序数据流或者逆序数据流,则按照识别出的模式从所述底层raid模块中进 行数据预读。例如,当前1/0请求为读取40-49的数据,所述1/0请求的前一历史记录为读 取30-39的数据,则两次请求读取的数据依次是30-39,以及40-49,可以组成顺序数据流, 则下一读取的数据很可能是从50开始顺序读取一段数据,所以,可以预先从50开始顺序读 取一段数据,并将其保存到所述缓冲管理模块中,这样,如果下一 1/0请求是读取50-59的 数据,则可以直接从所述缓冲管理模块中查找到,无需进行底层1/0操作,从而可以加快数据查找速度。再例如,当前1/0请求为读取39-30的数据,所述1/0请求的前一历史记录为 读取的数据,则两次请求读取的数据依次是49-40,以及39-30,可以组成逆序数据流,则下 一读取的数据很可能是从29开始顺序读取一段数据,所以,可以预先从29开始顺序读取一 段数据,并将其保存到所述缓冲管理模块中,这样,如果下一 1/0请求是读取29-20的数据, 则可以直接从所述缓冲管理模块中查找到,无需进行底层1/0操作,从而可以加快数据查 找速度。 所述预读模块,在进行数据预读时,读取的数据长度是所述界面管理模块配置的 预读窗口的大小,所述预读窗口的大小不超过所述界面管理模块配置的最大预读尺寸。
所述预读模块,在进行数据预读时,是先根据接收到的1/0请求的描述信息识别 出所述I/O请求对应的数据的起始位置和偏移量,然后根据识别出的模式,得到预读数据 的起始位置,然后从所述预读数据的起始位置开始,按照所述识别出的模式进行数据预读。 所述缓冲管理模块,在根据1/0请求进行数据查找时,可以在所述预读模块识别出所述I/O 请求对应的数据的起始位置和偏移量后,根据所述I/O请求对应的数据的起始位置和偏移 量在所述缓冲管理模块中进行数据查找。 所述底层raid模块,用以在所述缓冲管理模块的控制下处理数据库的I/O请求, 并将读取到的数据返回给所述缓冲管理模块。 所述界面管理模块和数据库属于应用层,所述缓冲管理模块、所述预读模块和所 述底层raid模块属于内核层。 参见图2,该图示出了本发明实施例磁盘阵列中一种基于数据库的1/0缓存流方 法,包括如下步骤 步骤S201 :数据库进行操作,产生相应的I/O请求; 所述1/0请求是由数据库发生查询或修改等操作时,由操作系统块设备层产生 的; 步骤S202 :—缓冲管理模块接收数据库操作产生的I/O请求,先根据所述I/O请 求在所述缓冲管理模块中进行数据查找,如果查找到对应的数据,则将其返回给数据库,否 则控制底层raid模块根据所述I/O请求进行数据读取,缓存底层raid模块读取到的数据, 并将所述读取到的数据返回给数据库; 步骤S203 :所述缓冲管理模块将接收到的I/O请求的描述信息发送给一预读模
块,所述预读模块在接收到所述i/o请求的描述信息后,根据一预设的预读策略从底层
raid模块中进行数据预读,并将预读出的数据缓存至所述缓冲管理模块中。 所述预设的预读策略包括所述预读模块维护一历史记录,在从所述缓冲管理模
块接收到1/0请求的描述信息后,将其保存至所述历史记录中,对所述1/0请求的描述信息
及其至少前一历史记录进行模式识别,如果所述1/0请求及其至少前一历史记录对应的数
据能够组成顺序数据流或者逆序数据流,则按照识别出的模式从所述底层raid模块中进
行数据预读。 例如,当前1/0请求为读取40-49的数据,所述I/O请求的前一历史记录为读取 30-39的数据,则两次读取的数据依次是30-39,以及40-49,可以组成顺序数据流,则下一 读取的数据很可能是从50开始顺序读取一段数据,所以,可以预先从50开始顺序读取一段 数据,并将其保存到所述缓冲管理模块中,这样,如果下一 I/O请求是查找50-59的数据,则可以直接从所述缓冲管理模块中查找到,无需进行底层操作,从而可以加快数据查找速度。 进行数据预读时,读取的数据长度是所述界面管理模块配置的预读窗口的大小,该预读窗 口的大小不超过所述界面管理模块配置的最大预读尺寸。 再例如,当前1/0请求为读取39-30的数据,所述1/0请求的前一历史记录为读取 的数据,则两次请求读取的数据依次是49-40,以及39-30,可以组成逆序数据流,则下一读 取的数据很可能是从29开始顺序读取一段数据,所以,可以预先从29开始顺序读取一段数 据,并将其保存到所述缓冲管理模块中,这样,如果下一 1/0请求是读取29-20的数据,则可 以直接从所述缓冲管理模块中查找到,无需进行底层1/0操作,从而可以加快数据查找速 度。 所述缓冲管理模块的缓冲容量、所述预读模块的预读窗口的大小,以及最大预读 尺寸中的一种或者多种可以根据用户配置进行调整。例如,在进行数据预读时,可以增大预 读窗口 ,默认设置为4兆,针对数据库应用通过增大预读窗口从而使得下一段时间内需要 读取的数据都可以在缓冲中,使得应用需要数据可以直接从缓冲中获得数据,而无需等待 磁盘I/O的时间,该方法可以极大地提高数据库系统的性能。 所述缓冲管理模块,在根据I/O请求进行数据查找时,可以先调用所述预读模块 识别出所述1/0请求对应的数据的起始位置和偏移量,然后根据所述1/0请求对应的数据 的起始位置和偏移量在所述缓冲管理模块中进行数据查找。 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
磁盘阵列中一种基于数据库的I/O缓存流的系统,其特征在于,包括一缓冲管理模块、一预读模块和一底层独立磁盘冗余阵列(raid)模块,所述界面管理模块分别与所述缓冲管理模块和所述预读模块相连,所述缓冲管理模块分别与所述预读模块、所述底层raid模块和所述数据库相连,所述预读模块还与所述底层raid模块相连,其中所述界面管理模块,用以对所述缓冲管理模块的缓冲容量、所述预读模块的预读窗口的大小,以及最大预读尺寸中的一种或者多种进行配置;所述缓冲管理模块,用于接收数据库操作产生的I/O请求,在所述缓冲管理模块中查找所述I/O请求对应的数据,如果能够查找到,则将其返回给数据库,如果不能查找到,则控制所述底层raid模块根据所述I/O请求进行数据读取,缓存所述底层raid模块读取到的数据,并将所述读取到的数据返回给数据库;以及将接收到的I/O请求的描述信息发送给所述预读模块,接收并缓存所述预读模块发送来的预读数据;所述预读模块,用于在从所述缓冲管理模块接收到I/O请求的描述信息后,根据一预设的预读策略从所述底层raid模块中进行数据预读,并将预读出的数据发送给所述缓冲管理模块;所述底层raid模块,用以在所述缓冲管理模块的控制下处理数据库的I/O请求,并将读取到的数据返回给所述缓冲管理模块。
2. 如权利要求1所述的系统,其特征在于所述预设的预读策略包括所述预读模块维护一历史记录,在从所述缓冲管理模块接 收到1/0请求的描述信息后,将其保存至所述历史记录中,对所述1/0请求的描述信息及其 至少前一历史记录进行模式识别,如果所述I/O请求及其至少前一历史记录对应的数据能 够组成顺序数据流或者逆序数据流,则按照识别出的模式从所述底层raid模块中进行数 据预读。
3. 如权利要求1或2所述的系统,其特征在于所述预读模块,在进行数据预读时,是先根据接收到的1/0请求的描述信息识别出所述i/o请求对应的数据的起始位置和偏移量,然后根据识别出的模式,得到预读数据的起始位置,然后从所述预读数据的起始位置开始,按照所述识别出的模式进行数据预读。
4. 如权利要求3所述的系统,其特征在于所述缓冲管理模块,在根据1/0请求进行数据查找时,是在所述预读模块识别出所述 1/0请求对应的数据的起始位置和偏移量后,根据所述1/0请求对应的数据的起始位置和 偏移量在所述缓冲管理模块中进行数据查找。
5. 如权利要求1所述的系统,其特征在于所述界面管理模块属于应用层,所述缓冲管理模块、所述预读模块和所述底层raid模 块属于内核层。
6. 磁盘阵列中一种基于数据库的1/0缓存流的方法,其特征在于,包括 一缓冲管理模块接收数据库操作产生的1/0请求,根据接收到的1/0请求在所述缓冲管理模块中进行数据查找,如果能够查找到对应的数据,则将其返回给数据库,否则控制底 层独立磁盘冗余阵列(raid)模块根据所述I/O请求进行数据读取,缓存所述底层raid模 块读取到的数据,并将所述读取到的数据返回给数据库;以及所述缓冲管理模块将接收到的I/O请求的描述信息发送给一预读模块,所述预读模块在接收到I/O请求的描述信息后,根据一预设的预读策略从所述底层raid模块中进行数据 预读,并将预读出的数据缓存至所述缓冲管理模块中。
7. 如权利要求6所述的方法,其特征在于所述预设的预读策略包括所述预读模块维护一历史记录,在从所述缓冲管理模块接 收到1/0请求的描述信息后,将其保存至所述历史记录中,对所述1/0请求的描述信息及其 至少前一历史记录进行模式识别,如果所述1/0请求及其至少前一历史记录对应的数据能 够组成顺序数据流或者逆序数据流,则按照识别出的模式从所述底层raid模块中进行数 据预读。
8. 如权利要求6或7所述的方法,其特征在于所述预读模块在进行数据预读时,是先根据接收到的I/O请求的描述信息识别出所述 I/O请求对应的数据的起始位置和偏移量,然后根据识别出的模式,得到预读数据的起始位 置,然后从所述预读数据的起始位置开始,按照所述识别出的模式进行数据预读。
9. 如权利要求8所述的方法,其特征在于所述缓冲管理模块在根据1/0请求进行数据查找时,是在所述预读模块识别出所述1/o请求对应的数据的起始位置和偏移量后,根据所述i/o请求对应的数据的起始位置和偏移量在所述缓冲管理模块中进行数据查找。
10. 如权利要求6所述的方法,其特征在于所述缓冲管理模块的缓冲容量、所述预读模块的预读窗口的大小,以及最大预读尺寸 中的一种或者多种根据用户配置进行调整。
全文摘要
本发明提出磁盘阵列中一种基于数据库的I/O缓存流的方法及系统,该方法包括缓冲管理模块接收数据库操作产生的I/O请求,根据接收到的I/O请求在缓冲管理模块中进行数据查找,如果能够查找到对应的数据,则将其返回给数据库,否则控制底层独立磁盘冗余阵列(raid)模块根据所述I/O请求进行数据读取,缓存底层raid模块读取到的数据,并将所述读取到的数据返回给数据库;缓冲管理模块将接收到的I/O请求的描述信息发送给预读模块,预读模块在接收到I/O请求的描述信息后,根据一预设的预读策略从底层raid模块中进行数据预读,并将预读出的数据缓存至缓冲管理模块中。该方法提高了数据库服务器查询应答的速度。
文档编号G06F3/06GK101788887SQ20101010820
公开日2010年7月28日 申请日期2010年2月5日 优先权日2010年2月5日
发明者吕烁 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1