CN115718568A - 一种提高日志数据读写效率的方法、装置及设备 - Google Patents
一种提高日志数据读写效率的方法、装置及设备 Download PDFInfo
- Publication number
- CN115718568A CN115718568A CN202211447087.8A CN202211447087A CN115718568A CN 115718568 A CN115718568 A CN 115718568A CN 202211447087 A CN202211447087 A CN 202211447087A CN 115718568 A CN115718568 A CN 115718568A
- Authority
- CN
- China
- Prior art keywords
- cache region
- log data
- current cache
- log
- pointed
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及存储领域,提出一种提高日志数据读写效率的方法、装置及设备。方法包括:设置用于日志数据缓存的多个缓存区;将日志数据写入当前缓存区,并判断所述当前缓存区的使用容量是否达到预设阈值以及当前缓存区所指向的下一缓存区是否被占用;响应于当前缓存区的使用容量达到预设阈值且当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。本发明公开的方案采用多个缓存区使得日志数据缓存到缓存区的过程和写入存储介质的过程分离,使得应用层未感知到日志数据写入存储介质的过程,实现对日志数据进行快速写入,提高日志数据写入存储介质的效率。
Description
技术领域
本发明涉及存储领域,尤其涉及一种提高日志数据读写效率的方法、装置及设备。
背景技术
日志数据一般是不定长的字符串,一般包括日志头和日志数据两部分。每条日志所占的存储空间一般较小,大概有几十到一百多字节,经过特定压缩算法压缩后,甚至会更小。在实际应用中,像嵌入式设备在内的设备常常需要在运行过程中记录各种日志数据,比如事件日志、审计日志,以方便技术人员分析定位设备的运行情况。这些日志数据一般保存在非易失性的存储介质中,比如Flash中,这样在嵌入式设备掉电以后,日志数据也不会丢失。
现有技术中,在将日志数据保存在存储介质的过程中,一般选择将要写入的日志数据先缓存在一段内存中,当数据量足够大时再写入存储介质中,以减少读写次数。但这种方式在将日志数据写入存储介质的过程中,日志数据无法写入缓存内存中,导致新生成的日志数据丢失或者需要等待写入存储介质完成后,才可以将新生成的日志数据写入缓存内存中,这样导致日志数据从存储介质中进行读写时效率降低。
发明内容
有鉴于此,本发明提出了一种提高日志数据读写效率的方法、装置及设备,其中,本发明提出的一种提高日志数据读写效率的方法在将日志数据写入缓存的过程中使用多个缓存区,先将日志数据缓存到其中一个缓存区中,当该缓存区的日志数据达到切换条件(比如该缓存区的日志数据存满或者剩余空间不足以存储一条日志数据),将该缓存区的日志数据写入flash中,同时切换进行缓存的缓存区,将新生成的日志数据缓存至剩余的一个缓存区中,这样使得日志数据缓存到缓存区的过程和写入存储介质的过程分离,应用层不用感知到日志数据写入存储介质的过程,实现对日志数据进行快速写入。同时,在存储介质内建立日志信息表,并将日志信息表加载到内存中进行读取,根据日志信息表对日志数据从存储介质中读取,减少了日志数据的检索时间,提高了读取效率。
基于以上目的,本发明的实施例的一个方面提供了一种提高日志数据读写效率的方法,所述方法包括以下步骤:设置用于日志数据缓存的多个缓存区;将日志数据写入当前缓存区,并判断所述当前缓存区的使用容量是否达到预设阈值以及判断当前缓存区所指向的下一缓存区是否被占用;响应于所述当前缓存区的使用容量达到预设阈值且当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
在一些实施例中,方法还包括:响应于所述当前缓存区的使用容量在预设时间周期内未达到预设阈值,将新生成的日志数据继续写入所述当前缓存区。
在一些实施例中,方法还包括:响应于超过预设时间周期所述当前缓存区的使用容量未达到所述预设阈值,判断所述当前缓存区所指向的下一缓存区是否被占用;
响应于所述当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区;
响应于所述当前缓存区所指向的下一缓存区被占用,设置所述当前缓存区等待所述当前缓存区所指向的下一缓存区被占用状态释放后,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
在一些实施例中,方法还包括:响应于所述当前缓存区的使用容量达到预设阈值且当前缓存区所指向的下一缓存区被占用,设置所述当前缓存区等待所述当前缓存区所指向的下一缓存区被占用状态释放后,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
在一些实施例中,方法还包括:配置用于标记缓存区的状态的标志;
判断当前缓存区所指向的下一缓存区是否被占用包括:响应于所述当前缓存区所指向的下一缓存区的标志为不忙,认定所述当前缓存区所指向的下一缓存区未被占用;响应于所述当前缓存区所指向的下一缓存区的标志为忙,认定所述当前缓存区所指向的下一缓存区被占用。
在一些实施例中,方法还包括:
在所述存储介质中建立日志信息表,所述日志信息表包括所存储的日志数据建立的时间点、日志数据的等级以及日志数据所属的模块要求;
响应于系统初始化,通过内存读取所述日志信息表;
响应于接收到日志读取要求,在内存中对所述日志信息表进行筛选,并根据筛选结果从所述存储介质中将对应的日志数据读出。
在一些实施例中,所述响应于接收到日志读取要求,在内存中对所述日志信息表进行筛选,并根据筛选结果从所述存储介质中将对应的日志数据读出包括:在内存中对所述日志信息表中的日志数据建立的时间点、日志数据的等级以及日志数据所属的模块要求进行筛选。
在一些实施例中,所述设置用于日志数据缓存的多个缓存区包括:根据存储介质的容量以及每个缓存区的等待时间设置多个缓存区。
本发明实施例的另一个方面,还提供了一种提高日志数据读写效率的装置,所述装置包括:第一模块,配置用于设置用于日志数据缓存的多个缓存区;第二模块,配置用于将日志数据写入当前缓存区,并判断所述当前缓存区的使用容量是否达到预设阈值以及判断当前缓存区所指向的下一缓存区是否被占用;第三模块,配置用于响应于所述当前缓存区的使用容量达到预设阈值且当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
本发明实施例的另一方面,还提供一种计算机设备,包括至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行时实现上述任一方法的步骤。
本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上任一方法步骤的计算机程序。
本发明至少具有以下有益效果:本发明提出一种提高日志数据读写效率的方法、装置及设备,其中,本发明提出的一种提高日志数据读写效率的方法,在将日志数据写入存储介质的过程中,采用多个缓存区使得日志数据缓存到缓存区的过程和写入存储介质的过程分离,使得应用层未感知到日志数据写入存储介质的过程,实现对日志数据进行快速写入,提高日志数据写入存储介质的效率;在将存储介质的日志数据读取的过程中,在存储介质中建立日志信息表,根据日志信息表读取日志数据可以减少日志数据的检索过程,提高对日志数据的读取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的实施例。
图1为本发明提供的一种提高日志数据读写效率的方法的实施例的示意图;
图2为本申请提供的一种提高日志数据读写效率的方法的另一实施例的示意图;
图3为本申请提供的将日志数据写入缓存区的示意图;
图4为本申请提供的从Flash中读取日志数据的示意图;
图5为本申请提供的日志监控进程进行监控的示意图;
图6为本发明提供的一种提高日志数据读写效率的装置的实施例的示意图;
图7为本发明提供的一种计算机设备的实施例的示意图;
图8为本发明提供的一种计算机可读存储介质的实施例的示意图。
具体实施方式
以下描述了本发明的实施例。然而,应该理解,所公开的实施例仅仅是示例,并且其它实施例可以采取各种替代形式。
此外,需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。术语“包括”、“包含”或其任何其它变形旨在涵盖非排他性的包括,以使包含一系列要素的过程、方法、物品或装置不仅包括那些要素,也可以包括未明确列出的或这些过程、方法、物品或装置所固有的要素。
下面将结合附图说明本申请的一个或多个实施例。
基于以上目的,本发明实施例的第一个方面,提出了一种提高日志数据读写效率的方法的实施例。图1示出的是本发明提供的一种提高日志数据读写效率的方法的实施例的示意图。如图1所示,本发明实施例的一种提高日志数据读写效率的方法包括以下步骤:
S1、设置用于日志数据缓存的多个缓存区;
S2、将日志数据写入当前缓存区,并判断所述当前缓存区的使用容量是否达到预设阈值以及判断当前缓存区所指向的下一缓存区是否被占用;
S3、响应于所述当前缓存区的使用容量达到预设阈值且当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
根据本申请的若干实施例,方法还包括:响应于当前缓存区的使用容量在预设时间周期内未达到预设阈值,将新生成的日志数据继续写入当前缓存区。
根据本申请的若干实施例,方法还包括:
响应于超过预设时间周期当前缓存区的使用容量未达到预设阈值,判断当前缓存区所指向的下一缓存区是否被占用;
响应于所述当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区;
响应于所述当前缓存区所指向的下一缓存区被占用,设置所述当前缓存区等待所述当前缓存区所指向的下一缓存区被占用状态释放后,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
根据本申请的若干实施例,方法还包括:响应于当前缓存区的使用容量达到预设阈值且当前缓存区所指向的下一缓存区被占用,设置当前缓存区等待当前缓存区所指向的下一缓存区被占用状态释放后,将当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入当前缓存区所指向的下一缓存区。
根据本申请的若干实施例,方法还包括:配置用于标记缓存区的状态的标志;
判断当前缓存区所指向的下一缓存区是否被占用包括:响应于当前缓存区所指向的下一缓存区的标志为不忙,认定当前缓存区所指向的下一缓存区未被占用;响应于当前缓存区所指向的下一缓存区的标志为忙,认定当前缓存区所指向的下一缓存区被占用。
根据本申请的若干实施例,方法还包括:
在所述存储介质中建立日志信息表,所述日志信息表包括所存储的日志数据建立的时间点、日志数据的等级以及日志数据所属的模块要求;
响应于系统初始化,通过内存读取所述日志信息表;
响应于接收到日志读取要求,在内存中对日志信息表进行筛选,并根据筛选结果从存储介质中将对应的日志数据读出。
根据本申请的若干实施例,响应于接收到日志读取要求,在内存中对日志信息表进行筛选,并根据筛选结果从存储介质中将对应的日志数据读出包括:在内存中对日志信息表中的日志数据建立的时间点、日志数据的等级以及日志数据所属的模块要求进行筛选。
根据本申请的若干实施例,设置用于日志数据缓存的多个缓存区包括:根据存储介质的容量以及每个缓存区的等待时间设置多个缓存区。
以下给出了基于本发明的一种提高日志数据读写效率的方法的另一实施例的具体步骤。
在本实施例中,在嵌入式设备的应用场景中,将嵌入式设备的日志数据存储在Flash中。可以理解的是,嵌入式设备的应用场景只是本申请的提高日志数据读写效率的方法的适用场景中的其中一个,对于其它可以适用本申请的适用场景也在本申请的提高日志数据读写效率的方法的适用场景的范围内;同样的,将日志数据存储在Flash中也只是适用场景中的一个,本申请的提高日志数据读写效率的方法也可以将日志数据保存在其它非易失性的存储介质中。
Flash的读写速率相对CPU的运行速率要慢得多,并且一般Flash的读写次数也有限制,超过预设的读写次数,Flash发生损坏的概率会升高。因此在使用Flash保存日志数据时一般会选择将要写入的日志数据缓存在一段内存中,当数据量足够大再写入Flash中,以减少读写次数。这种方式会导致在将数据写入Flash的过程中,日志数据不能写入缓存内存,进而导致新生成的日志数据丢失或等待写入Flash完成后才可以将新生成的日志数据写入缓存内存。日志数据一般是不定长的字符串,一般包括日志头和日志数据两部分。每条日志所占的存储空间一般较小,大概几十到一百多字节,经过特定压缩算法压缩后,甚至会更小。Flash的读写一般是以页为单位,一页的大小一般是1Kb、2Kb、4Kb。如果要修改某页中的数据,需要将整页的日志数据读出来,修改完成后再将整页写回到Flash中。
在本实施例中,在将日志数据写入Flash的过程中,使用2个缓存区,即Buffer1、Buffer2,Buffer1、Buffer2的容量大小与Flash的容量大小以及Buffer1、Buffer2各自的等待时间相适应,可以理解的是,在实际应用中,使用的多个缓存区的具体数量要与Flash的容量大小以及每个缓存区各自的等待时间相适应。在本实施例中,先将日志数据缓存到Buffer1中,当Buffer1中的日志数据满一页空间或者剩余空间不足以存储一条日志数据时,将Buffer1的所有日志数据写入到Flash中,这时将应用层产生的日志数据缓存到Buffer2中,使得应用层不用感知日志数据写入Flash的动作,实现快速写入日志数据。在将日志数据从Flash中读取的过程中,为了快速读取日志数据,需要维护日志信息表,日志信息表中包含了Flash每页中存储的第一条日志的时间信息及不同等级日志的数量。当需要根据时间或者日志等级读取日志时,可以通过日志信息表来确定应该读Flash中的哪些数据。当系统开机后,应当将Flash中的日志信息表读到内存中,方便后续查询,并且在将日志数据写入Flash时同步修改日志信息表。
以下是本实施的具体的实施过程,图2示出了本申请提供的一种提高日志数据读写效率的方法的另一实施例的示意图,如图2所示,本申请提供的一种提高日志数据读写效率的方法主要包括:日志模块的初始化、日志监控进程和日志读取或写入,其中日志模块初始化分为日志信息表的维护及双缓存初始化。
(1)日志模块初始化,日志模块的初始化是为日志监控线程和日志读写做准备,日志信息表保存在Flash中指定的区域(一般是Flash起始位置),大小固定为8字节,是对其他Flash区域的一个描述。日志模块初始化时,从Flash指定区域将日志信息表读到内存中,并由日志监控线程进行维护。日志信息表中包含了本页中最早日志的时间点、日志发起模块、不同等级日志的数量等信息,保存在Flash中指定位置,固定大小。最早日志的时间用时间戳记录,日志发起模块用bitmap来记录。每个bit代表一个模块,bit位置1表示该页中包含某模块的日志数据。
双缓存的初始化是在日志模块初始化时为日志数据两块缓存区,并将两个缓存区注册到日志监控进程中。由于日志缓存区有可能被日志监控进程和日志记录API同时修改,因此需要通过互斥锁保证数据一致。
(2)日志读写过程,日志模块的对外接口是日志记录API和日志读取API,这里的日志读写是上层应用调用日志记录API和日志读取API实现记录或读取日志数据。日志数据的数据结构定义总大小是128字节,这是考虑到一般Flash的大小是整数Kb,128字节可以被整除,并且考虑到数据大小112个字节也足够描述一条日志,日志数据结构体包括日志头和日志数据本身。
图3为本申请提供的将日志数据写入缓存区的示意图,如图3所示,日志写入是将日志数据先写入到缓存区,缓存区满后由日志监控进程写入到Flash。日志写入由上层应用调用API触发,API会将日志数据按照设计的规则存入缓存(Buffer)中,采用这种API调用的方式比较简洁,API入参只需要日志等级、日志数据、日志数据长度、所属模块。其API为intlogWriteToFlash(enum LogLevel level,int module,*logData,logDataLenth),日志记录默认先记录到缓存1中,缓存1中数据存储空间不足以存储下一条日志数据时,会主动切换缓存并通知日志监控进程,如果此时另一个缓存正在被日志监控进程使用,则等待缓存可用后再切换。实现切换缓存是通过数据结构中的缓存选择器实现的,bufferSelector是LOG_BUFFER_1,则用第一个缓存区;是LOG_BUFFER_2,则用第二个缓存区;其他值是无效值。缓存切换的条件可以更改,比如缓存空间使用80%时切换,剩余20%可以在切换的缓存区可用的情况下继续缓存。
图4为本申请提供的从Flash中读取日志数据的示意图,如图4所示,日志读取一般分为全部读取和指定条件读取,指定条件中一般包含时间点、日志等级、日志发起模块等。当指定条件读取日志时,先从日志信息表中查阅该页是否有要读的日志,再决定是否读该页数据,比如像读取最近三天内,日志等级为警告及以上的日志,可以先查看Flash中指定页的日志信息表,如果时间和日志等级满足要求,再从Flash中读取数据。日志读取过程也是由上层应用调用API读取,需要明确时间点、日志等级、日志所属模块的要求,其API为struct logEntry*logReadFromFlash(enumLogLevel level,int module,u32 time,inttimeFlag,int*logSize),其中timeFlag用来补充描述时间点的含义,0表示在time时间点之后,1表在time时间点之前;logSize是从Flash中读到的满足要求的日志数据大小,单位是字节;日志等级、日志所属模块、时间点不能同时为无效值。
日志读取过程会根据上层应用的要求去日志信息表中筛选,时间点是一个很重要的筛选条件,如果对时间点没有要求,则会将所有符合日志等级及所属模块的日志信息读出来,因此三者不能同时为无效值,当对日志等级及所属模块没有要求时,就是将所有日志信息读取出来。如果没有找到符合条件的日志,该接口应当返回Null,logSize为0。若返回值不为NULL,表示该接口读到了有效日志数据并分配了一段内存,上层应用应当在合适的时机释放这段内存(内存起始地址是返回值,大小是logSize)。
(3)日志监控进程,图5为本申请提供的日志监控进程进行监控的示意图,如图5所示,日志监控进程启动后,负责监控缓存中的数据是否需要写入Flash:是否收到写入Flash的通知或者是否超时,如果在规定时间内没有收到日志需要写入Flash的通知,监控进程主动切换缓存并将缓存中的日志数据写入Flash,一般超时时间设置为2S,具体超时时间可以根据实际情况设定。
当Buffer1缓存达到切换条件时,logWriteToFlash接口会通知日志监控进程将数据写入到Flash中,同时切换缓存Buffer2,将后续新生成的日志数据保存在Buffer2中,随着运行进行,之后两个Buffer之间互相切换。
日志监控进程操作的缓存区需要被标识为Busy状态,即将日志缓存区数据结构中的pendingBuffer设置成对应的枚举值,以实现在缓存切换时检查另一个缓存是否可用,比如缓存1已经达到切换条件,需要切换到缓存2,但缓存2的pendingBuffer的值是LOG_BUFFER_2,表示缓存2正在被日志监控进程使用,这时缓存1应等待缓存2可用时再切换。
本发明的实施例的第二个方面,提出了一种提高日志数据读写效率的装置。图6示出的是本发明提供的一种提高日志数据读写效率的装置的实施例的示意图。如图6所示,本发明提供的一种提高日志数据读写效率的装置包括:第一模块011,配置用于设置用于日志数据缓存的多个缓存区;第二模块012,配置用于将日志数据写入当前缓存区,并判断所述当前缓存区的使用容量是否达到预设阈值以及判断当前缓存区所指向的下一缓存区是否被占用;第三模块013,配置用于响应于所述当前缓存区的使用容量达到预设阈值且当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
基于以上目的,本发明实施例的第三个方面,提出了一种计算机设备,图7示出的是本发明提供的一种计算机设备的实施例的示意图。如图7所示,本发明提供的一种计算机设备的实施例,包括以下模块:至少一个处理器021;以及存储器022,存储器022存储有可在处理器021上运行的计算机指令023,该计算机指令023由处理器021执行时实现如上所述的方法的步骤。
本发明还提供了一种计算机可读存储介质。图8示出的是本发明提供的一种计算机可读存储介质的实施例的示意图。如图8所示,计算机可读存储介质031存储有被处理器执行时执行以下步骤的计算机程序032。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,设置系统参数的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由处理器执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被处理器执行时,执行本发明实施例公开的方法中限定的上述功能。
此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
在一个或多个示例性设计中,功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、D0L或诸如红外线、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种提高日志数据读写效率的方法,其特征在于,包括:
设置用于日志数据缓存的多个缓存区;
将日志数据写入当前缓存区,并判断所述当前缓存区的使用容量是否达到预设阈值以及判断当前缓存区所指向的下一缓存区是否被占用;
响应于所述当前缓存区的使用容量达到预设阈值且所述当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述当前缓存区的使用容量在预设时间周期内未达到预设阈值,将新生成的日志数据继续写入所述当前缓存区。
3.根据权利要求1所述的方法,其特征在于,还包括:
响应于超过预设时间周期所述当前缓存区的使用容量未达到所述预设阈值,判断所述当前缓存区所指向的下一缓存区是否被占用;
响应于所述当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区;
响应于所述当前缓存区所指向的下一缓存区被占用,设置所述当前缓存区等待所述当前缓存区所指向的下一缓存区被占用状态释放后,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
4.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述当前缓存区的使用容量达到预设阈值且所述当前缓存区所指向的下一缓存区被占用,设置所述当前缓存区等待所述当前缓存区所指向的下一缓存区被占用状态释放后,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
5.根据权利1所述的方法,其特征在于,还包括:
配置用于标记缓存区的状态的标志;
判断当前缓存区所指向的下一缓存区是否被占用包括:响应于所述当前缓存区所指向的下一缓存区的标志为不忙,认定所述当前缓存区所指向的下一缓存区未被占用;响应于所述当前缓存区所指向的下一缓存区的标志为忙,认定所述当前缓存区所指向的下一缓存区被占用。
6.根据权利要求1所述的方法,其特征在于,还包括:
在所述存储介质中建立日志信息表,所述日志信息表包括所存储的日志数据建立的时间点、日志数据的等级以及日志数据所属的模块要求;
响应于系统初始化,通过内存读取所述日志信息表;
响应于接收到日志读取要求,在内存中对所述日志信息表进行筛选,并根据筛选结果从所述存储介质中将对应的日志数据读出。
7.根据权利要求6所述方法,其特征在于,所述响应于接收到日志读取要求,在内存中对所述日志信息表进行筛选,并根据筛选结果从所述存储介质中将对应的日志数据读出包括:
在内存中对所述日志信息表中的日志数据建立的时间点、日志数据的等级以及日志数据所属的模块要求进行筛选。
8.根据权利要求1所述的方法,其特征在于,所述设置用于日志数据缓存的多个缓存区包括:
根据存储介质的容量以及每个缓存区的等待时间设置多个缓存区。
9.一种提高日志数据读写效率的装置,其特征在于,所述装置包括:
第一模块,配置用于设置用于日志数据缓存的多个缓存区;
第二模块,配置用于将日志数据写入当前缓存区,并判断所述当前缓存区的使用容量是否达到预设阈值以及判断当前缓存区所指向的下一缓存区是否被占用;
第三模块,配置用于响应于所述当前缓存区的使用容量达到预设阈值且所述当前缓存区所指向的下一缓存区未被占用,将所述当前缓存区的日志数据写入存储介质并设置将新生成的日志数据写入所述当前缓存区所指向的下一缓存区。
10.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-8任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211447087.8A CN115718568A (zh) | 2022-11-18 | 2022-11-18 | 一种提高日志数据读写效率的方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211447087.8A CN115718568A (zh) | 2022-11-18 | 2022-11-18 | 一种提高日志数据读写效率的方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115718568A true CN115718568A (zh) | 2023-02-28 |
Family
ID=85255587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211447087.8A Pending CN115718568A (zh) | 2022-11-18 | 2022-11-18 | 一种提高日志数据读写效率的方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115718568A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303304A (zh) * | 2023-03-10 | 2023-06-23 | 深圳计算科学研究院 | 一种优化数据库日志批量写入的方法及装置 |
CN117891647A (zh) * | 2024-03-18 | 2024-04-16 | 荣耀终端有限公司 | 日志处理方法、电子设备和计算机可读存储介质 |
-
2022
- 2022-11-18 CN CN202211447087.8A patent/CN115718568A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303304A (zh) * | 2023-03-10 | 2023-06-23 | 深圳计算科学研究院 | 一种优化数据库日志批量写入的方法及装置 |
CN116303304B (zh) * | 2023-03-10 | 2024-01-16 | 深圳计算科学研究院 | 一种优化数据库日志批量写入的方法及装置 |
CN117891647A (zh) * | 2024-03-18 | 2024-04-16 | 荣耀终端有限公司 | 日志处理方法、电子设备和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115718568A (zh) | 一种提高日志数据读写效率的方法、装置及设备 | |
US9990295B2 (en) | Method for increasing cache size | |
US9747318B2 (en) | Retrieving data in a storage system using thin provisioning | |
KR102584018B1 (ko) | 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법 | |
US7360015B2 (en) | Preventing storage of streaming accesses in a cache | |
CN108647151A (zh) | 一种全闪系统元数据落盘方法、装置、设备及存储介质 | |
KR20100065786A (ko) | 빠른 파워-오프를 위한 캐시 동기화 방법 및 시스템 | |
CN112799595B (zh) | 数据处理方法、设备及存储介质 | |
CN110780994A (zh) | 一种调控内存的方法、设备及介质 | |
CN113282249B (zh) | 一种数据处理方法、系统、设备以及介质 | |
KR100703680B1 (ko) | 플래시 파일 시스템 | |
CN105915595B (zh) | 一种集群存储系统存取数据的方法以及集群存储系统 | |
CN117472285B (zh) | 固态硬盘用智能运行加速方法、计算机设备及存储介质 | |
US7062603B2 (en) | External storage device for selectively storing data between first and second recording media | |
CN113342276A (zh) | 一种日志保存方法、系统、设备以及介质 | |
KR100954603B1 (ko) | 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법 | |
JP4503500B2 (ja) | 記録装置、並びに、そのプログラムおよび記録媒体 | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
JP6760916B2 (ja) | ストレージコントローラ、ストレージアレイ装置、データ格納方法、およびプログラム | |
CN112765049B (zh) | 一种更新l2p表的方法、装置、设备及可读介质 | |
CN113805799B (zh) | Raid阵列最近写记录管理的方法、装置、设备及可读介质 | |
JP4818041B2 (ja) | 方法、装置、コンピュータ・プログラム(テープ・ストレージ・システムでマルチボリューム・データセットを処理する方法および装置) | |
CN115016733A (zh) | 一种脏数据删除方法、装置及电子设备 | |
CN113867622A (zh) | 一种快照读写速度提升的方法、装置、设备及可读介质 | |
CN110377530A (zh) | 一种基于映射表存储ssd系统数据的方法及其装置 |
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 |