CN106844740B - 基于内存对象缓存系统的数据预读方法 - Google Patents

基于内存对象缓存系统的数据预读方法 Download PDF

Info

Publication number
CN106844740B
CN106844740B CN201710077397.8A CN201710077397A CN106844740B CN 106844740 B CN106844740 B CN 106844740B CN 201710077397 A CN201710077397 A CN 201710077397A CN 106844740 B CN106844740 B CN 106844740B
Authority
CN
China
Prior art keywords
data
user
queue
memory object
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710077397.8A
Other languages
English (en)
Other versions
CN106844740A (zh
Inventor
李丁丁
刘继伟
李建国
汤庸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China Normal University
Original Assignee
South China Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by South China Normal University filed Critical South China Normal University
Priority to CN201710077397.8A priority Critical patent/CN106844740B/zh
Publication of CN106844740A publication Critical patent/CN106844740A/zh
Application granted granted Critical
Publication of CN106844740B publication Critical patent/CN106844740B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于内存对象缓存系统的数据预读方法,所述的预读方法为当后端数据库第一次返回用户所需数据发出的访问请求时,提取本次数据访问的数据特性,并根据所述数据特性提取相关联的关联性数据,所述的关联性数据随用户所需数据一次性地返回至前端内存对象缓存系统。同时在预读中增加监控系统,通过在内存对象缓存系统中引入预读和监控系统,有效的提高了缓存的命中率以及系统的稳定性,充分的利用了系统的资源,减少了许多不必要的系统I/O以及其他系统资源的浪费,同时使得内存对象缓存系统体现的更加智能和实时,缓存的更新变得更加的主动。

Description

基于内存对象缓存系统的数据预读方法
技术领域
本发明涉及数据读取技术领域,尤其涉及一种基于内存对象缓存系统的数据预读方法。
背景技术
基于内存对象缓存系统,它们可以在传统数据库的垂直方向上,加入一特制的缓存结构,不仅可以改进底层数据库的用户请求和事务执行的响应时间,还能够简化其底层的数据库操作,例如:基于键值的数据访问方式。如此一来,可以在付出较小的系统代价下,使得底层数据库在应付海量数据涌入的同时,扩展性得以大幅度提高,具体表现在:缓解了传统外存设备所带来的性能瓶颈,还能够同时在CPU和存储两个方面带来得天独厚的扩展性优势,使其能够适应大数据的动态性变化,较大的减少了不必要的系统I/O。
目前,基于内存对象缓存系统在国内外大中型企业的数据中心内部得到了较大规模的部署和应用,例如:国内淘宝、京东的抢购系统、滴滴的实时叫车系统、国外的Facebook的图片缓存系统以及Twitter数百TB级的缓存系统等等。它们具体用到的内存对象缓存系统主要是开源的Memcached和Redis两种。
Memcached 是一个高性能的分布式的内存对象的缓存系统 ,通过在内存里维护一个统一的巨大的hash 表,能够存储各种格式的数据。一般使用场景是将其部署在一前端结点之上,通过网络与后端的数据库连接。当系统正常运转之后,每次接收到的用户查询(读方向),都会在该位于前端的内存对象缓存系统里寻找其想要的数据,以尽量减少后端数据库的访问次数,以提高外部的动态 Web 等应用之速度和其用户体验。
Redis 同 Memcached 一样,也是一个 C/S 结构的内存对象缓存系统实现,Redis在很多方面与 Memcached 具有相同的特征,不同的是 Redis 增加了持久化的功能,并支持更多的数据类型,和事务控制。在缓存方面的应用,Redis和Memcached基本类似。
以上两个系统中都是以被动的方式来填充其内存中的数据,也即根据计算机程序的空间局部性原理,当满足了某个用户请求的数据A之后,系统才将该数据保留至该缓存系统中,以便用于下一次访问的命中,从而避免之后的数据库自身的操作,达到节省开销和提升性能的效果。但是,为之付出的代价是第一次访问数据A的性能为次优,而且接下来大量的访问都是在重复这一过程:大量的数据访问请求需要穿透缓存到达数据库(缓存穿透),之后才将满足用户请求的数据保留到缓存中。在大数据高并发这样的系统中,这种次优的解决方案无疑被放大化,致使资源利用率不够充分,后端数据库的I/O过于频繁。同时,大量的网络I/O会产生许多的次网络I/O,极有可能引发缓存无底洞的问题(当缓存系统性能不佳时,通过增加节点,但是依然没有好转的现象),这会导致一次批量操作会涉及多次网络操作,也就意味着批量操作会随着实例的增多,耗时会不断增大。而且如果在某一时刻同时有大量的请求穿透了缓存,所有请求都去查数据库,在这一瞬间会导致数据库CPU和内存负载过高,甚至宕机(缓存雪崩现象)。
发明内容
有鉴于此,针对减少甚至避免缓存穿透以及缓存无底洞现象的发生,减少次优请求的发生等问题,提供一种基于主动工作方式的内存对象缓存系统数据预读方法,该方法可以提高内存对象缓存系统的性能,会根据用户的请求动态的筛选出用户下次最有可能访问的数据并返回到内存对象缓存系统中,并且根据系统资源的使用情况以及当前缓存的命中率来确定返回数据量的大小,从而达到极大化的利用系统资源。
一种基于内存对象缓存系统的数据预读方法,所述的预读方法为当后端数据库第一次返回用户所需数据发出的访问请求时,提取本次数据访问的数据特性,并根据所述数据特性提取相关联的关联性数据,所述的关联性数据随用户所需数据一次性地返回至前端内存对象缓存系统。
作为优选,为了节省空间,并对本发明提出的数据预测算法的部分预测错误预测进行弥补,所述的关联性数据添加到缓存系统的有效时间为6个小时,如果在6个小时之内该数据未被访问,内存对象缓存系统自动销毁该数据占用的内存并释放相应的空间。
所述的预读方法实现包括以下步骤:
S1,当用户发出数据请求后,系统首先判断用户请求的数据是否在内存对象缓存系统中,如果在内存对象缓存系统中命中,系统直接从内存对象缓存系统中将数据返回给用户并结束此次访问;
S2,如果请求的数据未在内存对象缓存系统中命中,监控系统会根据当前系统性能判断是否开启预读功能,如果当前系统性能不佳,监控系统关闭预读功能,并直接访问后台数据库,将用户请求的数据添加到内存对象缓存系统后返回用户请求的数据提供给用户;
S3,如果当前系统性能好,开启预读功能,此时,系统根据当前系统运行的状态、缓存命中率以及用户请求的数据量的大小来确定预读窗口的大小,随后系统从数据库中获取用户请求的数据并将其添加到待缓存队列中,接下来,系统会判断加入到队列中的数据量是否小于预读窗口的大小;
S31,如果队列中的数据小于当前系统的预读窗口大小,系统会判断当前待缓存队列中的最新数据是否在数据库中与其他表中数据存在关联,如果存在关联关系,那么系统将会把相关联的数据加入到待缓存队列中,直至队列中的数据大于预读窗口的大小或者队列中的数据已经再无相关联的数据,一旦队列中的数据大于预读窗口的大小,则跳转到S32,如果队列中的数据已经不存在关联关系,但是依然小于预读窗口的大小,那么系统就会从队列中获取最新数据所在表中的最新N条记录并添加到待缓存队列中,如果最新的N条数据在待缓存队列中已经存在,则继续获取次新的记录添加到待缓存队列中;
S32如果待缓存队列中数据已经大于预读窗口的大小,那么系统直接将待缓存队列中的数据添加到缓存中并返回用户请求的数据。
其中,所述当前系统性能判断包括对系统进行分级,可分为不繁忙状态L1、一般繁忙状态L2及繁忙状态L3三级。
所述的不繁忙状态L1可定义为CPU处于用户模式下的时间百分比和系统模式下的时间百分比之和小于百分之七十,内存使用处于空闲内存占系统总内存的百分比小于等于百分之六十,I/O使用处于每秒进行读写操作的次数相对最大读写次数的百分比小于等于百分之六十,当前网络的使用处于使用的带宽占总带宽的百分比小于等于百分之六十,宽带延迟小于50ms。
所述的繁忙状态L3定义为CPU处于用户模式下的时间百分比和系统模式下的时间百分比之和不小于百分之八十五,内存使用处于空闲内存占系统总内存的百分比不小于百分之八十,I/O使用处于每秒进行读写操作的次数相对最大读写次数的百分比大于等于百分之八十,当前网络的使用处于使用的带宽占总带宽的百分比不小于百分之八十,宽带延迟大于100ms。
处于不繁忙状态L1和繁忙状态L3之间的定义为一般繁忙状态L2。
其中,所述的预读窗口大小由以下条件判断:
系统在不繁忙状态下L1: 缓存命中率较低时:R1=R0*4*2;缓存命中率较高时:R1=R0*4;
系统在一般繁忙状态下L2:缓存命中率较低时:R1=R0*2*2;缓存命中率较高时:R1=R0*2;
系统在繁忙状态下L3:关闭数据预读功能,清理不必要的进程,释放内存空间;
其中定义预读窗口的基本单位为数据表中的一条记录,记为R,记路用户请求的数据对应的数据量为R0。
有益效果:通过在内存对象缓存系统中引入预读和监控系统,有效的提高了缓存的命中率以及系统的稳定性,充分的利用了系统的资源,减少了许多不必要的系统I/O以及其他系统资源的浪费,同时使得内存对象缓存系统体现的更加智能和实时,缓存的更新变得更加的主动。
附图说明
图1 基于内存对象缓存系统的数据预读方法技术路线流程图;
图2基于内存对象缓存系统的数据预读方法中预读功能的实现。
具体实施方式
下面结合附图,对本发明的一种基于内存对象缓存系统的数据预读方法做详细说明。
一种基于内存对象缓存系统的数据预读方法,所述的预读方法为当后端数据库第一次返回用户所需数据发出的访问请求时,提取本次数据访问的数据特性,并根据所述数据特性提取相关联的关联性数据,所述的关联性数据随用户所需数据一次性地返回至前端内存对象缓存系统。更具体的来说,当后端数据库返回用户第一次对A数据发出的访问请求时,通过洞悉本次数据访问的数据特性,将此次未被访问的其他数据关联起来(此处标记为B),B并随着A一次性地返回至前端内存对象缓存系统。之后,当用户第一次提出访问B数据时,可以直接在内存对象缓存系统中找到数据B,而无需经历在后端寻找数据的过程,以提高该数据库系统的性能。换句话说,在系统开销可以接受的情况下,为基于内存对象的缓存系统量身定做一种预读(Read-ahead)算法,并且将其应用至现在的缓存系统运行环境中,以提升整个数据库系统(“整个”指的是前端加后端)的吞吐能力。
如图1所示,当用户首次访问数据库中某一数据时,通过预读算法,将此次未被访问的其他数据关联起来,并随着被访问的数据一次性地返回至数据库。之后,当用户第一次访问到预读到数据库中的数据时,可以直接在缓存中命中,无需经历在后台寻找数据的过程。以此提高缓存的性能并减少非必要I/O;另一方面,需要对数据库进行动态的预读,通过这种策略来决定将哪些数据,多大的数据量加入到缓存中可以使得内存对象缓存系统达到较好的状态。
当user1访问系统,发出请求A时,由于请求的数据不在内存对象缓存系统中,所以该请求会穿过内存对象缓存系统。此时,性能监控系统检测到系统的性能极佳,所以该请求从数据库中获取了请求A所需要的数据A后,系统将对该数据进行分析,随后该请求将携带数据A与数据A相关联的B,C,D一起返回到内存对象缓存系统中,并将user1请求的数据A发送给用户。
当user2访问系统,发出请求B时,由于请求的数据B已经在内存对象缓存系统中,所以系统会直接从缓存中将数据返回给user2。当user3访问系统,发出请求E时,由于请求的数据不在缓存中,所以该请求会穿透内存对象缓存系统,想后台数据库索取数据。但是由于当前系统性能不佳,所以系统关闭了预读功能,只是将用户请求的数据E添加到缓存中并返回给user3;同时,监控系统会清理不必要的进程,释放内存空间,并去掉不必要的I/O操作来对系统进行优化。
当user4访问系统时,此时系统的性能依然很差,所以依然仅从数据库系统中获取请求的数据后,更新缓存并相应user4的请求。
从这些请求过程中可以看出,内存对象缓存系统因为有了预读和监控,变得更加智能,更加主动。预读和监控的加入,使得整个系统更加的稳定和灵活。
其中预读方法的实现:如图2所示,首先,当一个用户发出数据请求后,系统首先会判断用户请求的数据是否在缓存中,如果在缓存中命中,那么系统直接从内存对象缓存系统中将数据返回给用户并结束此次访问操作;
如果未在内存对象缓存系统中命中,那么此时监控系统会根据当前系统的CPU,内存的使用情况,以及当前发生的I/O情况来判断是否开启预读功能,如果当前系统性能不佳,则监控系统会关闭系统的预读功能,并直接访问后台数据库,将用户请求的数据添加到内存对象缓存系统后返回用户请求的数据给用户;
如果当前系统开启了预读功能,此时,系统会首先根据当前系统运行的状态,缓存命中率以及用户请求的数据量的大小来确定预读窗口的大小,然后,系统从数据库中获取用户请求的数据并将其添加到待缓存队列中,接下来,系统会判断加入到队列中的数据数据量是否小于预读窗口的大小,如果待缓存队列中数据已经大于预读窗口的大小,那么系统直接将待缓存队列中的数据添加到缓存中并返回用户请求的数据。
如果队列中的数据小于当前系统的预读窗口大小,则系统会判断当前待缓存队列中的最新数据是否在数据库中与其他表中数据存在关联,如果存在关联关系,那么系统将会把相关联的数据加入到待缓存队列中。接下来如果加入关联数据后的队列依然小于预读窗口的大小,系统会继续寻找相关联的数据,直至队列中的数据大于预读窗口的大小或者队列中的数据已经再无相关联的数据,一旦队列中的数据大于预读窗口的大小,系统就会将待缓存队列中的数据添加到内存对象缓存系统中,并返回用户需要的数据。如果队列中的数据已经不存在关联关系,但是依然小于预读窗口的大小,那么系统就会从队列中获取最新数据所在表中的最新N条记录并添加到待缓存队列中,如果最新的N条数据在待缓存队列中已经存在,则继续获取次新的记录添加到待缓存队列中。接下来,如此循环,直至待缓存队列中的数据大于预读窗口的大小。
在这里,充分地利用了数据之间的关联关系,尽可能的将和当前数据相关联的数据放入到缓存中。因为相关联的数据在下次被访问到的概率最大。
类似于微博和微信朋友圈,用户最新发布的消息,近期被查看或者修改的可能性最大,而且当前用户进行的某些操作,在接下来其他用户进行相同操作的可能性也极大,所以在本发明提出的数据预读算法中,充分利用了数据和用户操作的时间局部性原理(时间局部性:如果一个信息项正在被访问,那么在近期它很可能还会被再次访问),主动的获取用户请求的数据所对应的表中的最新数据添加到缓存中。
同时,新添加入到缓存的数据默认有效时间是6个小时,如果在6个小时之内该数据未被访问,内存对象缓存系统会自动销毁该数据占用的内存并释放相应的空间。这样做的目的是为了节省空间,并对数据预测算法的部分预测错误预测进行弥补。
在运行预读算法时,需要考虑前端结点和后端结点的网络负载情况。
在这里优先考虑内存对象缓存系统的缓存命中率和系统的运行状况,监控的目的是在当前系统运行状态下达到较大的缓存命中率,所以当用户请求穿透缓存时,需要马上确定系统CPU,内存,I/O,当前网络的使用情况,以及缓存命中率的大小,并根据这些数据以及用户发来的请求所对应的数据特征来确定当前预读窗口的大小;所以每次用户请求对应的预读窗口大小都是不同的。
经过多次的实验测试,本发明根据系统的使用情况定义了系统的三个性能级别:L1,L2,L3 如下所示:
Figure 474331DEST_PATH_IMAGE002
其中
user%:表示CPU处在用户模式下的时间百分比。
sys%:表示CPU处在系统模式下的时间百分比。
free%:表示空闲内存占系统总内存的百分比。
IOPS: 每秒进行读写(I/O)操作的次数,每个硬盘设备都有一个最大值。
IO%:当前每秒进行读写(I/O)操作的次数相对最大IOPS的百分比。
bandwidth%:指当前系统中使用的带宽占总带宽的百分比。
T :表示网络延迟程度。
定义预读窗口的基本单位为数据表中的一条记录,记为R。比如用户此次请求一共涉及到数据表中的10条记录,那么,用户此次请求的数据量为10R。并记用户请求的数据对应的数据量为R0。
在这里,本专利定义数据预读窗口大小如下:
当系统处于L1时,预读窗口大小为用户请求数据量的4倍;如果命中率较低(低于70%),预读窗口再扩大2倍,即此时的预读窗口大小为 R1 = R0 * 4 * 2;如果命中率较高(高于70%),那么此时预读窗口的大小为R1=R0*4;
当系统性能适中时,即系统处于L2状态下,预读窗口大小为用户请求数据量的2倍;如果命中率较低(低于70%),预读窗口再扩大2倍,即此时的预读窗口大小为 R1 = R0 *2* 2;如果命中率较高(高于70%),那么此时预读窗口的大小为R1=R0*2;
当系统性能极差时,即系统处于L3状态下,那么系统将关闭预读功能,直接返回用户请求的数据。
所以,预读窗口大小计算公式如下:
L1状态下:
缓存命中率较低时:R1=R0*4*2;
缓存命中率较高时:R1=R0*4;
L2状态下:
缓存命中率较低时:R1=R0*2*2;
缓存命中率较高时:R1=R0*2;
L3状态下:关闭数据预读功能。在L3状态下,监控系统会主动清理不必要的进程,释放内存空间,并去掉不必要的I/O操作来对系统进行优化,以及释放一些网络资源,从而达到可以再次开启预读功能的条件。
由此可见,被用来填充内存对象缓存系统的数据,与系统当前的运行状态,缓存命中率以及用户发出请求所对应的数据量的大小有着极大的关系,用来填充内存对象缓存系统的数据具有极大的动态特性。
基于内存对象的缓存系统的数据预读方法,适用于传统数据库和内存数据库系统的结合场景,而且重点在于引入了数据预读算法后,如何在保持系统较高性能的情况下在内存对象缓存系统达到较高的缓存命中率。本发明的实现方法可以充分的应用于实际系统中,具有较好的前景和实用性。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (4)

1.一种基于内存对象缓存系统的数据预读方法,其特征在于,所述的预读方法为:当后端数据库第一次返回用户所需数据发出的访问请求时,提取本次数据访问的数据特性,并根据所述数据特性提取相关联的关联性数据,所述的关联性数据随用户所需数据一次性地返回至前端内存对象缓存系统;所述的关联性数据添加到缓存系统的有效时间为6个小时,如果在6个小时之内该数据未被访问,内存对象缓存系统自动销毁该数据占用的内存并释放相应的空间;所述的预读方法实现包括以下步骤:
S1,当用户发出数据请求后,系统首先判断用户请求的数据是否在内存对象缓存系统中,如果在内存对象缓存系统中命中,系统直接从内存对象缓存系统中将数据返回给用户并结束此次访问;
S2,如果请求的数据未在内存对象缓存系统中命中,监控系统会根据当前系统性能判断是否开启预读功能,如果当前系统性能不佳,监控系统关闭预读功能,并直接访问后台数据库,将用户请求的数据添加到内存对象缓存系统后返回用户请求的数据提供给用户;
S3,如果当前系统性能好,开启预读功能,此时,系统根据当前系统运行的状态、缓存命中率以及用户请求的数据量的大小来确定预读窗口的大小,随后系统从数据库中获取用户请求的数据并将其添加到待缓存队列中,接下来,系统会判断加入到队列中的数据量是否小于预读窗口的大小;
S31,如果队列中的数据小于当前系统的预读窗口大小,系统会判断当前待缓存队列中的最新数据是否在数据库中与其他表中数据存在关联,如果存在关联关系,那么系统将会把相关联的数据加入到待缓存队列中,直至队列中的数据大于预读窗口的大小或者队列中的数据已经再无相关联的数据,一旦队列中的数据大于预读窗口的大小,则跳转到S32,如果队列中的数据已经不存在关联关系,但是依然小于预读窗口的大小,那么系统就会从队列中获取最新数据所在表中的最新N条记录并添加到待缓存队列中,如果最新的N条数据在待缓存队列中已经存在,则继续获取次新的记录添加到待缓存队列中;
S32,如果待缓存队列中数据已经大于预读窗口的大小,那么系统直接将待缓存队列中的数据添加到缓存中并返回用户请求的数据。
2.根据权利要求1所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述当前系统性能判断包括对系统进行分级,可分为不繁忙状态L1、一般繁忙状态L2及繁忙状态L3三级。
3.根据权利要求2所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述的不繁忙状态L1可定义为CPU处于用户模式下的时间百分比和系统模式下的时间百分比之和小于百分之七十,内存使用处于空闲内存占系统总内存的百分比小于等于百分之六十,I/O使用处于每秒进行读写操作的次数相对最大读写次数的百分比小于等于百分之六十,当前网络的使用处于使用的带宽占总带宽的百分比小于等于百分之六十,宽带延迟小于50ms;所述的繁忙状态L3定义为CPU处于用户模式下的时间百分比和系统模式下的时间百分比之和不小于百分之八十五,内存使用处于空闲内存占系统总内存的百分比不小于百分之八十,I/O使用处于每秒进行读写操作的次数相对最大读写次数的百分比大于等于百分之八十,当前网络的使用处于使用的带宽占总带宽的百分比不小于百分之八十,宽带延迟大于100ms;处于不繁忙状态L1和繁忙状态L3之间的定义为一般繁忙状态L2。
4.根据权利要求2所述的基于内存对象缓存系统的数据预读方法,其特征在于,所述的预读窗口大小由以下条件判断:系统在不繁忙状态下L1:缓存命中率较低时:R1=R0*4*2;缓存命中率较高时:R1=R0*4;系统在一般繁忙状态下L2:缓存命中率较低时:R1=R0*2*2;缓存命中率较高时:R1=R0*2;系统在繁忙状态下L3:关闭数据预读功能,清理不必要的进程,释放内存空间;其中定义预读窗口的基本单位为数据表中的一条记录,记为R,记路用户请求的数据对应的数据量为R0。
CN201710077397.8A 2017-02-14 2017-02-14 基于内存对象缓存系统的数据预读方法 Active CN106844740B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710077397.8A CN106844740B (zh) 2017-02-14 2017-02-14 基于内存对象缓存系统的数据预读方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710077397.8A CN106844740B (zh) 2017-02-14 2017-02-14 基于内存对象缓存系统的数据预读方法

Publications (2)

Publication Number Publication Date
CN106844740A CN106844740A (zh) 2017-06-13
CN106844740B true CN106844740B (zh) 2020-12-29

Family

ID=59128199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710077397.8A Active CN106844740B (zh) 2017-02-14 2017-02-14 基于内存对象缓存系统的数据预读方法

Country Status (1)

Country Link
CN (1) CN106844740B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329908A (zh) * 2017-07-07 2017-11-07 联想(北京)有限公司 一种数据处理方法和电子设备
CN107277159B (zh) * 2017-07-10 2020-05-08 东南大学 一种基于机器学习的超密集网络小站缓存方法
CN110324366B (zh) * 2018-03-28 2022-07-29 阿里巴巴集团控股有限公司 数据处理方法、装置及系统
TW202014898A (zh) 2018-10-04 2020-04-16 宏碁股份有限公司 電腦系統、其遊戲載入方法及電腦程式產品
CN111104528B (zh) * 2018-10-29 2023-05-16 浙江宇视科技有限公司 图片获取方法、装置及客户端
CN110673786B (zh) 2019-09-03 2020-11-10 浪潮电子信息产业股份有限公司 数据缓存的方法和装置
CN111258967A (zh) * 2020-02-11 2020-06-09 西安奥卡云数据科技有限公司 文件系统中数据读取方法、装置及计算机可读存储介质
CN111399784B (zh) * 2020-06-03 2020-10-16 广东睿江云计算股份有限公司 一种分布式存储的预读写方法及装置
CN111782391A (zh) * 2020-06-29 2020-10-16 北京达佳互联信息技术有限公司 资源分配方法、装置、电子设备和存储介质
CN115827508B (zh) * 2023-01-09 2023-05-09 苏州浪潮智能科技有限公司 一种数据处理方法、系统、设备以及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508638B (zh) * 2011-09-27 2014-09-17 华为技术有限公司 用于非一致性内存访问的数据预取方法和装置
KR20130047431A (ko) * 2011-10-31 2013-05-08 에스케이씨앤씨 주식회사 대용량 배치처리를 위한 메모리 선적재 및 병렬처리 방법
CN103902260B (zh) * 2012-12-25 2016-08-31 华中科技大学 一种对象文件系统的预取方法
CN103257935B (zh) * 2013-04-19 2016-07-13 华中科技大学 一种缓存管理方法及其应用
CN103399856B (zh) * 2013-07-01 2017-09-15 北京科东电力控制系统有限责任公司 面向scada系统的爆发式数据缓存处理系统及其方法
CN103729471B (zh) * 2014-01-21 2017-03-08 华为软件技术有限公司 数据库查询方法和装置
CN104657143A (zh) * 2015-02-12 2015-05-27 中復保有限公司 高性能数据缓存方法
CN104715048B (zh) * 2015-03-26 2018-06-05 浪潮集团有限公司 一种文件系统缓存预读取方法
CN104731974A (zh) * 2015-04-13 2015-06-24 上海新炬网络信息技术有限公司 基于大数据流式计算的动态页面加载方法
CN104881467B (zh) * 2015-05-26 2018-08-31 上海交通大学 基于频繁项集的数据关联性分析和预读取方法
CN105279240B (zh) * 2015-09-28 2018-07-13 暨南大学 客户端起源信息关联感知的元数据预取方法及系统

Also Published As

Publication number Publication date
CN106844740A (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
CN106844740B (zh) 基于内存对象缓存系统的数据预读方法
US10133679B2 (en) Read cache management method and apparatus based on solid state drive
CN105872040B (zh) 一种利用网关节点缓存优化分布式块存储写性能的方法
US10430338B2 (en) Selectively reading data from cache and primary storage based on whether cache is overloaded
KR101023883B1 (ko) 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템
US20170371807A1 (en) Cache data determining method and apparatus
US9372810B2 (en) Collaborative caching
CN107888687B (zh) 一种基于分布式存储系统的代理客户端存储加速方法及系统
US11093410B2 (en) Cache management method, storage system and computer program product
KR20140097924A (ko) 우선 순위를 가지는 이중 캐싱 방법 및 이를 위한 장치
CN109165096B (zh) web集群的缓存利用系统及方法
CN109002503A (zh) 一种元数据读取方法、装置、设备及可读存储介质
US9996470B2 (en) Workload management in a global recycle queue infrastructure
CN104158863A (zh) 基于事务级别全程高速缓冲的云存储机制
US7376792B2 (en) Variable cache data retention system
CN111752905B (zh) 一种基于对象存储的大文件分布式缓存系统
CN113672169A (zh) 流处理系统的数据读写方法和流处理系统
CN106021414B (zh) 一种访问多级缓存参数信息的方法及系统
JP2013156766A (ja) 情報処理装置、メモリ管理方法およびメモリ管理プログラム
KR20170107061A (ko) 멀티 코어 시스템에서 데이터 방문자 디렉토리에 액세스하는 방법 및 장치
CN114116634B (zh) 一种缓存方法、装置及可读存储介质
CN111488370B (zh) 列表分页快速响应系统和方法
CN113672652A (zh) 一种数据访问方法、装置、设备及存储介质
CN112650694B (zh) 一种数据读取方法、装置、缓存代理服务器及存储介质
CN113297106A (zh) 基于混合存储的数据置换方法、相关方法及装置和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant