一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据库日志的存储方法、数据库日志的分析方法及装置与流程

2022-07-31 03:21:00 来源:中国专利 TAG:
1.本说明书一个或多个实施例涉及数据库领域,尤其涉及数据库日志的存储方法、数据库日志的分析方法及装置。
背景技术
::2.数据库系统是当前很多行业,例如金融、商业、交通等行业信息化的基础设施,数据库系统的性能是这些行业可以有效向用户提供正常服务的保障。数据库系统在运行中,通常会产生大量的,用于记录数据库系统运行中,发生的例如事件和操作的数据库日志。基于这些日志可以对数据库运行的状况进行分析。目前,对数据库日志进行存储和分析的方案,通常需要消耗较多的计算资源,从而可能导致数据库系统的性能的下降。3.因此,为了降低对数据库日志进行存储和分析的资源开销,需要一种新的数据库日志的存储方法,以及其对应的数据库日志的分析方法。技术实现要素:4.本说明书中的实施例旨在提供一种新的数据库日志的存储方法、数据库日志的分析方法及装置,通过该方法可以将数据库系统运行中产生的数据库日志,保存在数据库本身预建的日志数据表中。然后,可以通过直接访问日志数据表,对数据库日志进行查询和分析。从而,可以减少在进行数据库日志存储和分析过程中,由于将数据库日志保存到磁盘存储文件中,再从磁盘文件中读取、解析并装载到外部日志分析系统带来的,大量外部文件访问消耗和文件解析消耗,解决现有技术中的不足。5.根据第一方面,提供了一种数据库日志的存储方法,包括:获取所述数据库的即时日志信息;执行第一写入操作,用以将所述即时日志信息写入在所述数据库中预先建立的系统日志表中。6.在一种可能的实施方式中,所述方法还包括:若所述第一写入操作执行失败,执行第二写入操作,用以将所述即时日志信息写入文本形式的日志文件。7.在一种可能的实施方式中,所述方法还包括:在预定的时间范围内,读取所述日志文件中保存的日志文本;执行第三写入操作,用以将所述日志文本解析并写入所述系统日志表中。8.在一种可能的实施方式中,所述方法还包括:在所述第三写入操作执行成功的情况下,删除所述日志文件。9.在一种可能的实施方式中,所述预先建立的系统日志表,为所述数据库首次初始化时建立。10.在一种可能的实施方式中,所述系统日志表的字段包括:日志产生时间、数据库线程号、traceid、数据库模块名称、日志相关代码位置、日志消息、详细信息中的一种或多种。11.在一种可能的实施方式中,所述系统日志表为sstable表。12.第二方面,提供一种数据库日志的分析方法,包括:从第一方面所述的系统日志表中,读取日志信息;根据所述日志信息,进行预定类型的日志分析。13.在一种可能的实施方式中,所述根据所述日志信息,进行预定类型的日志分析,包括:通过预先设置的sql语句集,根据所述日志信息,进行预定类型的日志分析。14.第二方面,提供一种数据库日志的存储装置,包括:日志信息获取单元,配置为,获取所述数据库的即时日志信息;日志保存单元,配置为,执行第一写入操作,用以将所述即时日志信息写入在所述数据库中预先建立的系统日志表中。15.在一种可能的实施方式中,日志保存单元,进一步配置为:若所述第一写入操作执行失败,执行第二写入操作,用以将所述即时日志信息写入文本形式的日志文件。16.在一种可能的实施方式中,日志保存单元,进一步配置为:在预定的时间范围内,读取所述日志文件中保存的日志文本;执行第三写入操作,用以将所述日志文本解析并写入所述系统日志表中。17.在一种可能的实施方式中,日志保存单元,进一步配置为:在所述第三写入操作执行成功的情况下,删除所述日志文件。18.在一种可能的实施方式中,所述预先建立的系统日志表,为所述数据库首次初始化时建立。19.在一种可能的实施方式中,所述系统日志表的字段包括:日志产生时间、数据库线程号、traceid、数据库模块名称、日志相关代码位置、日志消息、详细信息中的一种或多种。20.在一种可能的实施方式中,所述系统日志表为sstable表。21.第四方面,提供一种数据库日志的分析装置,包括:日志提取单元,配置为,从权利要求1中所述的系统日志表中,读取日志信息;日志分析单元,配置为,根据所述日志信息,进行预定类型的日志分析。22.在一种可能的实施方式中,日志分析单元,进一步配置为,通过预先设置的sql语句集,根据所述日志信息,进行预定类型的日志分析。23.根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一、第二方面所述的方法。24.根据第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一、第二方面所述的方法。25.利用以上各个方面中的方法、装置、计算设备、存储介质中的一个或多个,可以大大减少数据库日志保存或分析的过程中,产生的外部文件访问消耗和/或外部文件解析消耗。附图说明26.为了更清楚说明本发明实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。27.图1示出常规的数据库日志的存储方法的原理示意图;图2示出根据本说明书实施例的一种数据库日志的存储方法的原理示意图;图3示出根据本说明书实施例的一种数据库日志的存储方法的流程图;图4示出根据本说明书实施例的一种数据库日志的分析方法的流程图;图5示出根据本说明书实施例的一种数据库日志的存储装置的结构图;图6示出根据本说明书实施例的一种数据库日志的分析装置的结构图。具体实施方式28.下面将结合附图,对本发明书提供的方案进行描述。29.如前所述,当前数据库系统是很多行业,例如金融、商业、交通等行业信息化的基础设施,数据库系统的性能是这些行业可以有效向用户提供正常服务的保障。现在的数据库系统,在运行中通常会产生大量的、用于记录数据库系统运行中发生的例如事件和操作的数据库日志。这些数据库日志,通常会存放在存储介质(例如磁盘)中的日志文件中,以便后期根据这些数据库日志,进行各种类型的日志分析,例如查询语句执行状况分析、数据库运行错误或警告分析、系统运行状态分析等。30.图1示出常规的数据库日志的存储方法的原理示意图。如图1所示,为现有的对于数据库日志进行存储和分析的技术方案。通常,是将各种数据库组件产生的各种类型的日志信息,写入文本形式的、并存放在存储介质(例如磁盘)中的日志文件。在不同的实施例中,可以采用不同的具体机制将日志写入上述日志文本文件。例如,在一个实施例中,可以将日志信息先放入内存中的缓冲区,在日志信息填满缓冲区时,再将其写入文本文件中。其后,在希望进行日志分析时,可以通过外部日志采集组件读取这些文本文件,并对文本文件进行解析,获取其中日志信息后并将其导入外部的日志分析系统,然后基于日志分析系统,进行各种类型的日志分析。31.这种方案存在的问题在于:一方面,主要通过文本文件存储日志,但是文本文件通常体积较大,尤其在日志数据量较大时,存储成本较高。另一方面,主要通过外部日志分析系统分析日志,并依赖外部日志采集组件从文本文件中读取、解析日志信息,并将其导入日志分析系统,过程中存在日志导入和解析的开销,并且外部依赖(外部日志采集组件和外部日志分析系统)的存在增加了系统维护代价。此外,需要注意的,对于数据库的实际应用而言,通常难以基于文本文件本身,进行高效的日志分析。其主要原因在于,基于文本文件难以进行大规模(数据库日志通常数量很大)、或者较复杂(例如进行多维度的数据分析)的数据分析,其计算效率较差,消耗的计算资源(例如内存)也很大,因此往往是实际应用中难以承受的。32.为了解决上述技术问题,本说明书实施例提供了一种数据库日志的存储方法。图2示出根据本说明书实施例的一种数据库日志的存储方法的原理示意图。如图2所示,在该实施例的存储方案中,将各种数据库组件产生的各种类型的日志信息,写入数据库中预先建立的、用于保存日志的日志表中。在不同的实施例中,日志信息的收集和写入数据表,也可以具有不同的具体机制。例如,在一个实施例中,也可以将日志信息先放入内存中的缓冲区,当日志信息填满缓冲区时,将其写入日志表中。在将当前缓冲区中的日志信息均写入日志表后,可以清空缓存区,使其可以接受后续的日志信息。此后,在希望进行不同具体类型(例如,数据库运行状态分析、运行警报或运行错误分析等)的日志分析时,可以通过数据库中本身具有的数据查询和数据分析功能(例如,可以通过数据库系统支持的单条查询语句进行数据查询,还可以通过包括sql语句集合的sql程序或存储过程,进行复杂数据查询和复杂数据分析),根据日志表中保存的日志信息,进行不同具体类型的日志分析。33.该方法具有如下优点:一方面,将数据库系统产生的日志信息直接存放在数据库自身的数据表中,避免了对外部组件(外部文件访问组件)的依赖,降低运维复杂度和日志输出导入的开销。第二方面,还可以利用数据库自身的压缩能力,对日志数据表进行压缩,大幅降低了系统日志的存储成本。第三方面,可以方便利用数据库本身的数据查询和分析功能,对日志数据表中的日志信息进行查询和分析,而无须依赖外部日志分析系统,进一步避免了对外部组件(外部日志分析系统)的依赖,降低运维复杂度和日志输出导入的开销。34.下面进一步阐述该方法的详细过程。图3示出根据本说明书实施例的一种数据库日志的存储方法的流程图。如图3所述,该方法至少包括如下步骤:步骤31,获取数据库的即时日志信息;步骤32,执行第一写入操作,用以将即时日志信息写入在数据库中预先建立的系统日志表中。35.首先,在步骤31,获取数据库的即时日志信息。在不同的实施例中,所述数据库可以是不同具体类型的数据库,本说明书对此不做限制。在一个实施例中,所述数据库可以为关系型数据系统。在另一个实施例中,所述数据库可以为分布式关系型数据系统。36.即时日志信息,是指数据库系统实时产生的日志信息,这些日志信息例如可以包括数据库系统当前时刻(或时间区间)的运行状态信息、sql(structuredquerylanguage,结构化查询语言)语句执行信息,事务执行信息、系统错误(error)或警告(warn)信息等等。在不同的实施例中,可以产生不同类型的日志信息。并且,通常不同的类型的数据库中,可以具有产生数据库日志的不同内部组件。例如,例如,在一个实施例中,所述内部组件可以是存储管理组件、查询及优化组件、内存和存储同步组件、元数据管理组件、集群状态检测组件、容错和故障恢复组件、数据备份与恢复组件、资源隔离组件、权限管理组件、数据访问接口组件中的一种或多种。本说明书,对于获取的何种具体数据库的何种具体类型即时日志信息,或由何种具体数据库组件产生,均不做限制。37.这些产生的日志信息,在不同的实施例中,可以用于不同的具体目的,例如数据库运行状态分析、查询语句执行状态分析、事务执行状况分析,或用于数据恢复等。本说明书对于获取的何种具体类型的即时日志信息,不做限制。38.在不同的实施例中,可以通过不同的具体方式,获取即时日志信息。例如,在一个实施例中,可以从即时日志信息产生的具体的数据库组件获取。在一个实施例中,产生即时日志信息的数据库组件,将其产生的即时日志信息先放入内存中的缓冲区。因此,例如当缓冲区被填满时,可以从缓冲区中获取其中的即时日志信息。39.在获取即时日志信息之后,在步骤32,执行第一写入操作,用以将所述即时日志信息写入在所述数据库中预先建立的系统日志表中。40.表(table,或称数据表),是数据库中用来存储数据的对象,是有结构的数据的集合。该步骤中,预先建立的系统日志表,即预先在所述数据库中建立的用于结构化保存即时日志信息的数据表。在不同的实施例中,系统日志表可以具有不同的具体表结构。例如,在一个实施例中,所述系统日志表中的字段可以包括:日志产生时间、数据库线程号、traceid、数据库模块名称、日志相关代码位置、日志消息、详细信息中的一种或多种。41.预先建立的系统日志表,可以具有不同的建立方式。在一个实施例中,所述预先建立的系统日志表,可以为所述数据库首次初始化时建立。具体的,例如可以通过数据库首次初始化时,通过执行一条建表语句或存储过程创建所述系统日志表。42.如上所述,在不同的实施例中,可以采用不同具体类型的数据库,而不同类型的数据库可以支持不同具体类型的数据表。因此,在不同的实施例中,可以根据其具体采用的数据库,确定所述系统日志表为何种具体类型的数据表。在一个实施例中,系统日志表可以为sstable表。在一个具体的例子中,还可以进一步,利用对于sstable的压缩机制,对系统日志表进行压缩,降低系统日志表所消耗的存储空间,进一步减少数据库的存储成本。而相对于传统的将数据库日志保存在文本文件中的方案,更加可以大大减少保存数据库日志所消耗的存储空间。43.在实际生产场景中,对于数据库中的数据表的写入,存在因系统运行中的异常而导致执行失败的可能性,例如因为数据表写入缓冲区当前已满、或数据表的目标分区当前不可用,而导致的数据表写入失败。为了在写入系统日志表失败时,不丢失即时日志信息,可以在这种情况下,先将即时日志信息保存到磁盘文件中,例如在磁盘文本文件中暂时保存。因此,在一个实施例中,若所述第一写入操作执行失败,可以执行第二写入操作,用以将所述即时日志信息写入文本形式的日志文件。然后,在运行异常恢复后,例如在上述写入缓冲区清空或目标分区恢复可用后,则可以将磁盘文本文件中暂时保存的日志信息,再写入系统日志表中,从而保证系统日志表中可以存储全量数据库日志。在不确定异常是否恢复的情况下,可以以定时轮询的方式,对系统日志表进行该写入操作,直至写入成功。因此,在一个实施例中,可以在预定的时间范围内,读取所述日志文件中保存的日志文本;执行第三写入操作,用以将所述日志文本解析并写入所述系统日志表中。在一个具体实施例中,可以在所述第三写入操作执行成功的情况下,删除所述日志文件。44.根据另一方面的实施例,还提供一种数据库日志的分析方法。图4示出根据本说明书实施例的一种数据库日志的分析方法的流程图,如图4所示,该方法至少包括如下步骤:在步骤41,从上述的系统日志表中,读取日志信息;该步骤中系统日志表和日志信息,即步骤31中所述的系统日志表和保存到其中的即时日志信息,详细说明参见对于步骤41的描述,在此不再赘述。45.在步骤42,根据所述日志信息,进行预定类型的日志分析。46.在不同的实施例中,可以根据不同的具体日志信息,进行不同具体类型的日志分析,本说明书对此不作限定。在一个实施例中,例如可以是sql语句执行状况分析、数据库运行错误或警告分析、系统运行状态分析、事务执行状况分析中的一种或多种。47.在不同的实施例中,可以通过数据库中本身具有的不同的具体数据查询和数据分析功能进行日志分析。在一个实施例中,可以通过数据库系统支持的查询语句进行数据查询和分析。在另一个实施例中,还可以通过包括sql语句集合的sql程序或存储过程,进行复杂数据查询和复杂数据分析。因此,在一个具体的实施例中,可以通过预先设置的sql语句集,根据所述日志信息,进行预定类型的日志分析。48.综上所述,本说明书实施例提供的数据库日志的存储方法、以及其对应的数据库日志的分析方法,其优点的本质在于:将数据库系统产生的日志信息直接存放在数据库自身的数据表中,从而可以利用数据库系统本身支持的高效存储和数据分析能力,降低数据库日志的存储成本,以及降低数据库日志分析的外部组件依赖,进而降低运维复杂度和数据输出导入外部组件的运行开销。49.根据另一方面的实施例,还提供一种数据库日志的存储装置。图5示出根据本说明书实施例的一种数据库日志的存储装置的结构图,如图5所示,该装置500包括:日志信息获取单元51,配置为,获取所述数据库的即时日志信息;日志保存单元52,配置为,执行第一写入操作,用以将所述即时日志信息写入在所述数据库中预先建立的系统日志表中。50.在一个实施例中,日志保存单元,可以进一步配置为:若所述第一写入操作执行失败,执行第二写入操作,用以将所述即时日志信息写入文本形式的日志文件。51.在一个实施例中,日志保存单元,可以进一步配置为:在预定的时间范围内,读取所述日志文件中保存的日志文本;执行第三写入操作,用以将所述日志文本解析并写入所述系统日志表中。52.在一个实施例中,日志保存单元,可以进一步配置为:在所述第三写入操作执行成功的情况下,删除所述日志文件。53.在一个实施例中,所述预先建立的系统日志表,可以为所述数据库首次初始化时建立。54.在一个实施例中,所述系统日志表的字段可以包括:日志产生时间、数据库线程号、traceid、数据库模块名称、日志相关代码位置、日志消息、详细信息中的一种或多种。55.在一个实施例中,所述系统日志表可以为sstable表。56.根据另一方面的实施例,还提供一种数据库日志的分析装置。图6示出根据本说明书实施例的一种数据库日志的分析装置的结构图,如图6所示,该装置600包括:日志提取单元61,配置为,从权利要求1中所述的系统日志表中,读取日志信息;日志分析单元62,配置为,根据所述日志信息,进行预定类型的日志分析。57.在一个实施例中,日志分析单元,可以进一步配置为,通过预先设置的sql语句集,根据所述日志信息,进行预定类型的日志分析。58.本说明书又一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。59.本说明书再一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。60.需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。61.本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。62.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献