CN114356581A - 一种内存的清理方法及相关设备 - Google Patents
一种内存的清理方法及相关设备 Download PDFInfo
- Publication number
- CN114356581A CN114356581A CN202210031783.4A CN202210031783A CN114356581A CN 114356581 A CN114356581 A CN 114356581A CN 202210031783 A CN202210031783 A CN 202210031783A CN 114356581 A CN114356581 A CN 114356581A
- Authority
- CN
- China
- Prior art keywords
- cleaning
- data
- memory
- cleaned
- target table
- 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.)
- Pending
Links
Images
Abstract
本申请实施例公开了一种内存的清理方法及相关设备,包括:获取数据库的内存占用率和数据库存储的各个表的生存时长;若确定内存占用率在预设区间内,则根据内存占用率和数据库存储的各个表的生存时长确定待清理表,根据内存占用率、待清理表的个数确定清理时长;获取各个待清理表的标识,向预设终端设备发送携带各个待清理表的标识的提示信息;接收针对提示信息的携带目标表集合中各个目标表的标识的清理指令;响应于清理指令,按照预设清理周期对目标表集合中各个目标表的数据执行持续时长为清理时长的清理操作。采用本申请实施例,可以筛选出已经过期的表进行清理,释放无用内存。本申请涉及区块链技术,上述表可存储于区块链中。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及一种内存的清理方法及相关设备。
背景技术
随着信息技术的发展,互联网的数据海量的增长,缓存技术是提高企业内系统的并发量和吞吐量,所谓缓存是指当需要读取某一个数据时,先从缓存的数据中查找,缓存的数据读取速度较快,若找到则进行处理,若未找到,才从读取速率较慢的内存中读取并处理。其中,基于远程字典服务(Remote Dictionary Server,Redis)的数据库由于其支持的数据类型丰富、支持数据类型丰富且支持数据的持久化的特征被广泛作为缓存和高性能存储方案。而Redis是一个键-值(key-value)存储系统。其作为一个高性能的非关系型结构化语言(Not Only Structured Query Language,NoSQL)数据库,容量受到最大存储的内存限制。
目前,主要通过两种方式来清理内存:一种方式是通过读/写到已经过期的key时,直接删除掉这个key,从而进行清理。另一种方式是周期性的对所有的key进行检查,删除检查出已经过期的key。这两种方式清理速度较慢,在Redis中仍会存在大量的过期key没有被及时的清理,占用内存,从而影响系统的并发量和吞吐量。
发明内容
本申请实施例提供一种内存的清理方法及相关设备,一方面,通过获取的内存占用率和各个表的生存时长确定数据库中的待清理表的方式,无需手动进行配置,自动筛选出已经过期的表,减少手动清理的额外操作及开发工作。另一方面,将筛选出的表发送至业务人员处确认,业务人员确认之后,对业务人员确认清理的表进行清理,防止表被误清理,从而释放的无用内存。又一方面,通过确定清理时长,并每次执行清理操作的持续时长为清理时长,可以利用较小的资源对内存进行清理,对数据库的运行无任何影响。
第一方面,本申请实施例提供了一种内存的清理方法,包括:
获取数据库的内存占用率和上述数据库存储的各个表的生存时长;
在确定上述内存占用率在预设内存占用率区间内的情况下,根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,并根据上述内存占用率、上述待清理表的个数确定清理时长;
获取各个待清理表中各个表的标识,并向预设终端设备发送提示信息,上述提示信息携带上述各个待清理表的标识;
接收针对上述提示信息发送的清理指令,上述清理指令携带目标表集合中各个目标表的标识,上述目标表集合包括上述各个待清理表中部分或全部表;
响应于上述清理指令,按照预设清理周期对上述各个目标表的数据执行清理操作,上述清理操作的持续时长为上述清理时长。
进一步地,上述根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,包括:
在确定上述内存占用率处于第一预设内存占用率区间内的情况下,确定上述数据库中生存时长小于或等于第一预设值的第一表,得到第一表集合;
按照上述第一表集合中各个第一表的写入时间按照从早到晚的顺序对上述各个第一表进行排序,得到第一排序结果,并将上述第一排序结果中排在前M位的第一表确定为上述待清理表,上述M为正整数;
在确定上述内存占用率处于第二预设内存占用率区间内的情况下,获取上述数据库存储的中各个表的参考读取时刻,上述数据库存储的各个表的参考读取时刻为上述数据库存储的各个表的最后一次读取时刻;
按照上述数据库存储的各个表的参考读取时刻按照从早到晚的顺序对上述数据库存储的各个表进行排序,得到第二排序结果,并将上述排序结果中排在前N位的表确定为上述待清理表,上述N为正整数。
进一步地,上述根据上述内存占用率、上述待清理表的个数确定清理时长,包括:
根据内存占用率区间和权重的对应关系确定第三预设内存占用率区间对应的第一权重,上述第三预设内存占用率区间为上述内存占用率所处于的内存占用率区间;
根据上述个数区间与权重的对应关系确定参考个数区间对应的第二权重,上述参考个数区间为上述待清理表的个数所在的个数区间;
获取参考清理时长和参考增量时长,根据上述第一权重、上述第二权重和上述参考增量时长确定增量时长,并根据上述增量时长和上述参考清理时长确定上述清理时长;
其中,上述增量时长为上述第一权重、上述第二权重和上述参考增量时长的积,上述清理时长为上述参考清理时长和上述增量时长的和。
进一步地,上述数据库存储的各个表中包括至少一条数据;上述按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作,包括:
获取上述清理时长内的参考清理数据,上述参考清理数据为在上述清理时长内的清理数据的条数;
确定上述各个目标表的数据条数,以及确定第一目标表中各条数据的参考读取时刻,按照上述各条数据的参考读取时刻按照从早到晚的顺序对上述各条数据进行排序,得到第三排序结果,上述各条数据的参考读取时刻为上述各条数据的最后一次读取时刻,上述第一目标表为上述目标表集合中的任一目标表;
根据上述参考清理数据、上述各个目标表的数据条数以及上述第三排序结果,确定上述第一目标表的待清理数据;
对上述目标表集合中各个第一目标表的待清理数据进行删除处理。
进一步地,上述根据上述参考清理数据、上述各个目标表的数据条数以及上述第三排序结果,确定上述第一目标表的待清理数据,包括:
根据上述各个目标表的数据条数之比确定上述各个目标表的清理比例,上述各个目标表的清理比例中包括上述第一目标表的清理比例,上述各个目标表的清理比例之和为1;
根据上述第一目标表的清理比例和上述参考清理数据,确定上述第一目标表的待清理数目,上述待清理数目为上述第一目标表的清理比例与上述参考清理数据之积;
将上述第三排序结果中排在前I位的数据确定为上述第一目标表的待清理数据,上述I的值为上述待清理数目,上述I为正整数。
进一步地,上述获取数据库的内存占用率和上述数据库存储的各个表的生存时长之前,上述方法还包括:
确定上述数据库的第一内存大小,以及确定在预设时间段内写入数据的第二内存大小,根据上述第一内存大小和上述第二内存大小确定在上述预设时间段内的增量内存占用率;
在确定上述增量内存占用率大于预设内存占用率阈值的情况下,触发执行获取数据库的内存占用率和上述数据库存储的各个表的生存时长的步骤。
进一步地,上述按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作之后,上述方法还包括:
获取上述第一目标表的清理信息,上述清理信息包括上述第一目标表的标识、上述第一目标表的待清理数据所占用的内存大小、执行上述清理操作的时间信息、上述第一目标表的数据类型以及执行上述清理操作的操作命令;
根据上述目标表集合中各个第一目标表的清理信息生成清理信息表,并将上述清理信息表添加在操作日志中;
向上述预设终端设备发送清理信息,上述清理信息包括上述清理信息表。
第二方面,本申请实施例提供了一种内存的清理装置,包括:
获取单元,用于获取数据库的内存占用率和上述数据库存储的各个表的生存时长;
确定单元,用于在确定上述内存占用率在预设内存占用率区间内的情况下,根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,并根据上述内存占用率、上述待清理表的个数确定清理时长;
上述获取单元,用于获取各个待清理表中各个表的标识,并向预设终端设备发送提示信息,上述提示信息携带上述各个待清理表的标识;
接收单元,用于接收针对上述提示信息发送的清理指令,上述清理指令携带目标表集合中各个目标表的标识,上述目标表集合包括上述各个待清理表中部分或全部表;
清理单元,用于响应于上述清理指令,按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作,上述清理操作的持续时长为上述清理时长。
另外,该方面中,该内存的清理装置其他可选的实施方式可参阅上述第一方面的相关内容,此处不再详述。
第三方面,本申请实施例提供一种计算机设备,该计算机设备包括存储器和处理器、收发器;上述处理器分别与上述存储器和上述收发器相连,其中,上述存储器存储有计算机程序代码,上述处理器和上述收发器用于调用上述程序代码,执行上述第一方面和/或第一方面任一种可能的实现方式提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序被计算机设备运行时,实现如第一方面的任一种可能的实现方式所公开的内存的清理方法。
第五方面,本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述内存的清理方法。
本申请实施例中,在确定内存占用率在预设内存占用率区间内的情况下,通过获取的内存占用率和各个表的生存时长确定数据库中的待清理表的方式,无需人为手动进行配置,可以自动筛选出需要清理的表,减少手动清理的额外操作及开发工作。并且,通过将获取到的各个表的标识发送至预设终端设备,并接收预设终端设备的清理指令,该清理指令用于指示清理的表。将筛选出的表发送至业务人员处确认,业务人员确认之后,对业务人员确认清理的表进行清理,防止表被误清理,从而释放的无用内存。再者,通过内存占用率、待清理表的个数确定清理时长,进而按照预设清理周期对目标表集合中各个表的数据执行清理操作,清理操作的持续时长为清理时长,可以利用较小的资源对内存进行清理,对数据库的运行无任何影响,保证了系统的并发量和吞吐量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种内存的清理系统的结构示意图;
图2是本申请实施例提供的一种内存的清理方法的流程示意图;
图3是本申请实施例提供的一种内存的清理方法的另一流程示意图;
图4是本申请实施例提供的一种内存的清理装置的结构示意图;
图5是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面结合附图1-附图3对本申请实施例提供的一种内存的清理方法进行示意性说明。
本申请实施例提供了一种内存的清理方法可以应用于一种内存清理平台中,该内存清理平台可以承载于内存的清理系统或者应用程序中。在某些实施例中,上述内存清理平台可以指在确定数据库的内存占用率在预设内存占用率区间的情况下,获取数据库中待清理的数据,进而进行内存清理的功能的平台。该内存清理平台可以获取该数据库中待清理的表,并向预设终端设备发送提示信息,提示信息包括待清理的表的标识,通过预设终端设备针对该提示信息发送的清理指令,该清理指令指示该内存的清理平台需要清理的表,进而,内存的清理平台可以进一步对该清理指令所指示的待清理表进行清理。需要说明的是,待清理表可以是一张表,也可以是多张表,待清理表可以理解为在数据库中,部分表被打上了待清理的标签,即该标签用于指示该表即将被清理。在某些实施例中,该内存清理平台可以与预设终端设备建立通信连接。在某些实施例中,上述通信连接的方式可以包括但不限于无线通信技术(Wireless Fidelity,WIFI)、蓝牙、近场通信(Near FieldCommunication,NFC)等。
具体的,该内存清理平台可以获取数据库的内存占用率和数据库存储的各个表的生存时长,该各个表的生存时长是指各个表的有效期限,内存清理平台在确定内存占用率在预设内存占用率区间内的情况下,根据内存占用率和数据库存储的各个表的生存时长确定数据库中的待清理表,并根据内存占用率和待清理表的个数确定清理时长。进一步地,内存清理平台获取各个待清理表的标识,并向预设终端设备发送提示信息,该提示信息携带各个待清理表的标识;进而,内存清理平台可以接收针对该提示信息发送的清理指令,该清理指令携带由待清理表中部分或全部表组成的目标表集合中各个目标表的标识,响应于清理指令,按照预设清理周期对目标表集合中各个目标表的数据执行清理操作,该清理操作的持续时长为清理时长。
一方面,通过在确定内存占用率在预设内存占用率区间内的情况下,根据各个表的生存时长确定数据库中的待清理表,无需人为手动进行配置,可以自动筛选出需要清理的表,减少手动清理的额外操作及开发工作。另一方面,通过向预设终端设备发送待清理表的标识,并接收携带目标表集合的清理指令,即可以将筛选出的表发送至业务人员处确认,业务人员确认之后,对业务人员确认清理的表进行清理,防止表被误清理,从而释放的无用内存。又一方面,通过内存占用率、待清理表的个数确定清理时长,进而按照预设清理周期对目标表集合中各个表的数据执行该清理时长的清理操作。可以利用较小的资源对内存进行清理,对数据库的运行无任何影响,保证了系统的并发量和吞吐量。
基于上述描述,下面结合图1对本申请实施例提供的一种内存的清理系统进行示意图说明。
请参阅图1,图1是本申请实施例提供的一种内存的清理系统的结构示意图,如图1所示,上述内存的清理系统包括一个内存清理平台101以及一个终端设备102,该终端设备102可以是上述预设终端设备。该内存清理平台101可以与终端设备102通过有线或无线的方式进行直接或间接的连接。该内存清理平台101可以是Redis集群中的节点设备,可以对数据库中的表进行删除处理。需要说明的是,图1所示的设备数量和形态仅用于举例,并不构成对本申请实施例的限定,实际应用中该内存的清理系统还可以包括一个以上终端设备、一个以上内存清理平台。本申请以一个内存清理平台101以及一个终端设备102为例进行IE。
其中,该内存清理平台101可以在数据库的内存占用率达到预设内存占用率区间内的情况下,获取数据库存储的各个表的生存时长,并可以根据生存时长确定待清理表,进而,在确定待清理表后,可以根据内存占用率和待清理表的个数确定清理时长,该清理时长为周期性进行清理处理的清理时长。进而该内存清理平台可以向预设终端设备发送确认清理上述筛选出的待清理表的提示信息,在接收到预设终端设备102发送的清理指令后,对该预设终端设备102确认后的待清理表进行清理处理,从而降低数据库的内存占用率,其中,该数据库可以为缓存数据库,从而能够保证系统的并发量和吞吐量。可选地,该数据库的管理人员可以通过该预设终端设备102在该内存清理平台101注册账号,通过注册的账号查看该数据库的内存占用率以及清理情况。
具体的,内存清理平台101可以获取数据库的内存占用率以及数据库存储的各个表的生存时长,在确定该内存占用率在预设内存占用率区间内的情况下,根据内存占用率以及数据库存储的各个表的生存时长确定数据库中的待清理表,并根据该内存占用率以及待清理表的个数确定清理时长。进一步地,该内存清理平台101可以获取各个待清理表的标识,并向预设终端设备102发送携带各个待清理表的标识的提示信息。进而,该内存清理平台101接收到预设终端设备102针对该提示信息发送的清理指令,该清理指令携带包括待清理表中部分或全部表的目标表集合。该内存清理平台101响应于该清理指令,按照预设清理周期对该目标表集合中各个目标表的数据执行清理操作,每次执行该清理操作的持续时长为上述内存清理平台101确定的清理时长。
上述终端设备102可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等等;上述内存清理平台101可以是服务器,例如可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,本申请对此不做限定。可选地,内存清理平台101可以是Redis集群中的节点设备。
下面对本申请实施例提供的一种内存的清理方法进一步进行详细描述,请参阅图2,图2是本申请实施例提供的一种内存的清理方法的流程示意图。其中,如图2所示,该内存的清理方法可以包括:
201、获取数据库的内存占用率和上述数据库存储的各个表的生存时长。
在本申请实施例中,在Redis数据库中可以通过两种方式清理内存,一种是通过内存清理平台在读/写到已经过期的键(key)时,直接进行清理,即删除该key中的数据;另一种是通过内存清理平台周期性的对所有的key进行检查,在检查到已经过期的key后也进行删除处理。由于Redis数据库本身无法设置触发检查所有的key,若key的产生数据大于Redis数据库自动清理的速度,则会有大量已经过期的key存储在Redis数据库中,未被及时清理,从而占用内存,影响系统的并发量和吞吐量。其中,存储在Redis数据库中的key对应一个生存时长,即有效期限,已经过期的key标识该key的有效期限已过。
其中,Redis数据库是一个键-值(key-value)存储系统,Redis数据库可以部署在一个或多个服务器中。所谓键(key)可以理解为表,在数据库中存储的每个表可以包括一条或多条数据。对于数据库来说,内存占用率是指存储在数据库中的数据所占用的内存占数据库的总内存的百分比。生存时长是指表距离过期的时长,例如,某一个表的生成时间为7天,则在写入该表的时候开始计时,在7天后确定该表已经过期。数据库中每一个表都对应一个生存时长,从写入该表后开始计时。
可选地,内存清理平台获取数据库中的内存占用率可以是从该数据库的日志信息中获取的,该数据库中存储的各个表的生存时长可以是通过Redis数据库的操作命令“TTL”获取的,在本申请中内存清理平台可以通过脚本或者程序进行获取数据库中各个表的生存时长,因此,内存清理平台可以批量获取到该数据库中存储的各个表的生存时长。
在一种可能的实现方式中,在内存清理平台获取数据库的内存占用率以及数据库存储的各个表的生存时长之前,内存清理平台还可以接收来自预设终端设备针对该数据库的内存清理指令,该内存清理指令可以是该数据库的管理人员通过预设终端设备发送的,即当管理人员想要对数据库进行清理时,可以向内存清理平台发送内存清理指令,进而内存清理平台可以响应该内存清理指令,进而获取数据库的内存占用率以及数据库存储的各个表的生成时长。
在一种可能的实现方式中,在内存清理平台获取数据库的内存占用率以及数据库存储的各个表的生存时长之前,内存清理平台还可以确定该数据库的第一内存大小,该第一内存大小可以是数据库的总内存大小,该内存清理平台可以确定在预设时间段内写入数据的第二内存大小,具体的,内存清理平台获取预设时间段内写入数据的第二内存大小也可以通过日志获取的,进而可以确定在该预设时间段内的增量内存占用率,即第二内存大小占第一内存大小的百分比,在确定该增量内存占用率大于预设内存占用率阈值的情况下,触发执行上述获取数据库的内存占用率以及数据库存储的各个表的生成时长的步骤。可以理解的是,在一段时间内增量内存的增量内存占用率在大于预设内存占用率阈值的情况下,表明在这段时间内写入的数据所占用内存较多。因此,该内存清理平台可以触发获取数据库的内存占用率以及各个表的生成时长,进而对数据库的内存进行清理。
可选地,在内存清理平台确定该增量内存占用率大于预设内存占用率阈值的情况下,也可以向预设终端设备发送提示信息,该提示信息用于提示该数据库在预设时间段内写入数据所占用的内存较多,并请求预设终端设备指示是否对该数据库进行清理。进而,该内存清理平台可以接收预设终端设备发送的内存清理指令,该内存清理指令用于指示该内存清理平台触发执行获取数据库的内存占用率和所述数据库存储的各个表的生存时长的步骤。
202、在确定上述内存占用率在预设内存占用率区间内的情况下,根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,并根据上述内存占用率、上述待清理表的个数确定清理时长。
其中,预设内存占用率区间可以是一个内存占用率区间,也可以是多个内存占用率区间,预设内存占用率区间可以是管理人员设置的,该内存清理平台在确定该内存占用率在预设内存占用率区间内的情况下,可以确定数据库中的待清理表,即确定将清理的表,并且可以确定清理时长。具体的,所谓清理时长是指内存清理平台周期性的清理数据库中的数据,执行该清理操作的时长,该清理时长可以用REDIS_EXPIRELOOKUPS_TIME_LIMIT表示。若该清理时长过长,则可能会阻塞数据库的正常运行,若清理时长过短,则可能会达不到清理的效果,因此可以确定一个合适的清理时长,周期性的对数据库进行清理。
在一种可能的实现方式中,内存清理平台根据内存占用率和各个表的生存时长确定数据库中的待清理表,以预设内存占用率区间包括两个区间为例进行讲解,在确定该内存占用率处于第一预设内存占用率区间内的情况下,确定数据库中生存时长小于或等于第一预设值的第一表,得到第一表集合,进而,按照第一表集合中各个第一表的写入时间从早到晚的顺序对第一表集合中各个第一表进行排序,得到第一排序结果,将该第一排序结果中排在前M位的第一表确定为待清理表。其中,M为正整数。示例性的,第一预设内存占用率区间可以为50%-70%,第一预设值可以为0,即该生存时长表示已经过期的表,则第一表集合中包括至少一个第一表,该至少一个第一表均为已经过期的表。对第一表集合中至少一个表的写入时间按照从早到晚的顺序进行排序,即先从写入早的数据开始清理,将无用的数据清理掉。
在一种可能的实现方式中,内存清理平台可以在确定数据库的内存占用率处于第二预设内存占用率区间内的情况下,获取数据库中存储的各个表的参考读取时刻,该数据库中存储的各个表的参考读取时刻为数据库中存储的各个表的最后一次读取时刻,进而,内存清理平台可以按照数据库中存储的各个表的参考读取时刻从早到晚的顺序对数据库中存储的各个表进行排序,得到第二排序结果,并将所述排序结果中排在前N位的表确定为所述待清理表,其中,N为正整数。示例性的,第二预设内存占用率区间可以为71%-90%,则内存清理平台可以获取数据库中存储的各个表最后一次读取时刻,按照最后一次读取时刻从早到晚的顺序对数据库中存储的各个表进行排序,即先对最后一次读取时刻距离当前时刻越久的表进行清理。可选地,上述M和N的值可以是业务人员设置的,例如,100,即表示待清理表有100个。
在一种可能的实现方式中,内存清理平台可以根据该数据库的内存占用率以及待清理表的个数确定清理时长,具体可以根据内存占用率区间和权重的对应关系确定第三预设内存占用率区间对应的第一权重,该第三内存占用率区间为该数据库的内存占用率处于的内存占用率区间,并根据待清理表的个数与权重的对应关系确定参考个数区间对应的第二权重,该参考个数区间也为待清理表的个数处于的个数区间。进而,该内存清理平台可以获取参考清理时长以及参考增量时长,根据第一权重和第二权重以及参考增量时长的积确定该增量时长,并将参考增量时长与参考清理时长之和确定为清理时长。
其中,内存占用率区间和权重的对应关系可以是管理人员设置的,不同的内存占用率对应的权重不同,为了在内存占用率越大的情况下清理得越多,该对应关系可以是内存占用率越大,所对应的第一权重的值也越大。同理,个数区间与权重的对应关系也可以是管理人员设置的,若需要清理的待清理表的个数越多,所对应的权重也可以越大。可选地,第一权重和第二权重均为正数。参考清理时长为预设的清理时长,例如可以是0.5秒、1秒、2秒,参考增量时长也为预设的清理时长,也可以为0.5秒、1秒、2秒。其中,清理时长可以如公式1所示:
T=t1+k1*k2*t2 公式1
在公式1中,T为清理时长,t1为参考清理时长,k1为第一权重,k2为第二权重,t2为参考增量时长。
203、获取各个待清理表的标识,并向预设终端设备发送提示信息。
具体的,内存清理平台将确定出的各个待清理表的标识发送给预设终端设备进行确认,预设终端设备可以是管理人员的终端设备,以确定内存清理平台中筛选出的待清理表中是否还有需要保留的表。则内存清理平台可以向预设终端设备发送提示信息,该提示信息携带各个待清理表的标识。该提示信息可以用于提示预设终端确定各个待清理表的标识所指示的待清理表表是否需要保留或者是否需要被清理。
204、接收针对上述提示信息发送的清理指令,上述清理指令携带目标表集合中各个目标表的标识,上述目标表集合包括上述各个待清理表中部分或全部表。
进一步地,该内存清理平台在向预设终端设备发送提示信息后,可以接收该预设终端针对该提示信息返回的清理指令。具体的,该清理指令可以携带目标表集合中各个目标表的标识,该目标表集合可以是管理人员在各个待清理表的中选择的表的集合,即该目标表集合可以包括各个待清理表中的部分表或者全部表,该目标表集合为需要清理的表。即管理人员可以通过终端设备选取待清理表中的部分或全部表作为需要清理的表(即目标表),将剩下的表作为仍然保留在数据库中的表,进而内存清理平台可以对由管理人员确认后的目标表集合中的各个目标表进行清理。
205、响应于上述清理指令,按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作,上述清理操作的持续时长为上述清理时长。
在一种可能的实现方式中,内存清理平台响应于预设终端设备发送的清理指令,按照预设清理周期对目标表集合中各个目标表的数据执行清理操作。其中,数据库中存储的各个表至少包括一条数据。则内存清理平台可以获取清理时长内的参考清理数据,该参考清理数据为在该清理时长内,内存清理平台能够清理数据的条数,即内存清理平台的清理数据的量。进而,内存清理平台可以确定各个目标表的数据条数,以及确定第一目标表中各条数据的参考读取时刻,即第一目标表中每条数据的最后一次读取时刻,按照第一目标表中各条数据的参考读取时刻早到晚的顺序对该第一目标表中各条数据进行排序,得到第三排序结果,该第一目标表为该目标表集合中的任一目标表。进而,内存清理平台可以根据参考清理数据、各个目标表的清理数据条数以及第三排序结果,确定第一目标表的待清理数据。从而,内存清理平台可以对目标表集合中各个第一目标表的待清理数据进行删除处理。
进一步地,内存清理平台可以根据清理时长确定目标表集合中各个目标表中需要清理的数据,则可以对该目标表集合中各个目标表中的部分或全部数据进行清理,即删除处理,从而达到清理的效果,释放无用的内存。具体的,该内存清理平台根据参考数据、各个目标表的数据条数以及第三排序结果确定该目标表集合中第一目标表的清理数据。内存清理平台可以根据各个目标表的数据条数之比确定各个目标表的清理比例,其中,各个目标表的清理比例包括该第一目标表的清理比例,各个目标表的清理比例之和为1。进而,内存清理平台可以根据第一目标表的清理比例和参考清理数据,确定第一目标表的待清理数目,待清理数目为第一目标表的清理比例与参考清理数据之积;将第三排序结果中排在前I位的数据确定为第一目标表的待清理数据,I的值为该待清理数目,其中,I为正整数。
其中,内存清理平台的参考清理数据可以是该内存清理平台清理一次所能够清理的数据条数,该数据条数为该目标表集合中所有目标表在清理一次时所能够清理的数据条数之和。因此,内存清理平台可以按照比例对目标表集合中各个目标表的数据进行排序,进而确定出目标表集合中每个目标表所清理的数据,并对确定出目标表集合中每个目标表所清理的数据进行删除处理,从而完成内存的清理操作。
在一个可能的实现方式中,内存清理平台按照预设清理周期对目标表集合中各个目标表的数据执行清理操作之后,可以生成操作日志,并可以向预设终端设备发送包含本次清理操作的相关信息的清理信息。具体的,内存清理平台可以获取第一目标表的清理信息,清理信息包括第一目标表的标识、第一目标表的待清理数据所占用的内存大小、执行清理操作的时间信息、第一目标表的数据类型以及执行清理操作的操作命令,进而内存清理平台可以根据目标表集合中各个第一目标表的清理信息生成清理信息表,并将清理信息表添加在操作日志中。在得到操作日志后,内存清理平台本次清理流程结束,则可以向预设终端设备发送清理信息,该清理信息包括清理信息表,该清理信息用于提示用户本次清理结束,以及本次所清理的表的信息。
其中,上述第一目标表为目标表集合中任一目标表。在数据库中,每个表都携带一个唯一标识,即第一目标表的标识。第一目标表的待清理数据所占用的内存大小,即表示本次对第一目标表清理了多少数据量,本次内存清理平台对该表清理的内存占用大小,也可以理解为针对第一目标表,内存清理平台释放了多大的无用内存。
其中,第一目标表的数据类型即为存储在该Redis数据库中的数据的类型。示例性的,可以是字符串(string)类型(可以为整形、浮点型和字符串),也可以是列表(list)类型,还可以是集合(set)类型、有序集合(sortset)等等,本申请对此不做限定。该第一目标表的数据类型可以一并统计下来,存储在操作日志中。在Redis数据库中,针对不同数据类型的数据,所使用的操作命令不同,示例性的,删除字符串(string)类型的元素,可以采用“ltrim”操作命令,删除有序集合(sortset)可以采用“zremrangebyrank”操作命令等等。
进而,内存清理平台可以将各个第一目标表的清理信息汇总,得到清理信息表,即该清理信息表记录了各个第一目标表中的清理信息,将该清理信息表添加在操作日志中,以记录内存清理平台本次对数据库的清理。进而,该内存清理平台还可以将清理信息表发送至预设终端设备,告知管理人员本次清理的相关信息,从而在后续对数据库或系统进行故障的检测时提供方便,也可以提高排查的效率。
本申请实施例中,在确定内存占用率在预设内存占用率区间内的情况下,通过获取的内存占用率和各个表的生存时长确定数据库中的待清理表的方式,无需人为手动进行配置,可以自动筛选出需要清理的表,减少手动清理的额外操作及开发工作。并且,通过将获取到的各个表的标识发送至预设终端设备,并接收预设终端设备的清理指令,该清理指令用于指示清理的表。将筛选出的表发送至业务人员处确认,业务人员确认之后,对业务人员确认清理的表进行清理,防止表被误清理,从而释放的无用内存。再者,通过内存占用率、待清理表的个数确定清理时长,进而按照预设清理周期对目标表集合中各个表的数据执行清理操作,清理操作的持续时长为清理时长,可以利用较小的资源对内存进行清理,对数据库的运行无任何影响,保证了系统的并发量和吞吐量。
请参阅图3,图3是本申请实施例提供的一种内存的清理方法的流程示意图。其中,需要说明的是,本申请中各个实施例之间相同或相似的部分可以互相参考。在本申请中各个实施例、以及各实施例中的各个实施方式/实施方法/实现方法中,如果没有特殊说明以及逻辑冲突,不同的实施例之间、以及各实施例中的各个实施方式/实施方法/实现方法之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例、以及各实施例中的各个实施方式/实施方法/实现方法中的技术特征根据其内在的逻辑关系可以组合形成新的实施例、实施方式、实施方法、或实现方法。以上上述的本申请实施方式并不构成对本申请保护范围的限定。如图3所示,该内存的清理方法可以包括:
301、获取清理时长内的参考清理数据,上述参考清理数据为在上述清理时长内的清理数据的条数。
其中,参考清理数据相当于清理数据条数的阈值,即在该清理时长的时间段内,该内存清理平台能够清理的数据条数。为了达到更好的清理效果,可以对每一个目标表均进行清理,而不是对某一个目标表的所有数据进行清理。因此,内存清理平台可以先筛选出目标表集合中各个目标表的中在本次清理操作中进行清理的数据。为了保证每一个目标表的数据均被清理,内存清理平台可以根据目标表集合的各个目标表的最后一次读取的时间为清理标准进行筛选。具体的,内存清理平台可以先确定目标表集合中各个目标表的数据条数,以及各个目标表中每条数据的最后一次读取时间,即参考读取时刻,进而按照参考读取时刻从早到晚的顺序对各个目标表中的各条数据进行排序,得到排序结果。并按照从早到晚的顺序选取数据作为本次清理操作的数据,并进行清理。
302、确定各个目标表的数据条数,以及确定第一目标表中各条数据的参考读取时刻,按照上述各条数据的参考读取时刻按照从早到晚的顺序对上述各条数据进行排序,得到第三排序结果。
其中,目标表集合中各个目标表的数据条数即为各个目标表包括的数据条数,即各个目标表分别包括了多少条数据。第一目标表为目标表集合中任一目标表,第一目标表中各条数据的参考读取时刻为该条数据的最后一次读取时间。按照该第一目标表中各条数据的参考读取时间从早到晚对第一目标表中各条数据进行排序,得到第三排序结果。该第三排序结果中的顺序即为内存清理平台删除该第一目标表中的数据的顺序。进而,内存清理平台可以确定第一目标表中删除数据的条数,即删除第一目标表中多少条数据,进而可以将该第三排序结果中按照确定该第一目标表删除的数据,即确定该第一目标表的待清理数据。
303、根据上述参考清理数据、上述各个目标表的数据条数以及所述第三排序结果,确定上述第一目标表的待清理数据。
在一种可能的实现方式中,内存清理平台可以根据各个目标表的数据条数之比确定各个目标表的清理比例,可选地,该各个目标表的清理比例之和为1,其中,各个目标表中包括第一目标表,各个目标表的清理比例中也包括第一目标表的清理比例。以目标表集合中第一目标表为例进行讲解,根据第一目标表的清理比例以及参考清理数据,确定第一目标表的待清理数目,该第一目标表的待清理数目为第一目标表待清理数据的条数,该第一目标表的待清理数据为该第一目标表的清理比例与该参考清理数据的积。进而,内存清理平台可以将该第三排序结果中排在前I位的数据确定为该第一目标表的待清理数据,该I为正整数,且I的值为上述确定的待清理数目。
示例性的,以3个表为例进行讲解,表1有1000条数据,表2有2000条数据,表3有3000条数据,参考清理数据为3000条。则内存清理平台可以根据各个表的数据条数之比确定每个表的清理比例,其中,该各个表的清理比例之和为1,即得到清理比例:表1:表2:表3=1/6:1/3:1/2。进而,内存清理平台可以根据清理比例,即上述1/6:1/3:1/2,与参考清理数据(即3000条)的积,确定出表1清理的待清理数目为500条,表2清理的待清理数目为1000条,表3清理的待清理数目为1500条。进一步地,内存清理平台可以将表1的第三排序结果中前500条作为表1的待清理数据,将表2的第三排序结果中前1000条数据作为表2的待清理数据,同理,将表3的第三排序结果中前1500条数据作为表3的待清理数据。
304、对上述目标表集合中各个第一目标表的待清理数据进行删除处理。
在一种可能的实现方式中,内存清理平台持续对数据库的内存占用率进行监测,当监测到数据库的增量内存占用率大于预设内存占用率阈值的情况下,触发对数据库的内存清理的操作。其中,若内存清理平台无法通过一次清理操作将该数据库的目标表集合的待清理表的数据全部删除,该内存清理平台可以周期性的对该目标表集合中各个目标表的数据执行清理操作,直至将目标表集合中各个目标表的待清理数据被删除完成。其中,内存清理平台的每两次执行清理操作的间隔时长可以是管理人员设置的,也可以是内存清理平台根据当前数据库的内存占用率与对应的间隔时长确定的,示例性的,该间隔时长可以是24小时,本申请对此不做限定。
进一步地,内存清理平台在确定了目标表集合中各个目标表的清理数目之后,即确定了目标表集合中各个目标表的待清理数据,则在每一次待清理数据时,都可以分别清理待清理数目的数据。在上述例子中,表1的待清理数目为500条、表1的待清理数目为表2,表3的待清理数目为1500。则内存清理平台可以周期性的从表1中删除该表1的第三排序结果中前500条数据,同理,内存清理平台可以周期性的从表2中删除该表2的第三排序结果中前1000条数据,以及周期性的从表3中删除该表3的第三排序结果中前1500条数据。
可选地,在内存清理平台将目标表集合中各个目标表的数据删除完成后,可以根据当前数据库的内存占用率和数据库存储的各个表的生存时长再次对数据库中的数据进行筛选和清理,进而再次得到待清理表,并进行清理。从而释放数据库的内存,达到对数据库的内存进行清理的效果。
本申请实施例中,在确定内存占用率在预设内存占用率区间内的情况下,通过获取的内存占用率和各个表的生存时长确定数据库中的待清理表的方式,无需人为手动进行配置,可以自动筛选出需要清理的表,减少手动清理的额外操作及开发工作。并且,通过将获取到的各个表的标识发送至预设终端设备,并接收预设终端设备的清理指令,该清理指令用于指示清理的表。将筛选出的表发送至业务人员处确认,业务人员确认之后,对业务人员确认清理的表进行清理,防止表被误清理,从而释放的无用内存。再者,通过内存占用率、待清理表的个数确定清理时长,进而按照预设清理周期对目标表集合中各个表的数据执行清理操作,清理操作的持续时长为清理时长,可以利用较小的资源对内存进行清理,对数据库的运行无任何影响,保证了系统的并发量和吞吐量。
请参阅图4,图4是本申请实施例提供的一种内存的清理装置的结构示意图,上述内存的清理装置400包括:
获取单元401,用于获取数据库的内存占用率和上述数据库存储的各个表的生存时长;
确定单元402,用于在确定上述内存占用率在预设内存占用率区间内的情况下,根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,并根据上述内存占用率、上述待清理表的个数确定清理时长;
上述获取单元401,用于获取各个待清理表中各个表的标识,并向预设终端设备发送提示信息,上述提示信息携带上述各个待清理表的标识;
接收单元403,用于接收针对上述提示信息发送的清理指令,上述清理指令携带目标表集合中各个目标表的标识,上述目标表集合包括上述各个待清理表中部分或全部表;
清理单元404,用于响应于上述清理指令,按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作,上述清理操作的持续时长为上述清理时长。
进一步地,上述确定单元402根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,具体用于:
在确定上述内存占用率处于第一预设内存占用率区间内的情况下,确定上述数据库中生存时长小于或等于第一预设值的第一表,得到第一表集合;
按照上述第一表集合中各个第一表的写入时间从早到晚的顺序对上述各个第一表进行排序,得到第一排序结果,并将上述第一排序结果中排在前M位的第一表确定为上述待清理表,上述M为正整数;
在确定上述内存占用率处于第二预设内存占用率区间内的情况下,获取上述数据库存储的各个表的参考读取时刻,上述数据库存储的各个表的参考读取时刻为上述数据库存储的各个表的最后一次读取时刻;
按照上述数据库存储的各个表的参考读取时刻从早到晚的顺序对上述数据库存储的各个表进行排序,得到第二排序结果,并将上述排序结果中排在前N位的表确定为上述待清理表,上述N为正整数。
进一步地,上述确定单元402根据上述内存占用率、上述待清理表的个数确定清理时长,具体用于:
根据内存占用率区间和权重的对应关系确定第三预设内存占用率区间对应的第一权重,上述第三预设内存占用率区间为上述内存占用率所处于的内存占用率区间;
根据上述个数区间与权重的对应关系确定参考个数区间对应的第二权重,上述参考个数区间为上述待清理表的个数所在的个数区间;
获取参考清理时长和参考增量时长,根据上述第一权重、上述第二权重和上述参考增量时长确定增量时长,并根据上述增量时长和上述参考清理时长确定上述清理时长;
其中,上述增量时长为上述第一权重、上述第二权重和上述参考增量时长的积,上述清理时长为上述参考清理时长和上述增量时长的和。
进一步地,上述数据库存储的各个表中包括至少一条数据;上述清理单元404按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作,具体用于:
获取上述清理时长内的参考清理数据,上述参考清理数据为在上述清理时长内的清理数据的条数;
确定上述各个目标表的数据条数,以及确定第一目标表中各条数据的参考读取时刻,按照上述各条数据的参考读取时刻按照从早到晚的顺序对上述各条数据进行排序,得到第三排序结果,上述各条数据的参考读取时刻为上述各条数据的最后一次读取时刻,上述第一目标表为上述目标表集合中的任一目标表;
根据上述参考清理数据、上述各个目标表的数据条数以及上述第三排序结果,确定上述第一目标表的待清理数据;
对上述目标表集合中各个第一目标表的待清理数据进行删除处理。
进一步地,上述清理单元404根据上述参考清理数据、上述各个目标表的数据条数以及上述第三排序结果,确定上述第一目标表的待清理数据,具体用于:
根据上述各个目标表的数据条数之比确定上述各个目标表的清理比例,上述各个目标表的清理比例中包括上述第一目标表的清理比例,上述各个目标表的清理比例之和为1;
根据上述第一目标表的清理比例和上述参考清理数据,确定上述第一目标表的待清理数目,上述待清理数目为上述第一目标表的清理比例与上述参考清理数据之积;
将上述第三排序结果中排在前I位的数据确定为上述第一目标表的待清理数据,上述I的值为上述待清理数目,上述I为正整数。
进一步地,上述确定单元402,还用于确定上述数据库的第一内存大小,以及确定在预设时间段内写入数据的第二内存大小,根据上述第一内存大小和上述第二内存大小确定在上述预设时间段内的增量内存占用率;
上述内存的清理装置400还包括触发单元405,用于在确定上述增量内存占用率大于预设内存占用率阈值的情况下,触发执行获取数据库的内存占用率和上述数据库存储的各个表的生存时长的步骤。
进一步地,上述获取单元401,还用于获取上述第一目标表的清理信息,上述清理信息包括上述第一目标表的标识、上述第一目标表的待清理数据所占用的内存大小、执行上述清理操作的时间信息、上述第一目标表的数据类型以及执行上述清理操作的操作命令;
上述内存的清理装置400还包括生成单元406,用于根据上述目标表集合中各个第一目标表的清理信息生成清理信息表,并将上述清理信息表添加在操作日志中;
发送单元407,用于向上述预设终端设备发送清理信息,上述清理信息包括上述清理信息表。
有关上述获取单元401、确定单元402、接收单元403、清理单元404、触发单元405、生成单元406以及发送单元407详细的描述可以直接参考上述图2至图3所示的方法实施例中的相关描述直接得到,这里不加赘述。
本申请实施例中,在确定内存占用率在预设内存占用率区间内的情况下,通过获取的内存占用率和各个表的生存时长确定数据库中的待清理表的方式,无需人为手动进行配置,可以自动筛选出需要清理的表,减少手动清理的额外操作及开发工作。并且,通过将获取到的各个表的标识发送至预设终端设备,并接收预设终端设备的清理指令,该清理指令用于指示清理的表。将筛选出的表发送至业务人员处确认,业务人员确认之后,对业务人员确认清理的表进行清理,防止表被误清理,从而释放的无用内存。再者,通过内存占用率、待清理表的个数确定清理时长,进而按照预设清理周期对目标表集合中各个表的数据执行清理操作,清理操作的持续时长为清理时长,可以利用较小的资源对内存进行清理,对数据库的运行无任何影响,保证了系统的并发量和吞吐量。
请参阅图5,图5是本申请实施例提供的一种计算机设备的结构示意图,如图5所示,本申请实施例中的计算机设备500可以包括:
处理器501,收发器502和存储器505,此外,上述计算机设备500还可以包括:用户接口504,和至少一个通信总线503。其中,通信总线503用于实现这些组件之间的连接通信。其中,用户接口504可以包括显示屏(Display)、键盘(Keyboard),存储器505可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器505可选的还可以是至少一个位于远离前述处理器501和前述收发器502的存储装置。如图5所示,作为一种计算机存储介质的存储器505中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图5所示的计算机设备500中,收发器502可提供网络通讯功能,以使间可进行通信;而用户接口504主要用于为用户提供输入的接口;而处理器501可以用于调用存储器505中存储的设备控制应用程序,执行如下操作:
获取数据库的内存占用率和上述数据库存储的各个表的生存时长;
在确定上述内存占用率在预设内存占用率区间内的情况下,根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,并根据上述内存占用率、上述待清理表的个数确定清理时长;
获取各个待清理表中各个表的标识,并向预设终端设备发送提示信息,上述提示信息携带上述各个待清理表的标识;
接收针对上述提示信息发送的清理指令,上述清理指令携带目标表集合中各个目标表的标识,上述目标表集合包括上述各个待清理表中部分或全部表;
响应于上述清理指令,按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作,上述清理操作的持续时长为上述清理时长。
在一种可能的实现方式中,上述处理器501根据上述内存占用率和上述数据库存储的各个表的生存时长确定上述数据库中的待清理表,具体用于执行:
在确定上述内存占用率处于第一预设内存占用率区间内的情况下,确定上述数据库中生存时长小于或等于第一预设值的第一表,得到第一表集合;
按照上述第一表集合中各个第一表的写入时间从早到晚的顺序对上述各个第一表进行排序,得到第一排序结果,并将上述第一排序结果中排在前M位的第一表确定为上述待清理表,上述M为正整数;
在确定上述内存占用率处于第二预设内存占用率区间内的情况下,获取上述数据库存储的各个表的参考读取时刻,上述数据库存储的各个表的参考读取时刻为上述数据库存储的各个表的最后一次读取时刻;
按照上述数据库存储的各个表的参考读取时刻从早到晚的顺序进行排序,得到第二排序结果,并将上述排序结果中排在前N位的表确定为上述待清理表,上述N为正整数。
在一种可能的实现方式中,上述处理器501根据上述内存占用率、上述待清理表的个数确定清理时长,具体用于执行:
根据内存占用率区间和权重的对应关系确定第三预设内存占用率区间对应的第一权重,上述第三预设内存占用率区间为上述内存占用率所处于的内存占用率区间;
根据上述个数区间与权重的对应关系确定参考个数区间对应的第二权重,上述参考个数区间为上述待清理表的个数所在的个数区间;
获取参考清理时长和参考增量时长,根据上述第一权重、上述第二权重和上述参考增量时长确定增量时长,并根据上述增量时长和上述参考清理时长确定上述清理时长;
其中,上述增量时长为上述第一权重、上述第二权重和上述参考增量时长的积,上述清理时长为上述参考清理时长和上述增量时长的和。
在一种可能的实现方式中,上述数据库存储的各个表中包括至少一条数据;上述处理器501按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作,具体用于执行:
获取上述清理时长内的参考清理数据,上述参考清理数据为在上述清理时长内的清理数据的条数;
确定上述各个目标表的数据条数,以及确定第一目标表中各条数据的参考读取时刻,按照上述各条数据的参考读取时刻按照从早到晚的顺序对上述各条数据进行排序,得到第三排序结果,上述各条数据的参考读取时刻为上述各条数据的最后一次读取时刻,上述第一目标表为上述目标表集合中的任一目标表;
根据上述参考清理数据、上述各个目标表的数据条数以及上述第三排序结果,确定上述第一目标表的待清理数据;
对上述目标表集合中各个第一目标表的待清理数据进行删除处理。
在一种可能的实现方式中,上述处理器501根据上述参考清理数据、上述各个目标表的数据条数以及上述第三排序结果,确定上述第一目标表的待清理数据,具体用于执行:
根据上述各个目标表的数据条数之比确定上述各个目标表的清理比例,上述各个目标表的清理比例中包括上述第一目标表的清理比例,上述各个目标表的清理比例之和为1;
根据上述第一目标表的清理比例和上述参考清理数据,确定上述第一目标表的待清理数目,上述待清理数目为上述第一目标表的清理比例与上述参考清理数据之积;
将上述第三排序结果中排在前I位的数据确定为上述第一目标表的待清理数据,上述I的值为上述待清理数目,上述I为正整数。
在一种可能的实现方式中,上述处理器501获取数据库的内存占用率和上述数据库存储的各个表的生存时长之前,上述处理器501还用于执行如下操作:
确定上述数据库的第一内存大小,以及确定在预设时间段内写入数据的第二内存大小,根据上述第一内存大小和上述第二内存大小确定在上述预设时间段内的增量内存占用率;
在确定上述增量内存占用率大于预设内存占用率阈值的情况下,触发执行获取数据库的内存占用率和上述数据库存储的各个表的生存时长的步骤。
在一种可能的实现方式中,上述处理器501按照预设清理周期对上述目标表集合中各个目标表的数据执行清理操作之后,上述处理器501还用于执行如下操作:
获取上述第一目标表的清理信息,上述清理信息包括上述第一目标表的标识、上述第一目标表的待清理数据所占用的内存大小、执行上述清理操作的时间信息、上述第一目标表的数据类型以及执行上述清理操作的操作命令;
根据上述目标表集合中各个第一目标表的清理信息生成清理信息表,并将上述清理信息表添加在操作日志中;
向上述预设终端设备发送清理信息,上述清理信息包括上述清理信息表。
应当理解,在一些可行的实施方式中,上述处理器501可以是中央处理单元(central processing unit,CPU),该处理器501还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器505可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器505的一部分还可以包括非易失性随机存取存储器。
具体实现中,上述计算机设备500可通过其内置的各个功能模块执行如上述图2和图3中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本申请实施例中,在确定内存占用率在预设内存占用率区间内的情况下,通过获取的内存占用率和各个表的生存时长确定数据库中的待清理表的方式,无需人为手动进行配置,可以自动筛选出需要清理的表,减少手动清理的额外操作及开发工作。并且,通过将获取到的各个表的标识发送至预设终端设备,并接收预设终端设备的清理指令,该清理指令用于指示清理的表。将筛选出的表发送至业务人员处确认,业务人员确认之后,对业务人员确认清理的表进行清理,防止表被误清理,从而释放的无用内存。再者,通过内存占用率、待清理表的个数确定清理时长,进而按照预设清理周期对目标表集合中各个表的数据执行清理操作,清理操作的持续时长为清理时长,可以利用较小的资源对内存进行清理,对数据库的运行无任何影响,保证了系统的并发量和吞吐量。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的计算机设备所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图2或图3任一个所对应实施例中的对任一方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法实施例上述的内存的清理方法。
本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述内存的清理方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序指令相关的硬件来完成,上述的程序可存储于一计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random accessmemory,RAM)等。
需要强调的是,为进一步保证上述数据的私密和安全性,上述数据还可以存储于一区块链的节点中。其中,本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种内存的清理方法,其特征在于,包括:
获取数据库的内存占用率和所述数据库存储的各个表的生存时长;
在确定所述内存占用率在预设内存占用率区间内的情况下,根据所述内存占用率和所述数据库存储的各个表的生存时长确定所述数据库中的待清理表,并根据所述内存占用率、所述待清理表的个数确定清理时长;
获取各个待清理表的标识,并向预设终端设备发送提示信息,所述提示信息携带所述各个待清理表的标识;
接收针对所述提示信息发送的清理指令,所述清理指令携带目标表集合中各个目标表的标识,所述目标表集合包括所述各个待清理表中部分或全部表;
响应于所述清理指令,按照预设清理周期对所述各个目标表的数据执行清理操作,所述清理操作的持续时长为所述清理时长。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内存占用率和所述数据库存储的各个表的生存时长确定所述数据库中的待清理表,包括:
在确定所述内存占用率处于第一预设内存占用率区间内的情况下,确定所述数据库中生存时长小于或等于第一预设值的第一表,得到第一表集合;
按照所述第一表集合中各个第一表的写入时间按照从早到晚的顺序对所述各个第一表进行排序,得到第一排序结果,并将所述第一排序结果中排在前M位的第一表确定为所述待清理表,所述M为正整数;
在确定所述内存占用率处于第二预设内存占用率区间内的情况下,获取所述数据库存储的各个表的参考读取时刻,所述数据库存储的各个表的参考读取时刻为所述数据库存储的各个表的最后一次读取时刻;
按照所述数据库储存的各个表的参考读取时刻从早到晚的顺序对所述数据库储存的各个表进行排序,得到第二排序结果,并将所述第二排序结果中排在前N位的表确定为所述待清理表,所述N为正整数。
3.根据权利要求1所述的方法,其特征在于,所述根据所述内存占用率、所述待清理表的个数确定清理时长,包括:
根据内存占用率区间和权重的对应关系确定第三预设内存占用率区间对应的第一权重,所述第三预设内存占用率区间为所述内存占用率所处于的内存占用率区间;
根据所述个数区间与权重的对应关系确定参考个数区间对应的第二权重,所述参考个数区间为所述待清理表的个数所在的个数区间;
获取参考清理时长和参考增量时长,根据所述第一权重、所述第二权重和所述参考增量时长确定增量时长,并根据所述增量时长和所述参考清理时长确定所述清理时长;
其中,所述增量时长为所述第一权重、所述第二权重和所述参考增量时长的积,所述清理时长为所述参考清理时长和所述增量时长的和。
4.根据权利要求3所述的方法,其特征在于,所述数据库存储的各个表中包括至少一条数据;所述按照预设清理周期对所述目标表集合中各个目标表的数据执行清理操作,包括:
获取所述清理时长内的参考清理数据,所述参考清理数据为在所述清理时长内的清理数据的条数;
确定所述各个目标表的数据条数,以及确定第一目标表中各条数据的参考读取时刻,按照所述各条数据的参考读取时刻从早到晚的顺序对所述各条数据进行排序,得到第三排序结果,所述各条数据的参考读取时刻为所述各条数据的最后一次读取时刻,所述第一目标表为所述目标表集合中的任一目标表;
根据所述参考清理数据、所述各个目标表的数据条数以及所述第三排序结果,确定所述第一目标表的待清理数据;
对所述目标表集合中各个第一目标表的待清理数据进行删除处理。
5.根据权利要求4所述的方法,其特征在于,所述根据所述参考清理数据、所述各个目标表的数据条数以及所述第三排序结果,确定所述第一目标表的待清理数据,包括:
根据所述各个目标表的数据条数之比确定所述各个目标表的清理比例,所述各个目标表的清理比例中包括所述第一目标表的清理比例,所述各个目标表的清理比例之和为1;
根据所述第一目标表的清理比例和所述参考清理数据,确定所述第一目标表的待清理数目,所述待清理数目为所述第一目标表的清理比例与所述参考清理数据之积;
将所述第三排序结果中排在前I位的数据确定为所述第一目标表的待清理数据,所述I的值为所述待清理数目,所述I为正整数。
6.根据权利要求1所述的方法,其特征在于,所述获取数据库的内存占用率和所述数据库存储的各个表的生存时长之前,所述方法还包括:
确定所述数据库的第一内存大小,以及确定在预设时间段内写入数据的第二内存大小,根据所述第一内存大小和所述第二内存大小确定在所述预设时间段内的增量内存占用率;
在确定所述增量内存占用率大于预设内存占用率阈值的情况下,触发执行获取数据库的内存占用率和所述数据库存储的各个表的生存时长的步骤。
7.根据权利要求4所述的方法,其特征在于,所述按照预设清理周期对所述目标表集合中各个目标表的数据执行清理操作之后,所述方法还包括:
获取所述第一目标表的清理信息,所述清理信息包括所述第一目标表的标识、所述第一目标表的待清理数据所占用的内存大小、执行所述清理操作的时间信息、所述第一目标表的数据类型以及执行所述清理操作的操作命令;
根据所述目标表集合中各个第一目标表的清理信息生成清理信息表,并将所述清理信息表添加在操作日志中;
向所述预设终端设备发送清理信息,所述清理信息包括所述清理信息表。
8.一种内存的清理装置,其特征在于,包括:
获取单元,用于获取数据库的内存占用率和所述数据库存储的各个表的生存时长;
确定单元,用于在确定所述内存占用率在预设内存占用率区间内的情况下,根据所述内存占用率和所述数据库存储的各个表的生存时长确定所述数据库中的待清理表,并根据所述内存占用率、所述待清理表的个数确定清理时长;
所述获取单元,用于获取各个待清理表中各个表的标识,并向预设终端设备发送提示信息,所述提示信息携带所述各个待清理表的标识;
接收单元,用于接收针对所述提示信息发送的清理指令,所述清理指令携带目标表集合中各个目标表的标识,所述目标表集合包括所述各个待清理表中部分或全部表;
清理单元,用于响应于所述清理指令,按照预设清理周期对所述目标表集合中各个目标表的数据执行清理操作,所述清理操作的持续时长为所述清理时长。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210031783.4A CN114356581A (zh) | 2022-01-12 | 2022-01-12 | 一种内存的清理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210031783.4A CN114356581A (zh) | 2022-01-12 | 2022-01-12 | 一种内存的清理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356581A true CN114356581A (zh) | 2022-04-15 |
Family
ID=81108885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210031783.4A Pending CN114356581A (zh) | 2022-01-12 | 2022-01-12 | 一种内存的清理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356581A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521489A (zh) * | 2023-07-04 | 2023-08-01 | 深圳市同泰怡信息技术有限公司 | 一种计算机用服务器故障预警方法 |
CN117170882A (zh) * | 2023-11-01 | 2023-12-05 | 新华三信息技术有限公司 | 一种资源分配方法、装置、电子设备及存储介质 |
-
2022
- 2022-01-12 CN CN202210031783.4A patent/CN114356581A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521489A (zh) * | 2023-07-04 | 2023-08-01 | 深圳市同泰怡信息技术有限公司 | 一种计算机用服务器故障预警方法 |
CN116521489B (zh) * | 2023-07-04 | 2024-03-15 | 深圳市同泰怡信息技术有限公司 | 一种计算机用服务器故障预警方法 |
CN117170882A (zh) * | 2023-11-01 | 2023-12-05 | 新华三信息技术有限公司 | 一种资源分配方法、装置、电子设备及存储介质 |
CN117170882B (zh) * | 2023-11-01 | 2024-02-23 | 新华三信息技术有限公司 | 一种资源分配方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114356581A (zh) | 一种内存的清理方法及相关设备 | |
US7698602B2 (en) | Systems, methods and computer products for trace capability per work unit | |
US20100257255A1 (en) | Tracking remote browser crashes via cookies | |
CN110990233B (zh) | 一种利用甘特图展示soar的方法和系统 | |
CN104767653B (zh) | 一种网络接口监控的方法和装置 | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN109842621B (zh) | 一种减少token存储数量的方法及终端 | |
CN108259526B (zh) | 一种数据传输方法和装置 | |
CN106095483A (zh) | 服务的自动化部署方法及装置 | |
CN113254320A (zh) | 记录用户网页操作行为的方法及装置 | |
CN107040576A (zh) | 信息推送方法及装置、通讯系统 | |
CN110795166B (zh) | 一种数据处理方法及装置 | |
CN112115039B (zh) | 测试用例生成方法、装置及设备 | |
CN111741110A (zh) | 一种消息推送系统及方法 | |
CN107239542A (zh) | 一种数据统计方法、装置、服务器及存储介质 | |
CN112671878B (zh) | 一种区块链的信息订阅方法、装置、服务器和存储介质 | |
CN113342746A (zh) | 文件管理系统、文件管理方法、电子设备和存储介质 | |
CN115409507A (zh) | 区块处理方法、区块处理装置、计算机设备及存储介质 | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
CN106156258A (zh) | 一种在分布式存储系统中统计数据的方法、装置及系统 | |
CN116521639A (zh) | 一种日志数据的处理方法、电子设备和计算机可读介质 | |
CN107295059A (zh) | 业务推送量的统计系统及方法 | |
CN107590199B (zh) | 一种面向内存的多线程数据库设计方法 | |
CN116048422A (zh) | 数据处理方法、电子设备及存储介质 | |
CN110392059A (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 |