数据处理方法与装置制造方法及图纸

技术编号:9667649 阅读:122 留言:0更新日期:2014-02-14 05:48
本申请提供了一种数据处理方法与装置,其中,数据处理方法用于工作线程处理双缓冲区数据,所述工作线程包括单独的上下文;所述工作线程调用第一接口函数监控其自身双缓冲区异步预读数据状态。通过本申请,能够有效满足系统尤其是分布式系统的预读需求,提高系统的I/O性能。

【技术实现步骤摘要】
数据处理方法与装置
本申请涉及数据处理
,特别是涉及一种数据处理方法与装置。
技术介绍
随着多处理器、多核、多线程成为提升计算性能的主要手段,计算机系统设计的关注焦点正在从单个线程的执行性能转移到多个甚至大量线程的并行运行上,开发可以在数量持续增长的并行处理器上高效运行的应用程序就变得非常重要。与此同时,软件并行化也意味着I/O(输入/输出)并行化。在I/O并行化中,预读可以有效地减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。一般情况下,操作系统在内核空间实现对文件的预读功能。主流操作系统都遵循了一个简单有效的原则:把读模式分为随机读和顺序读两大类,并只对顺序读进行预读,预读算法需要能够识别应用程序的访问模式和预测出即将被访问的数据页面。传统的预读算法采用模式匹配的方法,监测应用程序对各个文件的读请求序列,维护一定的历史记录,并将其与访问模式逐一进行特征匹配。如果符合任何一种非随机的访问模式的特征,即可依此特征进行预测和预读。以Linux操作系统为例,其预读流程如图1所示,该预读包括:步骤S10:判断是否为顺序读,若否,则结束预读;若是本文档来自技高网...
数据处理方法与装置

【技术保护点】
一种数据处理方法,其特征在于,所述方法用于工作线程处理双缓冲区数据,其中,所述工作线程包括单独的上下文;所述工作线程调用第一接口函数监控其自身双缓冲区异步预读数据状态。

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法用于工作线程处理双缓冲区数据,其中,所述工作线程包括单独的上下文;所述工作线程调用第二接口函数指示异步预读一个或多个待顺序读的数据块的数据,其中,所述第二接口函数携带有异步预读信息;根据所述异步预读信息,直接从外部存储器将对应的所述一个或多个待顺序读的数据块的数据异步预读到所述工作线程自身的双缓冲区;所述工作线程调用第一接口函数监控其自身双缓冲区异步预读数据状态。2.根据权利要求1所述的方法,其特征在于,在所述工作线程调用第一接口函数监控其自身缓冲区异步预读数据状态的步骤之前,还包括:所述工作线程调用第二接口函数指示异步预读一个或多个待顺序读的数据块的数据,其中,所述第二接口函数携带有异步预读信息,所述异步预读信息包括:所述待顺序读的数据块的信息和所述待顺序读的数据块所属的数据库文件的句柄;根据所述异步预读信息,直接从外部存储器将对应的所述一个或多个待顺序读的数据块的数据异步预读到所述工作线程自身的双缓冲区。3.根据权利要求2所述的方法,其特征在于,所述异步预读信息还包括:预读方式和/或缓存方式,其中,所述预读方式用于指示对所述待顺序读的数据块是正向顺序读还是反向顺序读,所述缓存方式用于指示是否对预读的数据进行缓存。4.根据权利要求2所述的方法,其特征在于,根据所述异步预读信息,直接从外部存储器将对应的所述一个或多个待顺序读的数据块的数据异步预读到所述工作线程自身的双缓冲区的步骤包括:根据所述异步预读信息,和所述工作线程中的双缓冲区的大小,确定异步预读的次数和顺序;根据确定的所述异步预读的次数和顺序,调用第三接口函数直接从外部存储器将对应的所述一个或多个待顺序读的数据块的数据异步预读到所述工作线程自身的双缓冲区。5.根据权利要求4所述的方法,其特征在于,所述第三接口函数的输入参数包括本次预读的所述待顺序读的数据块的信息。6.根据权利要求2所述的方法,其特征在于,在所述工作线程调用第二接口函数指示异步预读一个或多个待顺序读的数据块的数据的步骤之前,还包括:系统根据查询数据库文件的查询命令确定对数据库文件的查询是范围查询;根据所述范围查询所查询的范围,为所述工作线程确定待顺序读的数据块。7.根据权利要求6所述的方法,其特征在于,在根据所述范围查询所查询的范围,为所述工作线程确定待顺序读的数据块的步骤之后,还包括:判断所述确定的待顺序读的数据块是否有多个;若是,则为所述工作线程分配与所述待顺序读的数据块的数量相同的双缓冲区。8.根据权利要求7所述的方法,其特征在于,所述双缓冲区包括当前缓冲区和预读缓冲区;对于所述工作线程中的每一个双缓冲区,所述直接从外部存储器将对应的一个或多个待顺序读的数据块的数据异步预读到所述工作线程自身的双缓冲区的步骤包括:所述工作线程交替使用其当前缓冲区和预读缓冲区,直接从所述外部存储器中异步预读所述对应的一个或多个待顺序读的数据块的数据,直至异步预读完所述对应的一个或多个待顺序读的数据块中的所有数据。9.根据权利要求1至8任一项所述的方法,其特征在于,每个所述双缓冲区的大小固定。10.根据权利要求9所述的方法,其特征在于,每个所述双缓冲区的大小为1M或2M。11.根据权利要求2所述的方法,其特征在于,所述直接从外部存储器将对应的所述一个或多个待顺序读的数据块的数据异步预读到所述工作线程自身的双缓冲区的步骤包括:所述工作线程使用DIRECTIO方式直接从外部存储器将对应的一个或多个待顺序读的数据块的数据异步预读到自身的双缓冲区。12.根据权利要求1所述的方法,其特征在于,所述工作线程的单独的上下文通过以下方式创建:在所述工作线程创建时或所述工作线程首次读取数据时,使用Libaio为所述工作线程创建一个单独的上下文io_context。13.根据权利要求8所述的方法,其特征在于,在所述工作线程调用第一接口函数监控其自身缓冲区异步预读数据状态的步骤之后,还包括:所述工作线程根据所述异步预读数据的状态确定待处理的数据,并从自身的双缓冲区获取确定的所述数据进行处理。14.根据权利要求13所述的方法,其特征在于,所述当前缓冲区的状态包括空闲状态、等待状态和准备状态,所述当前缓冲区的空闲状态用于指示所述当前缓冲区当前空闲,所述当前缓冲区的等待状态用于指示等待异步读取数据到所述当前缓冲区,所述当前缓冲区的准备状态用于指示所...

【专利技术属性】
技术研发人员:庄明强
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1