基于内存对象缓存系统的数据预读方法与流程

文档序号:12667547阅读:来源:国知局

技术特征:

1.一种基于内存对象缓存系统的数据预读方法,其特征在于,所述的预读方法为:

当后端数据库第一次返回用户所需数据发出的访问请求时,提取本次数据访问的数据特性,并根据所述数据特性提取相关联的关联性数据,所述的关联性数据随用户所需数据一次性地返回至前端内存对象缓存系统。

2.根据权利要求1所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述的关联性数据添加到缓存系统的有效时间为6个小时,如果在6个小时之内该数据未被访问,内存对象缓存系统自动销毁该数据占用的内存并释放相应的空间。

3.根据权利要求1所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述的预读方法实现包括以下步骤:

S1,当用户发出数据请求后,系统首先判断用户请求的数据是否在内存对象缓存系统中,如果在内存对象缓存系统中命中,系统直接从内存对象缓存系统中将数据返回给用户并结束此次访问;

S2,如果请求的数据未在内存对象缓存系统中命中,监控系统会根据当前系统性能判断是否开启预读功能,如果当前系统性能不佳,监控系统关闭预读功能,并直接访问后台数据库,将用户请求的数据添加到内存对象缓存系统后返回用户请求的数据提供给用户;

S3,如果当前系统性能好,开启预读功能,此时,系统根据当前系统运行的状态、缓存命中率以及用户请求的数据量的大小来确定预读窗口的大小,随后系统从数据库中获取用户请求的数据并将其添加到待缓存队列中,接下来,系统会判断加入到队列中的数据量是否小于预读窗口的大小;

S31,如果队列中的数据小于当前系统的预读窗口大小,系统会判断当前待缓存队列中的最新数据是否在数据库中与其他表中数据存在关联,如果存在关联关系,那么系统将会把相关联的数据加入到待缓存队列中,直至队列中的数据大于预读窗口的大小或者队列中的数据已经再无相关联的数据,一旦队列中的数据大于预读窗口的大小,则跳转到S32,如果队列中的数据已经不存在关联关系,但是依然小于预读窗口的大小,那么系统就会从队列中获取最新数据所在表中的最新N条记录并添加到待缓存队列中,如果最新的N条数据在待缓存队列中已经存在,则继续获取次新的记录添加到待缓存队列中;

S32如果待缓存队列中数据已经大于预读窗口的大小,那么系统直接将待缓存队列中的数据添加到缓存中并返回用户请求的数据。

4.根据权利要求3所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述当前系统性能判断包括对系统进行分级,可分为不繁忙状态L1、一般繁忙状态L2及繁忙状态L3三级。

5.根据权利要求4所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述的不繁忙状态L1可定义为CPU处于用户模式下的时间百分比和系统模式下的时间百分比之和小于百分之七十,内存使用处于空闲内存占系统总内存的百分比小于等于百分之六十,I/O使用处于每秒进行读写操作的次数相对最大读写次数的百分比小于等于百分之六十,当前网络的使用处于使用的带宽占总带宽的百分比小于等于百分之六十,宽带延迟小于50ms;所述的繁忙状态L3定义为CPU处于用户模式下的时间百分比和系统模式下的时间百分比之和不小于百分之八十五,内存使用处于空闲内存占系统总内存的百分比不小于百分之八十,I/O使用处于每秒进行读写操作的次数相对最大读写次数的百分比大于等于百分之八十,当前网络的使用处于使用的带宽占总带宽的百分比不小于百分之八十,宽带延迟大于100ms;处于不繁忙状态L1和繁忙状态L3之间的定义为一般繁忙状态L2。

6.根据权利要求4所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述的预读窗口大小由以下条件判断:

系统在不繁忙状态下L1:缓存命中率较低时:R1=R0*4*2;缓存命中率较高时:R1=R0*4;

系统在一般繁忙状态下L2:缓存命中率较低时:R1=R0*2*2;缓存命中率较高时:R1=R0*2;

系统在繁忙状态下L3:关闭数据预读功能,清理不必要的进程,释放内存空间;

其中定义预读窗口的基本单位为数据表中的一条记录,记为R,记路用户请求的数据对应的数据量为R0。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1