数据库操作的处理方法、装置、计算机设备及存储介质与流程

文档序号:18832263发布日期:2019-10-09 03:49阅读:133来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及一种数据库操作的处理方法、装置、计算机设备及存储介质。
背景技术
::随着计算机技术的不断发展,数据库被广泛应用在各种软件应用中,通过数据库实现数据存储、查询、修改等数据处理,极大方便了对数据的集中管理。通常情况下,软件应用在进行各种数据库操作时,需要将数据库操作的结果数据从数据库加载到应用内存中,当结果数据的数据量较大时,往往会占用大量的内存空间,导致内存资源不足,进而出现运行缓慢甚至死机的情况,严重影响运行的稳定性和运行效率。技术实现要素:本发明实施例提供一种数据库操作的处理方法、装置、计算机设备及存储介质,以解决数据库操作的结果数据量过大导致内存资源不足,降低运行效率和运行稳定性的问题。一种数据库操作的处理方法,包括:若监控到数据库操作,则对所述数据库操作进行拦截,并获取所述数据库操作对应的目标指令标识;根据预设的指令标识与限制条件之间的对应关系,获取所述目标指令标识对应的目标限制条件;若所述目标限制条件不为空,则使用所述目标限制条件对所述数据库操作增加条件限制,得到所述数据库操作对应的待执行指令;执行所述待执行指令,并返回所述待执行指令的执行结果数据。一种数据库操作的处理装置,包括:拦截模块,用于若监控到数据库操作,则对所述数据库操作进行拦截,并获取所述数据库操作对应的目标指令标识;条件获取模块,用于根据预设的指令标识与限制条件之间的对应关系,获取所述目标指令标识对应的目标限制条件;条件增加模块,用于若所述目标限制条件不为空,则使用所述目标限制条件对所述数据库操作增加条件限制,得到所述数据库操作对应的待执行指令;执行模块,用于执行所述待执行指令,并返回所述待执行指令的执行结果数据。一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据库操作的处理方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据库操作的处理方法的步骤。上述数据库操作的处理方法、装置、计算机设备及存储介质中,服务端在监控到数据库操作时,对该数据库操作进行拦截,并获取该数据库操作对应的目标指令标识,根据预设的指令标识与限制条件之间的对应关系,获取该目标指令标识对应的目标限制条件,然后使用获取到的目标限制条件对该数据库操作增加条件限制,得到待执行指令,使得待执行指令在被执行时能够依据目标限制条件,减少待执行指令的执行结果数据的数据量,避免执行结果数据的数据量过大,从而降低对内存资源的占用,有效提高运行效率和运行稳定性。同时,通过对数据库操作进行拦截并增加目标限制条件的方式,能够避免对数据库操作对应的代码进行修改,从而无需重新启动,有效提高运行效率。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明一实施例中数据库操作的处理方法的一应用环境示意图;图2是本发明一实施例中数据库操作的处理方法的一流程图;图3是本发明一实施例中数据库操作的处理方法中步骤s3的一流程图;图4是本发明一实施例中数据库操作的处理方法中根据配置文件获取指令标识与限制条件之间的对应关系的一流程图;图5是本发明一实施例中数据库操作的处理方法中根据内存占用情况进行内存预警的一流程图;图6是本发明一实施例中数据库操作的处理装置的一示意图;图7是本发明一实施例中计算机设备的一示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本申请提供的数据库操作的处理方法,可应用在如图1所示的应用环境中,该应用环境包括服务端和客户端,其中,服务端和应用客户端之间通过网络进行连接,该网络可以是有线网络或者无线网络,客户端具体包括但不限于各种个人计算机、笔记本电脑、智能手机和平板电脑和便携式可穿戴设备,服务端具体均可以用独立的服务器或者多个服务器组成的服务器集群实现。客户端发起数据库操作的请求,服务端监控到数据库操作,对数据库操作进行拦截并增加条件限制的处理后,执行对应的待执行指令,并返回执行结果数据。在一实施例中,如图2所示,提供一种数据库操作的处理方法,以该方法应用在图1中的服务端为例进行说明,具体包括步骤s1至步骤s4,详述如下:s1:若监控到数据库操作,则对该数据库操作进行拦截,并获取该数据库操作对应的目标指令标识。具体地,服务端对涉及到数据库的数据库操作进行实时监控,当客户端向服务端发起数据库操作的请求时,服务端监控到该数据库操作,对该数据库操作进行拦截,并获取该数据库操作对应的指令标识,并将获取到的指令标识作为目标指令标识。其中,数据库操作包括但不限于对数据库进行查询、修改、增加、删除等数据操作。优选地,数据库操作具体可以是对数据库进行查询操作。进一步地,可以使用mybatis框架的拦截器功能完成对数据库操作的拦截处理。需要说明的是,mybatis框架的拦截器提供了拦截执行器、拦截参数、拦截结果集和拦截sql语法构建等不同的拦截处理方式,本实施例中,使用mybatis框架的拦截器提供的拦截sql语法构建的拦截处理方式实现对数据库操作的拦截处理。其中,mybatis是一个支持结构化查询语言(structuredquerylanguage,sql)、存储过程以及高级映射的持久层框架。mybatis消除了绝大部分的java数据库连接(javadatabaseconnectivity,jdbc)代码和参数的手工设置,以及对结果集的检索封装。mybatis可以使用简单的可扩展标记语言(extensiblemarkuplanguage、xml)或注解进行配置和原始映射,将接口和java的普通java对象(plainoldjavaobjects,pojo)映射成数据库中的记录。mybatis能够实现对执行sql语句时的输入输出数据进行更为方便有效的管理,并能够方便快捷的获取sql语句的执行结果。在本实施例中,每条数据库操作均对应有指令标识,指令标识为预先设置的数据库操作的唯一标识信息,指令标识可以用于标识某一种操作类型的数据库操作,也可以用于标识某一个具体的数据库操作。例如,若指令标识标识查询操作,则对数据库进行查询操作的每一条select语句均对应同一个指令标识,若指令标识标识删除操作,则对数据库进行删除操作的每一条delete语句均对应同一个指令标识,若指令标识标识某一个具体的数据库操作,则该指令标识只唯一对应该条数据库操作语句。在一具体实施例中,在mybatis框架中可以使用sqlid作为指令标识,在mybatis框架中不同mapper文件中的数据库操作语句对应的sqlid不同,在每个mapper文件中相同操作类型的数据库操作语句对应同一个sqlid,通过mapper文件和sqlid可以实现对每个数据库操作设置相应的指令标识。例如,操作类型为查询操作的两条select语句,其查询操作的操作对象不同,即语句参数不同,若这两条select语句被放置在同一个mapper文件中,则这两条select语句对应同一个sqlid,若这两条select语句被放置在两个不同的mapper文件中,则这两条select语句分别对应不同的sqlid。s2:根据预设的指令标识与限制条件之间的对应关系,获取目标指令标识对应的目标限制条件。在本实施例中,预先设置有指令标识与限制条件之间的对应关系,该对应关系用于定义对指令标识对应的数据库操作采取何种限制条件。其中,限制条件具体可以是对数据库操作的不同操作类型设置不同的限制条件,例如,查询操作的限制条件可以是限制数据库操作返回的数据量或者数据条数,对批量插入或批量更新这类操作,其限制条件可以是限制分批操作的数据量或者数据条数。限制条件还可以是对某一个具体的数据库操作设置相应的限制条件,例如,若数据库操作为查询数据表a中字段b等于c的记录,则可以对该具体的数据库操作设置对应的限制条件,例如,限制返回的记录条数不超过100条。限制条件还可以是对数据库操作的不同操作对象设置不同的限制条件,操作对象具体可以是数据表或数据文件,例如,对数据表a的查询操作的限制条件可以是限制涉及数据表a的数据库操作的返回数据量或者数据条数,对对数据表a的批量插入或批量更新这类操作,其限制条件可以是限制对数据表a进行分批操作的数据量或者数据条数。具体地,服务端根据指令标识与限制条件之间预设的对应关系,获取目标指令标识对应的限制条件,并将获取到的限制条件作为目标限制条件。需要说明的是,若在预设的对应关系中没有目标指令标识对应的限制条件,即,该数据库操作没有被设置相应的限制条件,则得到的目标限制条件为空,若目标限制条数为空,则不继续执行后续步骤。s3:若目标限制条件不为空,则使用目标限制条件对数据库操作增加条件限制,得到该数据库操作对应的待执行指令。具体地,当服务端通过步骤s2得到的目标限制条件不为空时,在数据库操作对应的执行语句中增加该目标限制条件,得到该数据库操作对应的待执行指令。例如,若目标限制条件为限制select操作返回的数据条数不超过10000条,假设数据库操作对应的执行语句为“selectconfig_name,config_valuefromcmu_config”,则使用该目标限制条件对该执行语句增加条件限制后,得到的待执行指令为“select*from(selectconfig_name,config_valuefromcmu_config)limit_table_name_corelimit10000”。又例如,若目标限制条件为限制有分页的select操作返回的数据条数不超过10条,假设数据库操作对应的执行语句为“selectconfig_name,config_valuefromcmu_configoffset0limit100”,则使用该目标限制条件对该执行语句增加条件限制后,得到的待执行指令为“select*from(selectconfig_name,config_valuefromcmu_configoffset0limit100)limit_table_name_corelimit10”。优选地,使用mybatis框架的拦截器功能完成对数据库操作增加目标限制条件的处理。s4:执行待执行指令,并返回待执行指令的执行结果数据。具体地,服务端执行增加了条件限制的待执行指令,得到该待执行指令的执行结果数据,将该执行结果数据加载到应用内存的内存空间中,并向客户端返回执行结果数据。由于待执行指令增加了条件限制,使得得到的执行结果数据的数据量能够被限定在预期的可控范围内,因此,在将执行结果数据加载到内存空间后,不会造成内存空间被过渡占用,导致运行缓慢甚至死机的情况,从而能够提高服务端的运行稳定性和运行效率。需要说明的是,若增加了条件限制的待执行指令的执行结果数据的数据量仍然过大,仍然会导致内存资源不足时,可以通过修改目标限制条件的方式对目标限制条件进行动态配置,并且不需要重新启动和重新部署,提高运行效率。本实施例中,服务端在监控到数据库操作时,对该数据库操作进行拦截,并获取该数据库操作对应的目标指令标识,根据预设的指令标识与限制条件之间的对应关系,获取该目标指令标识对应的目标限制条件,然后使用获取到的目标限制条件对该数据库操作增加条件限制,得到待执行指令,使得待执行指令在被执行时能够依据目标限制条件,减少待执行指令的执行结果数据的数据量,避免执行结果数据的数据量过大,从而降低对内存资源的占用,有效提高运行效率和运行稳定性。同时,通过对数据库操作进行拦截并增加目标限制条件的方式,能够避免对数据库操作对应的代码进行修改,从而无需重新启动,有效提高运行效率。在一实施例中,如图3所示,在步骤s3中,使用目标限制条件对数据库操作增加条件限制,得到该数据库操作对应的待执行指令,具体包括步骤s31至步骤s32,详述如下:s31:获取数据库操作对应的数据库类型。具体地,不同的软件应用其涉及的数据库操作所在的数据库系统的数据库类型可能并不相同,例如,数据库系统的数据库类型可以是oracle、postgresql、mysql等不同的数据库。服务端可以根据数据库操作所在的数据库系统的标识信息,确定该数据库系统的数据库类型。s32:根据数据库类型对应的预设拦截语法,将数据库操作和目标限制条件按照预设拦截语法进行组合,得到待执行指令。具体地,不同数据库类型的数据库系统在对数据库操作拦截处理后的执行语句的语法要求不同,服务端按照数据库类型对应的预设拦截语法的要求,将目标限制条件限定到数据库操作对应的执行语句中,得到该数据库类型的数据库系统能够识别并正确执行的待执行语句。例如,假设目标限制条件为限制select操作返回的数据条数不超过1000条,数据库操作对应的执行语句为“selectconfig_name,config_valuefromcmu_config”。在oracle数据库系统中,其对应的预设拦截语法为“select*from(p)lmt_table_namewhererownum<n”,其中,p为数据库操作对应的执行语句,n为限制的最大返回数据条数,因此,按照该预设拦截语法对数据库操作和目标限制条件进行组合后,得到的待执行指令为“select*from(selectconfig_name,config_valuefromcmu_config)limit_table_namewhererownum<1000”;而在postgresql数据库系统中,其对应的预设拦截语法为“select*from(p)lmt_table_namelimitn”,因此,按照该预设拦截语法对数据库操作和目标限制条件进行组合后,得到的待执行指令为“select*from(selectconfig_name,config_valuefromcmu_config)limit_table_namelimit1000”。本实施例中,通过获取数据库操作所在的数据库系统的数据库类型,并按照该数据库类型对应的预设拦截语法,将数据库操作和目标限制条件进行组合,得到能够被该数据路类型的数据库系统识别并正确执行的待执行指令,实现了根据数据库类型不同灵活构建满足不同数据库类型的数据库执行语句,使得构建出的数据库执行语句能够被顺利执行,避免因对数据库操作拦截而造成执行错误,确保执行的正确性。在一实施例中,如图4所示,在步骤s1之前,还可以根据配置文件获取指令标识与限制条件之间的对应关系,具体包括步骤s01至步骤s02,详述如下:s01:获取预设的配置文件。具体地,配置文件用于配置指令标识与限制条件之间的对应关系,该对应关系可以根据用户的需要进行预先配置,并将该对应关系按照预设的标签结构保存在预设的配置文件中。例如,用户可以设置对select语句的返回数据条数不超过100条,则将select语句的指令标识和返回数据条数不超过100条,对应保存在配置文件中。其中,预设的配置文件具体可以是xml格式的文件。s02:按照预设的标签结构对配置文件进行解析,获取所述指令标识与所述限制条件之间的所述对应关系。具体地,预设的标签结构可以包括用于标识指令标识与限制条件之间对应关系的目标标签,以及该目标标签对应的内容结构,服务端对步骤s01获取到的配置文件进行遍历,查询目标标签,并从查询到的目标标签限定的文件内容中,按照该目标标签对应的内容结构,解析出指令标识与限制条件之间的对应关系。本实施例中,通过预设的配置文件配置指令标识与限制条件之间的对应关系,并在对数据库操作进行拦截之前,根据配置文件中预设的标签结构解析出指令标识与限制条件之间的对应关系,使得在对数据库操作进行拦截后,能够根据该对应关系进行拦截处理,这种通过配置文件配置指令标识对应的限制条件的方式,能够根据数据库操作的执行结果随时调整限制条件,实现对限制条件的动态配置,并且无需重新启动以及重新发布涉及的应用,从而有效提高执行效率。在一实施例中,在步骤s2之后,并且在步骤s4之前,还包括对目标限制条件为空的情况的处理,详述如下:若目标限制条件为空,则直接将数据库操作对应的指令作为待执行指令。具体地,若在预设的对应关系中没有目标指令标识对应的限制条件,即,该数据库操作没有被设置相应的限制条件,则得到的目标限制条件为空。当目标限制条数为空时,说明不需要对该数据库操作对应的执行语句进行拦截修改,因此,直接将该数据库操作对应的执行语句,即对应的指令,作为待执行指令。本实施例中,通过对目标限制条件为空时,直接将数据库操作对应的指令作为待执行执行,以实现在该数据库操作没有被设置相应的限制条件时,能够顺利执行该数据库操作对应的指令,保证流程的完整性。在一实施例中,如图5所示,在步骤s4之后,还可以根据内存占用情况进行内存预警,具体包括步骤s51至步骤s53,详述如下:s51:获取当前的内存空闲容量和内存总容量。具体地,服务端执行待执行指令,得到该待执行指令的执行结果数据,并将该执行结果数据加载到应用内存的内存空间之后,获取当前应用内存中剩余的空闲内存的容量,即内存空闲容量,以及应用内存的内存总容量。s52:计算内存空闲容量和内存总容量之间的比值。具体地,计算步骤s51得到的内存空闲容量和内存总容量之间的比值。例如,若内存空闲容量为500mb,内存空闲容量为10000mb,则比值为5%。s53:若比值小于预设的占比阈值,则发出内存预警。具体地,若步骤s52得到的比值小于预设的占比阈值,则说明应用内存中剩余的空闲内存资源紧张,此时,服务端发出内存资源不足的预警提示信息。其中,预设的占比阈值具体可以根据实际应用的需要进行设置,例如,占比阈值可以设置为10%,当比值小于10%时,说明在将执行结果数据加载到应用内存的内存空间之后,该应用内存剩余的空闲内存资源仅剩下内存总容量的10%。内存预警的预警提示信息的具体内容可以包括当前的数据库操作的具体内容,以及当前的内存空闲资源等。服务端发出内存预警的方式可以是将预警信息发送到预设的预警平台,也可以是通过邮件或者即时消息等方式发送给预设的接收方,该接收方可以是预设的维护人员等。接收方接收到内存预警后,可以根据内存预警中提示信息的具体内容,及时采取释放内存、或者修改配置文件中相关的限制条件等维护措施,避免内存资源被耗尽。本实施例中,在通过对数据库操作进行拦截处理,增加条件限制,以降低对内存资源占用的基础上,进一步在执行待执行指令后,计算当前的内存空闲容量和内存总容量之间的比值,并在比值小于预设的占比阈值时发出内存资源即将耗尽的预警提示,以使得相关维护人员能够及时采取维护措施,释放内存,避免运行缓慢甚至死机的情况发生,从而进一步提高了运行的稳定性和运行效率。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。在一实施例中,提供一种数据库操作的处理装置,该数据库操作的处理装置与上述实施例中数据库操作的处理方法一一对应。如图6所示,该数据库操作的处理装置包括:拦截模块10、条件获取模块20、条件增加模块30和执行模块40。各功能模块详细说明如下:拦截模块10,用于若监控到数据库操作,则对数据库操作进行拦截,并获取数据库操作对应的目标指令标识;条件获取模块20,用于根据预设的指令标识与限制条件之间的对应关系,获取目标指令标识对应的目标限制条件;条件增加模块30,用于若目标限制条件不为空,则使用目标限制条件对数据库操作增加条件限制,得到数据库操作对应的待执行指令;执行模块40,用于执行待执行指令,并返回待执行指令的执行结果数据。进一步地,条件增加模块30包括:类型获取子模块301,用于获取数据库操作对应的数据库类型;组合子模块302,用于根据数据库类型对应的预设拦截语法,将数据库操作和目标限制条件按照预设拦截语法进行组合,得到待执行指令。进一步地,数据库操作的处理装置还包括:配置获取模块51,用于获取预设的配置文件;文件解析模块52,用于按照预设的标签结构对配置文件进行解析,获取指令标识与限制条件之间的对应关系。进一步地,数据库操作的处理装置还包括:条件获取失败模块60,用于若目标限制条件为空,则直接将数据库操作对应的指令作为待执行指令。进一步地,数据库操作的处理装置还包括:容量获取模块71,用于获取当前的内存空闲容量和内存总容量;比值计算模块72,用于计算内存空闲容量和内存总容量之间的比值;预警模块73,用于若比值小于预设的占比阈值,则发出内存预警。关于数据库操作的处理装置的具体限定可以参见上文中对于数据库操作的处理方法的限定,在此不再赘述。上述数据库操作的处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库操作的处理方法。在一实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中数据库操作的处理方法的步骤,例如处理器执行计算机程序时实现如下步骤:若监控到数据库操作,则对数据库操作进行拦截,并获取数据库操作对应的目标指令标识;根据预设的指令标识与限制条件之间的对应关系,获取目标指令标识对应的目标限制条件;若目标限制条件不为空,则使用目标限制条件对数据库操作增加条件限制,得到数据库操作对应的待执行指令;执行待执行指令,并返回待执行指令的执行结果数据。或者,处理器执行计算机程序时实现上述实施例中数据库操作的处理装置的各模块/单元的功能,例如图6所示模块10至模块40的功能。为避免重复,此处不再赘述。在一实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中数据库操作的处理方法,例如计算机程序被处理器执行时实现如下步骤:若监控到数据库操作,则对数据库操作进行拦截,并获取数据库操作对应的目标指令标识;根据预设的指令标识与限制条件之间的对应关系,获取目标指令标识对应的目标限制条件;若目标限制条件不为空,则使用目标限制条件对数据库操作增加条件限制,得到数据库操作对应的待执行指令;执行待执行指令,并返回待执行指令的执行结果数据。或者,该计算机程序被处理器执行时实现上述装置实施例中数据库操作的处理装置中各模块/单元的功能。为避免重复,此处不再赘述。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1