发明内容
有鉴于此,为了解决上述技术问题,本申请提出以下技术方案:
一方面,本申请提出了一种数据库参数调整方法,所述方法包括:
获得针对目标数据库的参数调整请求;
根据所述参数调整请求获取所述目标数据库的当前状态信息;
将所述当前状态信息输入参数调优强化模型,得到所述当前状态信息对应的调优激励参数和候选数据库参数;其中,所述参数调优强化模型是基于多组数据库样本参数训练得到的,所述数据库样本参数为基于初始数据库参数每次进行性能优化迭代所筛选得到的;
若所述候选数据库参数未满足数据库性能条件,通过所述参数调优强化模型基于所述调优激励参数进行循环迭代,直至所述参数调优强化模型输出的候选数据库参数满足所述数据库性能条件;
以满足所述数据库性能条件的候选数据库参数,作为所述目标数据库的目标推荐参数。
在一些实施例中,所述参数调优强化模型的训练过程包括:构建针对目标数据库的第一数据库参数集,所述第一数据库参数集包含有多组初始数据库参数;
对所述多组初始数据库参数进行性能优化迭代,筛选每次性能优化迭代中的第一类数据库参数组至下一次性能优化迭代,直至满足迭代终止条件,得到多组数据库样本参数;其中,所述第一类数据库参数组包括数据库性能指标达到性能优化阈值的一组或多组数据库参数;所述数据库性能指标是将所述数据库参数应用于所述目标数据库得到的;
获取所述多组数据库样本参数应用于所述目标数据库各自的样本状态信息;
基于所述多组数据库样本参数和多组样本状态信息,对深度强化学习网络进行循环训练,直至满足训练终止条件,将最终训练得到的深度强化学习网络确定为参数优化强化模型。
在一些实施例中,所述对所述多组初始数据库参数进行性能优化迭代,筛选每次性能优化迭代中的第一类数据库参数组至下一次性能优化迭代,直至满足性能优化迭代终止条件,得到多组数据库样本参数,包括:
获取所述多组初始数据库参数各自的数据库性能指标;
利用所述数据库性能指标,筛选所述多组初始数据库参数中的第一类数据库参数组;
依据所述第一类数据库参数组,构建第二类数据库参数组;
由所述第一类数据库参数组与所述第二类数据库参数组构成第二数据库参数集;其中,所述第二数据库参数集与所述第一数据库参数集所包含的数据库参数组数相同;
若不满足性能优化迭代终止条件,继续对所述第二数据库参数集包含的多组数据库参数进行性能优化迭代;
若满足所述性能优化迭代终止条件,将最后一次性能优化迭代得到的数据库参数确定为数据库样本参数。
在一些实施例中,所述获取所述多组初始数据库参数各自的数据库性能指标,包括:
将所述多组初始数据库参数应用于所述目标数据库,得到相应的数据库性能向量;
对所述数据库性能向量包含的多个数据库性能值进行加权求和,得到相应组初始数据库参数的数据库性能指标;
所述依据所述第一类数据库参数组,构建第二类数据库参数组,由所述第一类数据库参数组与所述第二类数据库参数组构成第二数据库参数集,包括:
依据所述第一类数据库参数组的数据库性能指标,确定所述第一类数据库参数组中的第三类数据库参数组;其中,所述第三类数据库参数组中不包含所述第一类数据库参数组中最高数据库性能指标对应的数据库参数组;
对所述第三类数据库参数组包含的不同组数据库参数进行参数交叉替换处理,得到第二类数据库参数组;
对所述第一类数据库参数组和所述第二类数据库参数组中的第四类数据库参数组进行参数突变处理;
由参数突变处理后的数据库参数组、未参与所述参数突变处理的一组数据库参数,以及所述第一类数据库参数组构成第二数据库参数集;
其中,所述未参与所述参数突变处理的一组数据库参数是指所述第一类数据库参数组和所述第二类数据库参数组中,具有最高数据库性能指标的一组数据库参数。
在一些实施例中,基于所述多组数据库样本参数和所述多组样本状态信息,对深度强化学习网络进行循环训练,包括:
获取多组样本状态信息各自对应的调优激励参数;
将所述目标数据库的初始状态信息、所述多组数据库样本参数、所述多组样本状态信息,以及所述多组样本状态信息对应的调优激励参数,构成的多个四元组确定为多组模型结构训练数据;
在所述目标数据库按照实际工作负载运行的过程中,利用所述多组数据库样本参数、所述多组样本状态信息以及所述多组模型结构训练数据,对深度强化学习网络进行循环训练。
在一些实施例中,所述方法还包括:
获取各组所述数据库样本参数分别应用于目标数据库,得到的各数据库样本参数的性能值;
依据同一组数据库样本参数各自对应的所述性能值,对该组数据库样本参数进行降维处理,得到相应的一组目标样本参数;
通过主成分分析方式,对所述多组样本状态信息分别进行降维处理,得到多组目标样本状态信息;
所述利用所述多组数据库样本参数、所述多组样本状态信息以及所述多组模型结构训练数据,对深度强化学习网络进行循环训练,包括:
利用多组目标样本参数、所述多组目标样本状态信息以及所述多组模型结构训练数据,对深度强化学习网络进行循环训练。
在一些实施例中,所述依据同一组数据库样本参数各自对应的所述性能值,对该组数据库样本参数进行降维处理,得到相应的一组目标样本参数,包括:
依据同一组数据库样本参数各自对应的所述性能值,以及所述目标数据库的不同性能优化权重,确定各数据库样本参数对应的适应值;
按照所述目标数据库的性能波动区间,对所确定的所述各数据库样本参数的适应值进行分割,得到相应数据库样本参数的特征标签;其中,所述适应值属于同一所述性能波动区间的所述数据库样本参数的特征标签相同;
利用所述特征标签,对所述多组数据库样本参数各自包含的多个数据库样本参数进行重要性排序;
按照重要性排序结果,由每一组数据库样本参数中重要性较高的第一数量个数据库样本参数,构成一组目标样本参数。
在一些实施例中,所述获取多组样本状态信息各自对应的调优激励参数,包括:
获取所述多组初始数据库参数分别应用于所述目标数据库所得到的多个第一数据库性能值,以及所述多组数据库样本参数分别应用于所述目标数据库所得到的多个第二数据库性能值;
确定所述目标数据库的不同数据库性能的性能优化权重;
利用所述性能优化权重、所述多个第一数据库性能值及所述多个第二数据库性能值,得到相应一组数据库样本参数对应的调优激励参数;其中,一组所述数据库样本参数对应有一组所述数据库样本状态信息。
在一些实施例中,在对深度强化学习网络进行每次训练过程中,包括:
将所述目标样本状态信息输入深度强化学习网络,按照参数推荐策略得到所述目标样本状态信息对应的候选数据库参数;
将所述候选数据库参数应用于所述目标数据库,得到所述样本状态信息对应的模型训练数据;
基于得到的多组模型训练数据,调整所述深度强化学习网络的网络参数。
在一些实施例中,所述参数推荐策略是从预设的多个参数生成策略中选定的;所述多个参数生成策略包括随机生成策略、第一正态分布生成策略和/或第二正态分布生成策略,其中:
所述随机生成策略包括基于所述多组数据库样本参数,随机得到候选数据库参数;
所述第一正态分布生成策略包括基于所述深度强化网络中的神经网络预测结果,得到候选数据库参数;
所述第二正态分布生成策略包括基于得到的模型结构训练数据,得到候选数据库参数。
在一些实施例中,所述参数推荐策略的选定过程包括:
获取得到的模型结构训练数据的当前数据量;其中,所述模型结构训练数据的数据量随着深度强化学习网络的训练次数增加而增多;
依据所述当前数据量,更新所述多个参数生成策略各自对应的选择概率;
对更新后的多个所述选择概率进行比较,得到多个所述选择概率的比较结果;
从所述多个参数生成策略中,选择与所述比较结果匹配的参数生成策略确定为参数推荐策略。
在一些实施例中,所述依据所述当前数据量,更新所述多个参数生成策略各自对应的选择概率,包括:
获取所述当前数据量相对于上一次更新所述选择概率对应数据量的数据增长量;
按照所述数据增长量对应的调整步长,增大所述第一正态分布生成策略和所述第二正态分布生成策略各自对应的选择概率,并减小所述随机生成策略的选择概率;
其中,若所述当前数据量大于数据量阈值,按照所述第一正态分布生成策略得到的候选数据库参数,与按照所述第二正态分布生成策略得到的候选数据库参数之间的差值小于预设参数阈值,所述按照参数推荐策略得到所述样本状态信息对应的候选数据库参数,包括:
按照所述第一正态分布生成策略或所述第二正态分布生成策略,得到所述样本状态信息对应的候选数据库参数。
在一些实施例中,所述多组数据库样本参数和/或所述多组目标样本参数,是通过调用的不同线程获取的;
和/或,
所述利用多组目标样本参数、所述多组目标样本状态信息以及所述多组模型结构训练数据,对深度强化学习网络进行循环训练,具体为:
调用不同线程,分别利用对应的一组所述目标样本参数、一组所述目标样本状态信息以及所述多组模型结构训练数据,对深度强化学习网络进行循环训练。
又一方面,本申请还提出了一种数据库参数调整装置,所述装置包括:
参数调整请求获得模块,用于获得针对目标数据库的参数调整请求;
信息获取模块,用于根据所述参数调整请求获取所述目标数据库的当前状态信息;
候选数据参数得到模块,用于将所述当前状态信息输入参数调优强化模型,得到所述当前状态信息对应的调优激励参数和候选数据库参数;其中,所述参数调优强化模型是基于多组数据库样本参数训练得到的,所述数据库样本参数为基于初始数据库参数每次进行性能优化迭代所筛选得到的;
目标推荐参数确定模块,用于以满足所述数据库性能条件的候选数据库参数,作为所述目标数据库的目标推荐参数。
又一方面,本申请还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行,实现上述的数据库参数调整方法的各步骤。
基于上述技术方案,本申请服务设备获得针对该目标数据库的参数调整请求后,将根据该参数调整请求获取该目标数据库的当前状态信息,将其输入参数调优强化模型,得到当前状态信息对应的调优激励参数和候选数据库参数,若该候选数据库参数未满足数据库性能条件,将基于该调优激励参数对参数调优模型进行循环迭代,直至得到满足数据库性能条件的候选数据库参数,从而将更可靠的候选数据库参数作为目标数据库的目标推荐参数,应用到目标数据库中,以提高目标数据库性能满足应用需求。由于本申请在训练参数调优强化模型之前,将基于初始数据库参数进行性能优化迭代,筛选每次性能优化迭代后高质量数据库参数至下一次性能优化迭代,从而得到多组数据库样本参数实现模型训练,相对于直接利用历史数据进行模型训练的方式,极大提高模型训练效率及可靠性,进而提高了目标数据库的调优效率及可靠性。
具体实施方式
针对背景技术部分描述的技术问题可知,在利用深度强化学习网络,对目标数据库当前配置的参数进行调优,得到优化目标数据库性能的目标推荐参数过程中,深度强化学习网络的记忆池(即一种数据存储设备,该数据存储设备可以存储用以训练深度强化学习网络的网络参数的四元组数据,本申请将其记为模型结构训练数据,具体内容可以参照下文实施例相应部分的描述)数据的质量,极大影响了数据库参数调整效率及可靠性。由于模型结构训练数据是在将数据库样本参数应用于数据库实例,得到相应状态信息和调优激励参数后,由初始状态信息、本次输入的数据库样本参数以及得到的状态信息和调优激励参数构成的,该数据库样本参数的质量就是模型结构训练数据,所以,本申请提出在训练参数调优强化模型之前,即在对深度强化学习网络进行循环训练之前,先获取高质量的数据库样本参数,不再直接使用质量分布不均的目标数据库的历史数据作为数据库样本参数,达到改善深度强化学习网络的记忆池数据质量,提高模型训练效率及可靠性的目的。
具体的,本申请将针对目标数据库,构建多组初始数据库参数后,基于初始数据库参数进行性能优化迭代,筛选每次性能优化迭代中的第一类数据库参数组至下一次性能优化迭代,直至满足迭代终止条件,得到所需的高质量的多组数据库样本参数,再结合所得数据库优化参数的性能变化情况,构建初始的模型结构训练数据,可以替代历史数据成为深度强化学习网络的记忆池中的初始数据。
可见,本申请这种数据库样本参数的获取过程,将依据各数据库参数对应的数据库性能指标,不断淘汰低数据库性能指标较的数据库参数,保留高数据库性能指标的数据库参数,保证了最终所得数据库样本参数的质量分布均匀,其数据库性能足够促使模型结构训练向正确方向进行梯度下降,提高模型输出可靠性,高效获得更适用于目标数据库的调参特性的网络结构。可以理解,对于输入深度强化学习网络的样本状态信息,也将采用该高质量的数据库样本参数应用于目标数据库,得到的状态信息,而不再随机选择历史状态信息,从而加快了深度强化学习网络的训练收敛速度和可靠性。
在一些实施例中,基于上述分析,客户端发起针对目标数据库的参数调整请求,服务端接收到该参数调整请求后,可以先检测是否存储有与该参数调整请求相匹配的参数调优强化模型,即支持按照目标数据库的实际工作负载运行的数据库实例调参的深度强化学习网络,若存在,可以直接调用相匹配的参数调优强化模型,作为目标参数调优强化模型,再将获取的目标数据库的当前状态信息直接输入至该目标参数调优强化模型,输出数据库推荐参数。
当然,在实际应用中,为了进一步提高目标推荐参数的可靠性,本申请还可以将模型输出的数据库参数应用于目标数据库,得到相应的调优激励参数,再据此对参数调优强化模型进行循环迭代,得到满足数据库性能条件的目标推荐参数。无论哪种方式,可以不需要花费较长时间在线训练参数调优强化模型,极大提高了目标数据库参数调整效率,且保证了调参结果可靠性。
若检测不存在与参数调整请求相匹配的参数调整模型,本申请可以按照上述方式在线训练得到适用于目标数据库的参数调优强化模型,并将其与目标数据库运行的实际工作负载等信息进行关联后存储,以供后续在请求调整按照该实际工作负载运行的数据库的情况下,按照上述方式直接调用该参数调整模型,实现这类数据库参数的快速且可靠调整。
在本申请又一些实施例中,为了进一步缩短数据库调参所需时间,本申请可以采用并行化调参方式,如可以采用多进程方式,利用多台按照目标数据库的实际工作负载运行的数据库实例,实现不同数据库参数组的预处理、分析及调优处理过程中涉及到的性能测试步骤,相对于由一台数据库实例再同一时间只能测试一组数据库参数的性能,极大缩短了多组数据库参数的性能测试时间,同理,缩短了多组数据库参数分析筛选所花费的时间,以及利用筛选后的多组数据库参数进行参数调优所花费的时间,从而缩短了数据库参数调整,以优化数据库性能的整个处理过程所花费的时长。关于每一处理阶段的并行化处理过程,本申请在此不做一一详述。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
应当理解,本申请中使用的“系统”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换该词语。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。以下术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
另外,本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
参照图1,为适用于本申请提供的数据库参数调整方法和装置的一可选示例的系统架构示意图,在实际应用中,该系统可以部署于计算机设备,该计算机设备可以包括独立的物理服务器,或多台物理服务器构成的服务器集群,或具有云计算能力的云服务器等,该计算机设备可以通过无线网络或有线网络等通信方式,与用户的电子设备进行数据通信,以满足该电子设备的应用需求,具体通信应用场景本申请不做详述。
如图1所示,在本申请实施例提出的系统应用环境下,可以包括:数据库系统100、控制设备200以及调整设备300,其中:
数据库系统100可以是用以提供数据存储服务的系统,具体可以是云数据库(cloud database,CDB)系统,该CDB系统可以由云服务提供商搭建,通常包括一个或多个数据库实例(如CDB实例),以为不同用户提供所需的数据库服务。在实际应用中,该数据库系统中可以包括一类或多类数据库,如键值数据库,关系型数据库等,本申请对数据库系统的具体搭建过程及其组成结构不作详述,可视情况而定。
控制设备200可以包括用于实现电子设备的客户端、数据库系统100与调整设备300之间的交互的一个或多个计算机设备,本申请对该计算机设备的产品类型不做限制,可以是上文描述的服务设备,或者是具有一定数据处理能力的电子设备等,可依据应用场景的具体需求确定。
在本申请实施例中,用户通过电子设备的客户端发起针对数据库系统100中,任一数据库实例(记为目标数据库)的参数调整请求,以请求调整该目标数据库当前配置的参数,以优化该目标数据库的性能的情况下,客户端可以通过本地的通信接口,将该参数调整请求发送至服务设备,具体可以发送至控制设备200,由该控制设备200来利用数据库实例模拟该目标数据库的实际工作负载进行数据库参数的性能测试,得到相应的数据库状态信息、性能指标,据此提高模型推荐结果的准确度,具体实现过程可以参照下文实施例相应部分的描述。
另外,本申请的控制设备200还可以接收DBA发起的模型训练请求,对该模型训练请求进行处理,以控制调整设备300实现对深度强化学习网络的训练学习,得到参数调优强化模型,具体实现过程本申请在此不做详述。在实际应用中,对于控制设备200所具有的上述各功能,可以由其配置的相应功能模块实现,且依据功能扩展需求,可以对该控制设备200进行功能扩展,具体实现过程及其所具有的功能模型的组成结构本申请不做详述。
调整设备300可以用以按照本申请上文描述的技术构思,主要包括在目标数据库参数调整之前,获取深度强化学习网络的高质量记忆池数据(即模型结构训练数据,其可以包含多组数据库样本参数及其对应的样本状态信息),再利用预先获取的这些高质量数据,实现对该深度强化学习网络的训练学习,将得到更适用于目标数据库调参特性的参数调优强化模型,进而据此得到满足数据库性能条件的目标推荐参数,以优化目标数据库的性能,具体实现过程可以参照但并不局限于下文实施例相应部分的描述,本实施例在此不做详述。
其中,深度强化学习是将深度学习的感知能力和强化学习的决策能力相结合,可以直接根据输入的数据进行控制,是一种更接近人类思维方式的人工智能方法。在本申请实施例中,其可以是基于值的强化学习方法和基于策略梯度的强化学习方法相结合的方法,具体是Actor-Critic和DQN(Deep QNetwork,即融合神经网络和Q学习的方法)算法的结合体,本申请对深度强化学习网络的具体网络结构不做详述,且对该深度强化学习网络的网络参数调整所依据的梯度调整算法类别不做限制,可以包括但并不局限于深度确定性策略梯度算法。
需要说明,图1所示的系统架构并不构成对本申请实施例中系统的限定,在实际应用中,该系统可以包括比图1所示的更多或更少的部件,或者组合某些部件,可以结合该系统的应用场景需求确定,本申请在此不做一一列举。
结合上文描述,参照图2,为本申请提出的数据库参数调整方法的一可选示例的流程示意图,本实施例可以适用于上文实施例描述的系统应用环境,即适用于支持该系统应用环境正常运行的服务设备,本申请主要对某一具体场景下,如何通过数据库参数调整,优化目标数据库的性能的实现过程进行描述,如图2所示,该方法可以包括但并不局限于以下步骤:
步骤S21,获得针对目标数据库的参数调整请求;
其中,目标数据库可以是上述数据库系统100中的任一数据库实例,可以依据用户业务需求来确定,本申请对该目标数据库的类型及其具有的业务负载不做限制。
示例性的,在数据库实际应用中,可以在用户发现或计算机设备检测到目标数据库的性能下降,或其支持的工作负载发生明显变化等情况下,为了保证目标数据库处于较高性能下工作,需要对影响其性能的参数进行调整,此时,可以通过相应的客户端向支持数据库参数调整的服务设备,发送针对该目标数据库的参数调整请求,以请求服务设备调整该目标数据库配置的参数,优化目标数据库的性能。但并不局限于本实施例描述的这种参数调整请求的生成过程。
步骤S22,根据该参数调整请求获取目标数据库的当前状态信息;
在实际应用中,可以通过指标收集器对目标数据库的状态信息进行检测和采集,得到目标数据库的当前状态信息,即用于指示目标数据库在实际工作负载以及当前配置的参数下的运行状态,该当前状态信息可以包括但并不局限于:缓冲池大小、数据读/写总数量、当前打开的文件数量、读取/写入的页数等,可视情况而定,本申请在此不做一一详述。
需要说明,对应数据库本身来说,其在任一时刻都会有对应的状态信息,以MySQL数据库为例,mysql的information_schema.INNODB_METRICS保存了InnoDB存储引擎的信息,可以读取该InnoDB存储引擎的信息作为一种状态信息,但并不局限于这一种状态信息。而且,对于数据库的各状态信息来说,并非所有的状态信息都与数据库性能关联,为了提高调整效率,本申请可以从中选择对数据性能影响较大的若干状态的状态信息,用以据此实现目标数据库的参数调整。
示例性的,本申请可以采用PCA(Principal components analysis,主成分分析)算法,对采集到的目标数据库的多个状态信息进行降维处理,以降低目标数据库状态空间。参照图3所示的PCA方差变化示意图,在通过PCA算法对MySQL数据库进行TPC(transactionprocessing performancecouncil,事务处理性能委员会)-C基准测试(即事务处理与数据库性能基准测试)中,分析发现该数据库默认开启的65个状态,需要大约14个状态就能够代表95%的方差,即确定该数据库在当前工作负载下的性能。所以,本申请可以获取这14个状态的状态信息,对其进行后续分析处理,不需要对开启的所有状态的状态信息进行分析处理,从而节省了对其他51个状态的状态信息分析处理所花费的时间,提高了数据库参数调整效率,即提高了数据库性能优化效率。
其中,TPC-C基准测试是衡量联机事务处理(OnlineTransaction Processing,OLTP)系统的工业标准,是行业中公认的权威和最为复杂的在线事务处理基准测试。通常情况下,其可以通过模拟仓库和订单管理系统,测试广泛的数据库的如包括查询、更新和mini-batch事务(队列式小批量事务)等功能,可以由相应得到的吞吐量等信息来表示测试结果。但并不局限于本申请实施例描述的这种测试方式和状态信息筛选方式。
步骤S23,将当前状态信息输入参数调优强化模型,得到当前状态信息对应的调优激励参数和候选数据库参数;
结合上文对本申请技术构思的描述,参数调优强化模型是基于多组数据库样本参数训练得到的,而该数据库样本参数则是基于初始数据库参数每次进行性能优化迭代所筛选得到的,也就是说,在对深度强化学习网络进行训练之前,可以对多组初始数据库参数进行性能优化迭代,筛选每次性能优化迭代中的第一类数据库参数组至下一次性能优化迭代,直至满足迭代终止条件,得到多组数据库样本参数,之后,再基于该多组数据库样本参数,及其应用于目标数据库得到的样本状态信息,对深度强化学习网络进行循环训练,直至满足训练终止条件,将最终训练得到的深度强化学习网络确定为参数优化强化模型。
可见,本申请不再直接从目标数据库的历史数据中,选择数据库样本参数和样本状态信息,采用上述对多组初始数据库参数进行性能优化迭代的方式,保证了所得多组数据库样本参数的质量分布均衡,能够使深度强化学习网络中的神经网络容易学习到有效的价值,从而向正确的方向进行梯度下降,即提高模型训练效率及可靠性。
结合上文描述的参数调优模型的训练过程,以及深度强化学习网络的工作原理,上述调优激励参数可以是将候选数据库参数应用于目标数据库,得到的相应表征数据库性能指标的一个或多个数据库性能值,如吞吐量、延迟时间等后,可以基于该数据库性能值的变化计算得到,具体获取过程本申请不做限制。可以理解,在数据库调参过程中,可以由该调参结果作为一组模型结构训练数据,写入记忆池存储,用以后续优化模型结构。
在一些实施例中,在获取数据库样本参数过程中,需要对任一组数据库参数(如优化过程中的任一组数据库参数,数据样本参数等)进行性能测试时,将该组数据库参数应用于目标数据库,经过压力测试得到的相应的一组状态信息,如此重复多次压力测试,对得到多组状态信息进行均值计算,将得到的平均状态信息确定为该组数据库参数的状态信息,但并不局限于这种均值计算方式。可以理解,在压力测试过程中,具体可以利用模拟的数据库实例,对目标数据库的实际工作负载进行回放实现,具体测试方法不做限制。
步骤S24,若该候选数据库参数未满足数据库性能条件,通过参数调优强化模型基于调优激励参数进行循环迭代,直至参数调优强化模型输出的候选数据库参数满足数据库性能条件;
步骤S25,以满足数据库性能条件的候选数据库参数,作为目标数据库的目标推荐参数。
在实际应用中,目标数据库的实际工作负载可能是不稳定的,因此,在调参时的实际工作负载,与训练参数调优强化模型过程中,数据库实例的实际工作负载之间可能存在差异,这可能会导致参数调优强化模型直接输出的候选数据库参数无法满足数据库性能条件,如候选数据库参数应用于目标数据库,得到的数据库性能指标无法达到预设性能指标阈值,或数据状态信息无法达到预设状态值等,目标数据库直接使用该候选数据参数,可能无法满足应用需求。
这种情况下,本申请将基于本次得到的调优激励参数,继续对参数调优强化模型进行循环迭代,检测下一次迭代得到的候选数据库参数是否满足数据库性能条件,若不满足,继续循环迭代;若满足,将满足数据库性能条件的候选数据库参数确定为目标推荐参数,反馈至客户端,以应用于目标数据库,满足实际应用需求。其中,在这种情况下执行的模型循环迭代次数往往比较小,本申请可以依据实际要求,如对数据库参数可靠性、数据库参数调整时长等方面的要求,来灵活确定循环迭代次数或上述数据库性能条件内容,
在一些实施例中,在对参数调优强化模型进行循环迭代后,可以存储最终迭代得到的参数调优强化模型,后续可以调用本次得到的该参数调优强化模型,实现该目标数据库的参数调整;当然,也可以不存储循环迭代后得到的参数调优强化模型,本申请对此不做限制,可视情况而定。
需要说明,对于存储的参数调优强化模型的应用,若应用场景对数据库优化要求不是非常严格的情况下,本申请可以由具有同类别工作负载的多个数据库实例,共享针对该类别工作负载的参数调优强化模型,以实现这多个数据库参数调整,不需要针对按照每一工作负载运行的各数据库实例,都在线实现其参数的调优过程;当然,若对数据库优化要求严格,可以按照本申请提出的方式,分别针对每一数据库在其实现工作负载下运行过程中,在线实现其参数调优,即在线训练相应参数调优强化模型,据此得到满足实际数据库性能条件的目标推荐参数。
本申请实施例应用中,可以通过初始化得到深度强化学习网络,或者是调用与参数调整请求的匹配度达到一定阈值,但与该参数调整请求并不匹配的参数调整模型(即预训练好的一深度强化学习网络),将其作为初始的深度强化学习网络等,再利用按照上述方式获取的数据库样本参数,对深度强化学习网络进行训练,得到针对目标数据库的参数调优强化模型,具体训练实现过程不做详述。
综上所述,由于本申请基于初始数据库参数每次进行性能优化迭代所筛选得到的多组数据库样本参数,相对于目标数据库的历史数据中的数据库参数,数据质量分布均衡且包含的都是高质量的数据库参数,即能够较大程度提高目标数据库性能指标的数据库优化参数,据此训练深度强化学习网络的网络结构,能够保证其向正确的方向进行梯度下降,提高模型训练效率及输出可靠性;且将高质量的数据库样本参数对应的样本状态信息输入深度强化学习网络进行训练,能够加快模型收敛速度,解决了目前深度强化学习网络基于目标数据库的历史数据进行训练所存在的技术问题。尤其是在面对全新负载的数据库参数调整的场景下,不存在其历史数据,无法再基于历史数据进行模型训练,随机生成的数据会极大增加模型训练时长,且无法保证模型输出结果的可靠性。采用本申请提出的这种数据库参数调整方法,能够满足各类数据库调参需求。
参照图4,为本申请提出的数据库参数调整方法的又一可选示例的流程示意图,本实施例主要对上述实施例描述的数据库参数调整方法中,多组数据库样本参数的获取以及参数调优强化模型的训练过程进行细化描述,但并不局限于本实施例描述的这种细化实现方法。需要说明,在模型训练过程中所涉及到的目标数据库,可以是通过重放目标数据库的实际工作负载,采用该实际工作负载运行的数据库实例,因此,在性能测试时,所描述的将参数应用于目标数据库中,实际可以是将参数应用于该数据库实例中,下文不再一一说明。如图4所示,该方法可以包括:
步骤S41,构建针对目标数据库的第一数据库参数集,该第一数据库参数集包含有多组初始数据库参数;
本申请实施例中,针对用户请求调整数据库参数时,目标数据库的工作负载,获取支持该工作负载的目标数据库配置的参数,记为初始参数。由于支持某一工作负载的数据库实例所配置的参数通常具有一定空间范围,本申请实施例可以在确定针对目标数据库的特定参数空间范围后,从而该特定参数空间范围内,随机选择出多组初始数据库参数构成第一数据库参数集,每一组初始数据库参数通常包括多个初始数据库参数(其可以包括目标数据库所配置的数据库参数名称及其对应的参数值),且各组初始数据库参数所包含的初始数据库参数个数可以相同。
在一些实施例中,对于随机生成的多组初始数据库参数,可以由用户人工剔除与数据库性能无关的初始数据库参数,再按照下文描述的方式做进一步优化处理,但并不局限于人工剔除这种除筛选方式。当然,本申请也可以采用本实施例描述的方式,直接按照下文描述的方式对随机生成的多组初始数据库参数进行处理。
步骤S42,获取多组初始数据库参数各自的数据库性能指标;
本申请希望能够得到高质量且分布均衡的数据库样本参数,以加速模型训练收敛速度,提高模型输出可靠性及准确性,所以,在对所获取的多组初始数据库参数进行循环优化过程中,本申请将依据每一组初始数据库参数应用于目标数据库,重放目标数据库的实际工作负载,完成压力测试,得到一组性能向量,如由吞吐量tps、延迟latency等性能参数构成,由此性能向量可以确定相应组初始参数应用于目标数据库,该目标数据库在实际工作负载下运行所达到的数据库性能指标,但并不局限于这种数据库性能指标获取方式。根据实际需要,在压力测试过程中,还可以记录目标数据库所达到的相应状态信息。
在本申请实施例中,可以由控制设备中的负载生成器根据目标数据库的日志信息,重放目标数据库的实际工作负载,即将目标数据库在历史时长内执行的语句重新执行一遍,具体实现过程本申请不做详述。其中,历史时长可以是最近时间段,如距离当前时刻的过去最近30分钟、1小时、1天等,本申请对该历史时长的具体时间段大小不做限制,可视情况而定。
需要说明,关于上文得到的每一个性能向量的表示方式及其包含的内容,均可以依据实际应用需求确定,本申请不做限制,且通常情况下,对各组初始数据库参数进行压力测试后,所得到的相应的多个性能向量的表示方式及其包含的性能类别通常相同,以便后续能够据此确定哪一种初始数据库参数更优。
在一些实施例中,为了提高处理效率,本申请可以采用多线程方式,按照上述方式,分别对多组初始数据库参数应用到对应的数据库实例进行压力测试,得到相应的一组性能向量,相对于单线程获得多组性能向量的处理方式,极大缩短了压力测试时间。
步骤S43,利用该数据库性能指标,筛选多组初始数据库参数中的第一类数据库参数组;
其中,第一类数据库参数组可以是指数据库性能指标达到性能阈值的一组或多组数据库优化参数,本申请对第一类数据库参数组的具体筛选过程不做限制。
。可以理解,随着循环优化次数增加,该第一类数据库参数组包含的内容可能会变化,但确定其内容都是从本次要优化的多组数据库参数中,选择数据库性能指标达到性能阈值的一组或多组数据库优化参数,如按照一定比例进行选择等方式实现,从而保证所得多组数据库样本参数的质量分布均衡。
步骤S44,依据第一类数据库参数组,构建第二类数据库参数组;
步骤S45,由第一类数据库参数组与第二类数据库参数组构成第二数据库参数集;
其中,第二数据库参数集与第一数据库参数集所包含的数据库参数组数相同,也就是说,本申请对多组初始数据库参数进行循环优化过程中,可以保持数据库参数组的组数不变,同时不断淘来低质量的数据库参数,保留高质量的数据库参数,得到数据库样本参数,具体实现过程不做限制。示例性的,本申请可以利用如遗传算法(Genetic Algorithm,GA)等启发式算法实现,实现对多组初始数据库参数的性能优化迭代,但并不局限于这种获取方式。
如本实施例上述步骤描述,在首次性能优化迭代过程中,本申请可以选择数据库性能指标大于性能指标阈值的初始数据库参数,将其确定为第一类数据库参数组。具体实施过程中,可以按照数据库性能指标大小,对多组初始数据库参数进行排序,再按照一定比例λ保留数据库性能指标较高的一组或多组数据库参数不变,淘汰剩余的(1-λ)比例的多组数据库参数,为了保证数据库参数的组数不变,可以利用保留的性能较好的多组数据库参数即第一类数据库参数组,构建(1-λ)组新的数据库参数即第二类数据库参数组,具体构建方法本申请不做限制,可视情况而定。
可选的,为了保留最优解(即性能最高的一组数据库参数),在上述优化迭代处理过程中构建第二类数据库参数组时,可以保留最高性能对应的一组数据库参数不变,这样,经过性能优化迭代次数的增加,可以逐渐确定出对应更好性能的多组数据库参数。
在实际迭代过程中,按照上述方式得到一组可用的较优解,即较高性能的一组数据库参数后,在网络训练前期,可以作为候选数据库参数推送至客户端,即应用于目标数据库,后续可以在此基础上继续进行参数调整,随着参数调整次数的增多,记忆池数据(基于候选数据库参数得到的模型结构训练数据)会逐渐增多,由此调整后的网络结构能够更适配目标数据库的调参特性,从而使网络输出的候选数据库参数更加可靠性。
可见,本申请实施例可以采用遗传算法对多组初始数据库参数进行性能优化迭代,以将每一个体每次迭代所得的最优参数直接保留到下一代,以确定出分布均衡的多个较优参数,即多组数据库样本参数,消除调优过程中所依据的数据分布不均衡对网络结构调整效果的不利影响;且由于优秀参数往往是相似的,通过这种方式可以大概预测目标数据库的最优参数所在范围,为后续更准确且快速地获取最优参数奠定基础。
需要说明,在确定上述数据库性能指标过程中,可以依据具体应用对数据库不同性能的要求确定,如要求数据库的某一方面或多方面的性能值达到一定阈值等,如可以依据该要求确定不同性能的性能优化权重,结合该性能优化权重和性能值,确定相应的数据库性能指标,但并不局限于这种实现方式。
步骤S46,若不满足性能优化迭代终止条件,继续对第二数据库参数集包含的多组数据库参数进行性能优化迭代,直至满足性能优化迭代终止条件,将最后一次性能优化迭代得到的数据库参数确定为数据库样本参数。
其中,性能优化迭代终止条件可以包括对多组初始数据库参数的性能优化次数是否达到预设优化次数、性能优化后的多组数据库参数对应的数据库性能指标是否达到相应性能指标阈值或是否收敛等,本申请对该性能优化迭代终止条件的具体内容不做限制,可视情况而定。
需要说明,在第二数据库参数集不满足数据库参数优化要求的情况下,对第二数据库参数集包含的多组数据库参数的每一次性能优化迭代过程,与上述对第一数据库参数集包含的多组数据库初始参数的性能优化过程类似,本申请在此不做一一详述。
步骤S47,获取各组数据库样本参数分别应用于目标数据库,得到的各数据库性能参数的性能值;
本申请实施例为了进一步加快模型收敛速度,提高数据库调参效率,提出对样本参数空间和状态空间进行降维,剔除对数据库性能影响不大的数据库参数。具体可以利用如随机森林等机器学习算法,按照各数据库参数对数据库性能重要性的排序,筛选重要性较高的K(其具体数值不做限制,可视情况而定)个样本参数。所以,本申请实施例可以获取各数据库性能参数应用于目标数据库得到的性能值,如上述吞吐量、延迟时间等。
其中,在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。在响应分类任务时,将其输入样本输入该分类器后,通常由森林中的每一棵决策树分别进行判断和分类,得到对应的分类结果后,将多个决策树各自的分类结果中,数量最多的分类结果确定为最终分类结果。在本申请实施例中,可以依据各组数据库性能参数的性能测试结果,对相应数据库性能参数组包含的多个参数进行重要性排序,以实现参数空间的降维。
步骤S48,依据同一组数据库性能参数各自对应的性能值,对该组数据库性能参数进行降维处理,得到相应的一组目标样本参数;
结合上文实施例相应部分的描述,对于上述迭代学习得到的每一组数据库性能参数,可以依据相应的性能值,确定其包含的多个数据库性能参数的重要性排序,筛选重要性较高的K个数据库性能参数作为目标样本参数,该重要性排序可以依据相应组数据库性能参数应用于目标数据库,采用其实际工作负载回放,进行压力测试所得到的性能向量内容确定。
在一种可能的实现方式中,对于数据库性能参数的重要性排序,可以采用LASSO(Least absolute shrinkage and selection operator,套索算法,即一种回归模型)的机器学习方法实现,但这种实现方法会导致变量系数更多变为0,虽然能够实现一组数据库性能参数的筛选,但无法确定其包含的各数据库性能参数的重要性顺序,也就无法保证所得参数重要性排序的可靠性及准确性,进而影响了降维效果,无法保证剩余样本参数的质量。
为了改善上述问题,本申请进一步提出采用随机森林算法对每一组数据库优化参数进行重要性分析,以实现对性能优化迭代得到的各组数据库性能参数的重要性排序。由于随机森林方法可以计算出每一个数据库性能参数的重要性,且不会出现多个数据库性能参数重要性为0的情况,所以能够更好地确定数据库性能参数的选择个数,并推断出特征重要性,进而据此实现对各组数据库性能参数的重要性排序。具体实现过程可以依据随机森林算法的工作原理确定,本申请在此不做详述。
步骤S49,通过主成分分析方式,对多组性能状态信息分别进行降维处理,得到多组目标样本状态信息;
如上述分析,数据库运行过程中,会产生多种状态信息,但并不是所有的状态信息都会影响数据库的性能,或者说不是所有的状态信息都与数据库性能相关联。因此,为了提高训练效率及准确性,本申请在按照上述压力测试方式,得到相应的多组性能状态信息后,可以将每组性能状态信息中与数据库性能无关的状态信息剔除,以实现状态空间的降维,进而达到加速模型训练收敛速度,以提高模型训练准确性及可靠性的效果,但并不局限于本申请实施例列举的这种解空间降维实现方法。
其中,上述与数据库性能无关的状态信息,是指状态信息变化导致数据库性能的波动量小于阈值(较小数值),该波动量可以忽略不计。如上图3所示,本申请可以通过方差表征数据库性能的波动。可见,本申请可以保留引起数据库性能波动较大的样本状态信息,完成后续模型训练,也能够保证训练可靠性。
步骤S410,在目标数据库按照实际工作负载运行的过程中,将目标样本状态信息输入深度强化学习网络,按照参数推荐策略得到该目标样本状态信息对应的候选数据库参数;
在一些实施例中,按照上述方式得到多组数据库样本参数后,可以不做上述步骤的参数空间降维和状态空间降维,直接用来对深度强化学习网络进行循环训练,训练实现过程与利用多组目标样本参数实现深度强化学习网络的训练过程类似,本申请不做赘述。
步骤S411,将候选数据库参数应用于目标数据库,得到样本状态信息对应的模型训练数据;
步骤S412,基于得到的多组模型训练数据,对深度强化学习网络的网络参数进行循环训练,直至满足训练终止条件,将最终训练得到的深度强化学习网络确定为参数优化强化模型。
结合深度强化学习的工作原理可知,如图5所示,其通常是由工具(Agent)、环境(Environment)、状态(State)、奖励值(Reward)、动作(Action)及策略(Policy)这六个重要元素进行交互,来实现深度强化学习的功能。结合本申请提出的数据库参数调整应用场景,该深度强化学习应用到该应用场景,工具可以对应于上文系统架构中的调整设备,主要由参数调整模型构成,该初始深度强化学习网络可以通过对预设的数据库实例的样本数据进行训练得到。
在深度强化学习网络的每一次训练过程中,深度强化学习网络输出候选数据库参数所依据的参数推荐策略,是从多个参数生成策略中选择确定的,随着训练学习次数的增加,可以不断调整推荐策略,以指导如何调整目标数据库配置的参数,以获得更高的数据库性能。
可以理解,上述深度强化学习中的环境对应调整目标,即本申请需要调整参数,以优化性能的目标数据库,如一个需要优化配置参数,以提高性能的CDB实例等。而状态可以为上述目标数据库当前的运行状态,可以由相应的状态信息表示,如吞吐量、延迟时间等;奖励值可以表示目标数据库在应用推荐参数前后的性能变化,具体获取过程可以参照下文实施例相应部分的描述,本实施例在此不做详述。
上述深度强化学习中的动作可以是对目标数据库的调参操作,即将得到的候选数据库参数应用到目标数据库中,其可以包括目标数据库的可调一组参数,该组参数的具体内容可以通过上述多种方式确定,本申请在此不做详述。其中,在对目标数据库的参数调整过程中,可以通过对当前配置的参数进行增加、不变或减少等调整操作,直至调整为所获得的候选数据库参数;当然,也可以直接由所获得的候选数据库参数替换目标数据库当前配置的相应参数,本申请对参数调整方式不做限制,可视情况而定。
对于上述多个参数生成策略,也可以是说是获得动作空间的策略,在确定本次训练所依据的参数推荐策略后,可以按照该参数推荐策略对输入的样本状态信息进行处理,得到相匹配的候选数据库参数。由于深度强化学习时依赖累计奖励(调优激励参数)进行训练学习,目标是通过不断与环境进行互动,基于环境的回报来优化策略,再采用更新的策略获得更高的回报。具体的,本申请可以采用但并不局限于基于DDPG(Deep DeterministicPolicy Gradient,深度确定性策略梯度)的深度强化学习方法,利用记忆池数据实现网络结构的调整,具体实现过程本申请不做详述。
因此,在对网络训练过程中,网络每次输出候选数据库参数后,可以将其应用于目标数据库中,得到目标数据库的调优激励参数,并据此构成一组模型结构训练数据,如上述四元组结构的数据,具体可以包括目标数据库的初始状态信息,本次训练学习得到的候选数据库参数,该候选数据库参数应用于目标数据库得到的优化状态信息,该优化状态信息相对于初始状态信息(或上一次训练得到的优化状态信息)对应的调优激励参数等,之后,可以将其写入记忆池中,以更新记忆池数据,后续可以利用更新后的记忆池数据(即模型结构训练数据)继续调整深度强化学习网络的网络参数。
示例性的,上述初始深度强化学习网络可以采用Actor-Critic模型架构,其包含的第一深度强化学习网络可以为Actor网络,第二深度强化学习网络可以是Critic网络,在模型训练过程中,该第一深度强化学习网络输入的是目标数据库的目标样本状态信息,输出的是优化目标数据库性能的候选数据库参数;第二深度学习网络的输入可以是第一深度学习网络的输入和输出,即目标数据库的目标样本状态信息和候选数据库参数,第二深度学习网络的输出可以是配置评分,用以表征该第一深度学习网络的输入输出组合的合理程度,通常情况下,该配置评分越大,第一深度学习网络的输入输出组合的越合理,将其输出的候选数据库参数应用于目标数据库,其性能越高。因此,本申请可以依据该配置评分以及当前存储的多组模型结构训练数据,调整第一深度强化网络的网络参数,使其后续训练的输入输出更加合理。
本申请实施例中,训练终止条件可以包括深度强化学习网络的训练学习次数达到预设学习次数、训练学习时长达到预设学习时长、调整网络参数后的深度强化学习网络的推荐准确度达到预设准确度等,本申请对该训练终止条件的具体内容不做限制,可视情况而定。
按照上述方式,得到针对按照实际工作负载运行的数据库实例(其包含上述目标数据库)的参数调优强化模型后,后续可以直接调用该参数调优强化模型,来满足用户对按照该实际工作负载运行的数据库实例的业务需求,将将获取的该目标数据库当前状态信息输入该参数调优强化模型,输出目标数据库的候选数据库参数,在按照上述实施例相应部分的描述的调优方式,得到目标推荐参数,将该目标推荐参数应用到目标数据库,能够优化目标数据库的性能,使其满足用户的业务需求。
综上所述,本申请在目标数据库的参数调整过程中,并不是直接利用目标数据库的历史数据对深度强化学习网络进行训练,而是先按照上述方式改善记忆池数据质量,得到高质量的模型结构训练数据。目标样本参数和目标状态信息,再据此进行网络结构的训练学习,得到模型结构更适用于目标数据库调参特性的参数调优强化模型,保证了参数调优强化模型输出的可靠性,且提高了参数调优强化模型训练效率。
在本申请一些实施例中,可以对上述模型结构训练数据的实现做进一步细化,如图6所示,该细化实现方法可以包括但并不局限于以下实现方法步骤:
步骤S61,构建针对目标数据库的第一数据库参数集,第一数据库参数集包含有多组初始数据库参数;
步骤S62,将多组初始数据库参数应用于目标数据库,得到相应的数据库性能向量;
步骤S63,对数据库性能向量包含的多个数据库性能值进行加权求和,得到相应组初始数据库参数的数据库性能指标;
目标数据库在实际工作负载下运行,应用各组初始数据库参数得到各性能向量后,每一性能向量可以由多种性能值构成,如吞吐量、延迟时间等,这样,在对相应的多组初始数据库参数进行优化处理时,对于每一性能向量,可以按照其包含的各性能值加权求和所得到的数据库性能指标,对各组初始参数进行排序。在一些实施例中,还可以结合各性能的性能优化权重和性能值,计算得到相应的数据库性能指标,本申请对该数据库性能指标的获取方式不做限制。
可以理解,每一次优化迭代后所得到的各组数据库参数的数据库性能指标,仍可以按照上述多组初始数据库参数各自对应的数据库性能指标的获取过程实现,本申请不做赘述。
步骤S64,利用数据库性能指标,筛选多组初始数据库参数中的第一类数据库参数组;
步骤S65,依据第一类数据库参数组的数据库性能指标,确定第一类数据库参数组中的第三类数据库参数组;
其中,第三类数据库参数组中不包含第一类数据库参数组中最高数据库性能指标对应的数据库参数组,即在优化迭代过程中,将保留最高数据库性能指标的一组数据库参数不变。
步骤S66,对第三类数据库参数组包含的不同组数据库参数进行参数交叉替换处理,得到的第二类数据参数组;
可见,本申请将对传统的遗传算法进行改进,在迭代处理过程中,保留最高数据库性能指标的数据参数。具体的,结合遗传算法的工作原理,在多个个体(多组数据库参数)优化迭代过程中,将保留最好性能的个体,按照一定比例保留性能较好的个体至下一代,利用这些性能较好的个体进行“基因交叉”处理,弥补之前淘汰的性能较差的个体数量,保证每一代处理的个体数量一致。
其中,“基因交叉”是针对不同个体之间参数交叉处理方式,以个体A和个体B之间的参数交叉为例进行说明,由于一个个体是由一组基因序列构成的,每一个基因序列都是一个参数值,也就是说,一个个体可以包括一组参数值,如A={k1,k2,k3…},B={m1,m2,m3…},这两个个体中某些参数可以随机交叉替换,变为A={k1,m2,k3…},B={m1,k2,m3…},通过这种交叉处理方式,可以在现有基因池中找寻更好的匹配组合,以找到获得更好性能的个体。
步骤S67,对第一类数据库参数组和第二类数据库参数组中的第四类数据库参数组进行参数突变处理;
步骤S68,由参数突变处理后的数据库参数组、未参与所述参数突变处理的一组数据库参数,以及第一类数据库参数组构成第二数据库参数集;
其中,第二数据库参数集与第一数据库参数集所包含的数据库参数组数相同。
步骤S69,若不满足性能优化迭代终止条件,继续对第二数据库参数集包含的多组数据库参数进行性能优化迭代,直至满足性能优化迭代终止条件,将最后一次性能优化迭代得到的数据库参数确定为数据库样本参数。
在本申请实施例中,经过上述处理得到多组数据库参数(其组数与第一数据库参数集的组数相同)后,除了性能最好的个体外,其他个体包含的每个“基因”(本申请指数据库参数,如上述初始数据库参数)可以按照一定概率进行“基因突变”。具体可以按照大于概率阈值的突变概率执行该“基因突变”,即上述参数突变处理步骤。
其中,“基因突变”则是对于一个个体来说,个体的任何一个参数都有概率变成一个新的参数,仍以上述个体A为例,A={k1,k2,k3…}在突变后可能变成A={k1,n2,k3…},但并不局限于这种突变方式及内容。可见,通过基因突变处理方式,能够不断的将新的基因性状加入到原有的基因池中,即将新的参数加入到原有一组初始参数中,得到新的性能可能更高的一组初始参数,进行下一代迭代处理。
其中,对于突变加入的新参数,可以是从预设参数空间范围内获取,具体获取方式不做限制,且为了加快迭代效果,可以适当增大上述基因突变的概率,以使除性能最高的个人外的其他个体中,出现更多的个体突变参数,以得到更多较高性能的新个体,从而结合上述交叉方式得到的新个体,构成新种群,如此循环处理,直至达到迭代终止条件,本申请对该遗传终止条件的内容不做限制,可视情况而定。
步骤S610,获取多组数据库样本参数分别对应的调优激励参数;
步骤S611,将目标数据库的初始状态信息、多组数据库样本参数、多组样本状态信息以及多个调优激励参数,构成的多个四元组确定为多组模型结构训练数据。
继上文描述,本申请采用如上描述的遗传算法,结合新参数空间探索和初始参数空间重排的方式,不断的迭代学习,保证每代能够找到性能较高的数据库参数,且在前几代迭代过程中,通常能够较快确定一个可用的较优解,即性能较高的一组数据库参数,本申请可以先将其作为一组数据库参数反馈至客户端,并应用到目标数据库,实现目标数据的参数调整。随着迭代次数的增加,再逐步反馈所确定的性能更高的参数,直至所确定的各组参数性能稳定在较高水平。
在本申请实际应用中,本实施例描述的更适合目标数据库参数调优场景的多组样本参数的生成过程,可以作为模型训练的前期准备阶段,利用上述遗传算法GA对多组初始数据库参数进行处理后,能够得到质量分布均衡的多组数据库样本参数。之后,可以结合目标数据库状态进行分析阶段处理,最终得到用以模型训练的高质量且分布均衡的样本数据。
具体的,上文描述的分析阶段可以包括上述实施例样本数据的获取细化过程,如图7所示,该分析阶段所执行的操所步骤可以包括但并不局限于:
步骤S71,获取各组所述数据库样本参数分别应用于目标数据库,得到的各数据库样本参数的性能值;
步骤S72,依据同一组数据库样本参数各自对应的性能值,以及目标数据库的不同性能优化权重,确定各数据库样本参数对应的适应值;
继上述前期准备阶段的相关描述,本申请实施例中,需要依据迭代学习得到的各组数据库样本参数的重要性排序,来筛选更重要的K个目标样本参数,所以,为了更加合理且准确地计算各数据库样本参数的重要性,本申请可以结合各组数据库样本参数的适应值实现。该适应值的大小可以由如吞吐量、延迟时间等各类性能的性能值确定,具体可以用户对目标数据库的性能优化要求,即用户更关注目标数据库的吞吐量还是延迟时间,由样本参数对应的相应性能值确定其适应值,具体可以直接将该性能值作为适应值,也可以按照一定计算规则对性能值进行计算得到适应值等,本申请对步骤S72的具体实现方法不做限制。
步骤S73,按照目标数据库的性能波动区间,对所确定的各数据库样本参数的适应值进行分割,得到相应数据库样本参数的特征标签;
在实际应用中,因不可控因素的影响,数据库本身存在些许性能波动,所以,本申请不是直接将适应值作为特征标签,而是按照性能波动区间,对各数据库样本参数的适应值进行分割,从而使适应值相近的数据库样本参数具有相同的特征标签,即适应值属于同一性能波动区间的数据库样本参数的特征标签相同,这样能够减小数据库自身性能波动所造成的不利影响,从而使得后续处理结果具有更高的稳定性和准确性。
其中,对于上述性能波动区间的获取过程,可以按照上述方式将各数据库优化参数应用到数据库实例上,对于每一数据库优化参数可以进行多次测试,由测试结果计算得到相应的均值和方差,得到正态分布的性能波动,且大约有95.4%数值分布在距离均值有2个标准差之内的范围,因此,性能波动区间的上下界可以为[μ-2σ,μ+2σ],性能波动区间可以为4σ。而在各样本参数的多次测试过程中,确定性能波动区间相差很小,可以认为性能波动区间与样本参数无关,与数据库实例运行的实际工作负载相关,即上述性能波动区间大小与目标数据库的工作负载关联。
步骤S74,利用该特征标签,对多组数据库样本参数各自包含的多个数据库样本参数进行重要性排序;
步骤S75,按照重要性排序结果,由每一组数据库样本参数中重要性较高的第一数量个数据库样本参数,构成一组目标样本参数。
继上文描述,在记忆池中的数据库样本参数的数量较多的情况下,按照本实施例描述的方式得到的数据库样本参数重要性排序结果,与直接按照性能值大小(如上述性能指标大小)的重要性排序结果基本相同。所以,在数据库样本参数的数据量大于一定阈值的情况下,本申请可以根据实际情况任选一种方式,获得数据库样本参数重要性排序结果。然而,在数据库样本参数的数量较小的情况下,会放大性能波动所造成的不利影响,所以,为了提高重要性排序结果的准确性,可以采用本申请实施例描述这种方式。
需要说明,在完成数据库样本参数的重要性排序,选择出的更加重要的第一数量(即上述K)个目标样本参数的具体选择方法,以及该第一数量的数值本申请均不作限制,可视情况而定。对于每一组数据库样本参数的降维处理过程相同,本申请可以按照上述方式对多组数据库样本参数进行降维处理,得到相应的多组目标样本参数,实现过程不做一一详述。
对于上述前期准备阶段和分析阶段执行的数据质量改善方法,为了更清楚其对模型训练及参数调优的影响效果,参照图8a所示的记忆池数据质量分布示意图,若将最好的参数性能10%波动左右的参数记为最好的记忆(best memory),将最好的参数性能10%-30%波动左右的参数记为较好的记忆(better memory),将剩余记为bad memory。经过研究比对,目前的Best Config、OtterTune和CDBTune这几种数据库参数调整方法应用中,由于数据库参数的大量解空间中,只有极少数参数能够得到较好性能,即如图8a所示,其记忆池数据质量分布都非常不均衡。本申请实施例上文描述的方法,能够有效改善该问题,从而使其能够更好应用于深度强化学习。
而且,参照图8b所示的选择top-k调参性能效果示意图,对准备阶段经过优化迭代学习到的各组数据库样本参数进行重要排序,选择其中K个最重要的参数作为目标样本参数进行调优,即对深度强化学习网络的网络结构进行优化调整,从而避免不重要数据库样本参数对数据库性能优化的不利影响。如图8b所示,所选取的K的取值不同,所达到的效果往往不同,可以依据实际需求确定K的数值,如为了提高调优效率,可以选择20个参数作为一组样本参数进行后续处理,即K=20,但并不局限于该数值。
其中,参照图8c所示的调参时间示意图,按照上述对各组推荐参数进行重要性排序,以对相应一组推荐参数进行降维处理,能够显著降低数据库调参时间,且这种降维处理方式,对数据库性能的损失非常小,在时间要求苛刻的条件下,可以采用这种降维处理方式,在短时间内获取高性能的样本参数,提高模型训练效率,进而提高数据库参数调整效率,即提高数据库性能优化效率。
在本申请提出的又一些实施例中,如本申请上述各实施例描述的参数调整模型的训练过程,即对目标数据库的参数调整过程中,由于深度强化学习网络由第一深度强化学习网络和第二深度强化学习网络构成,该第一深度强化学习网络可以根据输入的目标样本状态信息,输出相应的候选数据库参数,且在该过程中将依据所选定的参数推荐策略实现,该参数推荐策略具体可以是从预先确定的多个参数生成策略中选定,使得在不同训练阶段所依据的推荐策略的内容可能不同,可以依据但并不局限于实际样本数据量来确定。
在一种可能的实现方式中,本申请的多个参数生成策略可以采用分段函数的方式进行表示,每一段函数可以表示一种参数生成策略,且对应有策略执行条件,在数据库参数调整过程中,满足哪一个策略执行条件,即可按照对应的参数生成策略,获取相应的动作空间,进而得到能够优化目标数据库性能的一组参数,本申请对各参数生成策略及其对应的策略执行条件的内容不做限制。
具体的,相对于目前的贪心策略,本申请可以采用如下公式(1)这种分段函数,来确定上述参数推荐策略,该分段函数的可以输Aoutput可以表示针对第一深度学习网络输入的状态信息,而输出的候选数据库参数(此处具体可以指参数值)。
如公式(1)所示,Arandom可以表示随机生成策略,即基于多组数据库样本参数,随机得到候选数据库参数,其主要是在调参前期阶段采用;N(A,σ)可以表示第一正态分布生成策略,其可以是基于深度强化网络中的神经网络预测结果,得到候选数据库参数,具体可以从以第一深度强化学习网络输出的预测值或其附件参数值A为μ值,σ为标准差的正态分布函数中,选取一个参数值为待推荐参数,随着调参次数增加,记忆池数据不断增加,采用这种策略的概率也会逐渐增大;N(Abest,σ)可以表示第二正态分布生成策略,其可以是基于准备阶段得到的多组模型结构训练数据,得到候选数据库参数,具体可以是对目前历史最优解Abest周围探索,由将最优解Abest确定为μ值,利用探索到的较优解(可以结合上述前期准备阶段的描述),构成σ为标准差的正态分布函数,从中选择一个参数值为候选数据库参数,随着调参次数增加,记忆池数据不断增加,采用这种策略的概率也会逐渐增大。
其中,上述正态分布函数中的σ数值可以是模型训练前预设的,依据用户对目标数据库的性能优化要求,确定要将输出的待推荐参数集中在μ附近,可以适当减少σ;反之可以适当增大σ。而且,若本申请希望模型搜索功能更强大,能够适用于更多数据库,也可以适当增大σ;若本申请更注重模型自身的预测结果,可以适当减少σ。可见,本申请对σ的具体数值不做限制,可视情况而定。
上述公式中α、β、γ分别表示相应参数生成策略各自的选择概率,在实际应用中,随着记忆池包含的模型结构训练数据的数据量增加,可以按照预设的调整步长减小α、增大β和γ等,本申请对选择概率的具体更新方法不做限制。因此,在实际应用中,可以获取得到的模型结构训练数据的当前数据量;依据该当前数据量,更新多个参数生成策略各自对应的选择概率,即获取所述当前数据量相对于上一次更新所述选择概率对应数据量的数据增长量;按照数据增长量对应的调整步长,增大第一正态分布生成策略和第二正态分布生成策略各自对应的选择概率,并减小所述随机生成策略的选择概率,之后,对更新后的多个选择概率进行比较,得到多个选择概率的比较结果;从多个参数生成策略中,选择与比较结果匹配的参数生成策略确定为参数推荐策略,如上述公式(1)所示,更新后的选择概率,满足哪个不等式关系,将其对应的参数生成策略确定为推荐策略。
可选的,若上述当前数据量大于数据量阈值,按照第一正态分布生成策略得到的候选数据库参数,与按照第二正态分布生成策略得到的候选数据库参数之间的差值小于预设参数阈值,即这两种策略得到的候选数据库参数差别不大,具体可以直接按照第一正态分布生成策略或第二正态分布生成策略,得到样本状态信息对应的候选数据库参数。
结合上文各实施例描述的数据库参数调整方法,参照图9示的适用于上述各实施例描述的数据库参数调整方法的系统架构图,调整设备300在实现该数据库参数调整过程中,可以分为准备阶段Preparer、分析阶段analyst及调优阶段tuner,通过如上述实施例描述的准备阶段和分析阶段所表示的方法,改善记忆池(如Shared Pool)数据质量,具体的,通过改进的遗传算法GA实现样本数据质量平衡,得到多组数据库样本参数,并将其应用于目标数据库,得到相应的多组模型结构训练数据写入该记忆池,作为调参前期的记忆数据,实现网络结构的调整;采用随机森林算法实现多组数据库样本参数的重要性排序,并通过PCA算法实现状态信息的降维处理,之后,采用基于DDPG的深度强化学习模型,训练得到适用于目标数据库的目标推荐参数,并得到相应的参数调整模型。
其中,在上述目标数据库的参数调整过程中,可以利用按照目标数据库的实际工作负载运行的数据库实例,如CDB数据库为例,对初始参数、样本参数等数据库参数的压力测试,即将该数据库参数应用于相应的数据库实例中,按照目标数据库的实际工作负载运行,进行压力测试,得到相应的性能向量,进而据此实现参数筛选。
在实际应用中,如图9示,可以将每一个任务机器记为一个Actor,每个Actor可以与多个CDB(并不局限于这种数据库)实例进行交互,以满足不同客户端发起的参数调整请求。具体的,可以由控制设备中的负载生成器来重放目标数据库的实际工作负载,以使数据库系统中的数据库实例按照该实际工作负载运行,以满足测试需求。为了满足客户端发起的参数调整请求,可以由控制设备中的状态采集器获取目标数据库的当前状态信息,输入相应的参数调整模型,得到优化目标数据库性能所需的推荐参数。
基于上述分析,若上述初始深度强化学习模型包括第一深度强化学习网络(如Actor网络)和第二深度强化学习网络(如Critic网络),如图10,针对目标数据库的参数调整模型的训练方法具体可以包括但并不局限于以下步骤:
步骤S101,将一组样本状态信息输入第一深度强化学习网络,按照所选定的参数推荐策略,确定相应的一组待推荐参数;
步骤S102,获取多组初始数据库参数分别应用于目标数据库所得到的多个第一数据库性能值,以及多组待推荐参数分别应用于目标数据库所得到的多个第二数据库性能值;
步骤S103,利用多个第一数据库性能值、多个第二数据库性能值,以及目标数据库的不同数据库性能的性能优化权重,获取本次训练的调优激励参数;
结合上述分析,该调优激励参数能够表征目标数据库在应用所确定的一组待推荐参数,相对于应用所述默认参数(如上述初始数据库参数)产生的性能变化。在一种可能的实现方式中,本申请可以采用但并局限于如下公式(2)记载的激励函数公式,来计算每次训练的调优激励参数:
上述公式(2)中,T0可以表示目标数据库在应用默认参数下所得的吞吐量初始值,L0表示目标数据库在应用默认参数下所得的延迟初始值;Tt表示目标数据库应用t时刻输入的数据库样本参数所得到的吞吐量;Lt可以表示目标数据库应用t时刻输入的数据库样本参数所得到的延迟值;a可以表示不同性能的调整权重,其可以根据实际业务应用是侧重吞吐还是延迟来确定该调整权重。可以理解,上述各实施例中涉及到的调优激励参数,也可以按照这种方法计算得到,本申请不做一一详述。
步骤S104,将一组样本状态信息及一组待推荐参数,输入第二深度强化学习网络,输出相应的配置评分;
步骤S105,依据配置评分和多组模型结构训练数据,调整第一深度强化学习网络的网络参数,以提升上述调优激励参数;
步骤S106,若满足训练终止条件,将最终训练得到的第一深度强化学习网络和第二深度强化学习网络构成的网络模型,确定为针对按照实际工作负载运行的数据库实例的参数调优强化模型。
结合上述分析,本申请实施例得到的用以训练的四元组为(S,R,S_,M),其中,S可以表示目标数据库的当前状态信息,R可以表示上述调优激励参数,S—可以表示压力测试后的目标数据库的样本状态信息,M可以表示目标Actor神经网络得到的动作空间,对其进行处理后,可以得到相应的待推荐参数(即候选数据库参数)。结合上文对深度强化学习的模型结构及其工作原理的相关描述,可以利用该四元组完成模型训练。
具体的,上述Actor网络和Critic网络均可以由预测神经网络和目标神经网络两部分构造,该预测神经网络可以对输入的样本状态信息进行学习迭代,Actor梯度上升模型利用Critic预测神经网络输出的Q估计值,以及记忆池存储的模型结构训练数据进行梯度上升学习,Critic目标神经网络得到的性能变化累积值Q真实可以表示Q真实=R+γ*Q目标,γ可以表示衰减率,其与该Critic预测神经网络得到的Q估计值进行相减,再通过均方误差的计算方式,得到Critic Loss损失值,据此结合记忆池存储的模型结构训练数据(其包括准备阶段得到的多组模型结构训练数据,以及每次网络输出的待推荐参数应用于目标数据库,得到的模型结构训练数据)进行梯度下降处理,具体实现过程本申请不做详述。在每次训练可以通过抽样学习的方式,使得各目标神经网络通过预测神经网络的预测结果,以如下公式(3)表示的软更新的方式进行缓慢更新,直至满足训练终止条件。
target=(1-θ)*predict+θ*predict; (3)
上述公式(3)中,target可以表示目标神经网络,predict可以表示预测神经网络,θ可以用以控制模型更新速度,即目标神经网络以参数θ的比例,从预测神经网络进行逐步更新,为了避免更新过快导致模型过拟合,θ取值往往比较小,如0.01等,本申请对θ的具体数值不做限制。需要说明,对于上述Actor网络和Critic网络这两部分,均可以按照公式(3)实现相应目标神经网络的更新,实现过程类似本申请不做详述。
为了提高上述模型训练效率,无论是在上述多组初始数据库参数优化迭代处理过程,还是多组数据库样本参数和多组状态信息降维处理过程,还是上述利用多组样本参数和多组样本状态信息对深度强化学习网络进行训练学习过程,均可以调用多个线程并行化实现,当然,也可以选择部分处理过程调用多线程实现,也就是说,上述多组样本参数和/或多组样本状态信息,通过所调用的不同线程获取;上述参数调整模型具体通过所调用的不同线程利用相应的一组样本参数及一组样本状态信息,分别对深度强化学习网络进行训练得到,具体实现过程本申请不做详述。
示例性的,以在Sysbench512线程的环境下执行本申请提出的数据库参数调整方法为例,参照图11a所示的Sysbench下不同工作负载数据库参数调整效果示意图,本申请提出的数据库参数调整方法(记为Htune)的效果最好,所需时间也更少。而其他数据库参数调整方法中,记忆池中存在大量质量很差的数据,极少高质量数据,容易导致神经网络过拟合,且需要探索的解空间巨大,很容易陷入局部最优,并不是每次都能够确定优秀的推荐参数。
本申请通过在如CDB_A、CDB_B、CDB_C…CDB_G、CDB_H等多种规格的数据库实例上进行验证,参照图11b所示的TPC-C工作负载下不同规格数据库实例参数调整的性能效果图,可知本申请这种数据库参数调整方法都能够达到非常显著的效果,满足应用需求。
而且,本申请利用多线程实现的并行化调整方式,在上述选择的Top-K为50的情况下,分布对数据库实例并发度未1、5、10、15和20进行了测试,得到相应的加速比,如图11c所示的并行度加速比示意图,本申请通过提高并发度,能够显著降低模型训练时间,从而提高数据库参数调整效率。
参照图12,为本申请提出的数据库参数调整装置的一可选示例的结构示意图,该装置可以包括:
参数调整请求获得模块310,用于获得针对目标数据库的参数调整请求;
信息获取模块320,用于根据所述参数调整请求获取所述目标数据库的当前状态信息;
候选数据参数得到模块330,用于将所述当前状态信息输入参数调优强化模型,得到所述当前状态信息对应的调优激励参数和候选数据库参数;
其中,所述参数调优强化模型是基于多组数据库样本参数训练得到的,所述数据库样本参数为基于初始数据库参数每次进行性能优化迭代所筛选得到的。
参数调优模块340,用于在所述候选数据库参数未满足数据库性能条件的情况下,通过所述参数调优强化模型基于所述调优激励参数进行循环迭代,直至所述参数调优强化模型输出的候选数据库参数满足所述数据库性能条件;
目标推荐参数确定模块350,用于以满足所述数据库性能条件的候选数据库参数,作为所述目标数据库的目标推荐参数。
在一些实施例中,为了训练参数调优强化模型,获取所需的模型结构训练数据,如图13所示,上述候选数据参数得到模块330可以包括:
第一数据库参数集构建单元331,用于构建针对目标数据库的第一数据库参数集,所述第一数据库参数集包含有多组初始数据库参数;
性能优化迭代单元,用于对所述多组初始数据库参数进行性能优化迭代,筛选每次性能优化迭代中的第一类数据库参数组至下一次性能优化迭代,直至满足迭代终止条件,得到多组数据库样本参数;其中,所述第一类数据库参数组包括数据库性能指标达到性能优化阈值的一组或多组数据库参数,所述数据库性能指标是将所述数据库参数应用于所述目标数据库得到的;
样本状态信息获取单元,用于获取所述多组数据库样本参数应用于所述目标数据库各自的样本状态信息;
模型训练单元,用于基于所述多组数据库样本参数和所述多组样本状态信息,对深度强化学习网络进行循环训练,直至满足训练终止条件,将最终训练得到的深度强化学习网络确定为参数优化强化模型;
其中,如图13所示,上述性能优化迭代单元可以包括:
第一性能指标获取单元332,用于获取所述多组初始数据库参数各自的数据库性能指标;
可选的,该第一性能指标获取单元332可以包括:
第一性能向量得到单元,用于将所述多组初始数据库参数应用于所述目标数据库,得到相应的数据库性能向量;
性能值运算单元,用于对所述数据库性能向量包含的多个数据库性能值进行加权求和,得到相应组初始数据库参数的数据库性能指标;
第一类数据库参数组筛选单元333,用于利用所述数据库性能指标,筛选多组初始数据库参数中的第一类数据库参数组;
第二类数据库参数组构建单元334,用于依据所述第一类数据库参数组,构建第二类数据库参数组;
可选的,该第二类数据库参数组构建单元334可以包括:
第三类数据库参数组确定单元,用于依据所述第一类数据库参数组的数据库性能指标,确定所述第一类数据库参数组中的第三类数据库参数组;
其中,所述第三类数据库参数组中不包含所述第一类数据库参数组中最高数据库性能指标对应的数据库参数组;
交叉替换处理单元,用于对所述第三类数据库参数组包含的不同组数据库参数进行交叉替换处理,得到的第二类数据参数组;
第二数据库参数集构成单元335,用于由所述第一类数据库参数组与所述第二类数据库参数组构成第二数据库参数集;其中,所述第二数据库参数集与所述第一数据库参数集所包含的数据库参数组数相同;
可选的,该第二数据库参数集构成单元335可以包括:
参数突变处理单元,用于对所述第一类数据库参数组和所述第二类数据库参数组中的第四类数据库参数组进行参数突变处理;
第二数据库参数集构成单元,用于由参数突变处理后的数据库参数组、未参与所述参数突变处理的一组数据库参数,以及所述第一类数据库参数组构成第二数据库参数集;
其中,所述未参与所述参数突变处理的一组数据库参数是指所述第一类数据库参数组和所述第二类数据库参数组中,具有最高数据库性能指标的一组数据库参数。
第一检测单元336,用于检测不满足性能优化迭代终止条件,触发第一性能指标获取单元332继续对所述第二数据库参数集包含的多组数据库参数进行优化迭代,直至满足所述性能优化迭代终止条件,将最后一次性能优化迭代得到的数据库参数确定为数据库样本参数。
可选的,上述模型训练单元可以包括:
调优激励参数获取单元,用于获取所述多组样本状态信息各自对应的调优激励参数;
模型结构训练数据构成单元,用于将所述目标数据库的初始状态信息、所述多组数据库样本参数、所述多组样本状态信息,以及所述多组样本状态信息对应的调优激励参数,构成的多个四元组确定为多组模型结构训练数据;
网络学习单元,用于在所述目标数据库按照实际工作负载运行的过程中,利用所述多组数据库样本参数、所述多组样本状态信息以及所述多组模型结构训练数据,对深度强化学习网络进行循环训练。
可选的,上述调优激励参数获取单元可以包括:
数据库性能值获取单元,用于获取所述多组初始数据库参数分别应用于所述目标数据库所得到的多个第一数据库性能值,以及所述多组数据库样本参数分别应用于所述目标数据库所得到的多个第二数据库性能值;
性能优化权重确定单元,用于确定所述目标数据库的不同数据库性能的性能优化权重;
调优激励参数得到单元,用于利用所述性能优化权重、所述多个第一数据库性能值及所述多个第二数据库性能值,得到相应一组数据库样本参数对应的调优激励参数;其中,一组所述数据库样本参数对应有一组所述数据库样本状态信息。
在又一些实施例中,为了获取所需的模型结构训练数据,如图13所示,上述候选数据参数得到模块330还可以包括:
性能值获取单元337,用于获取各组所述数据库样本参数分别应用于目标数据库,得到的各数据库样本参数的性能值;
数据库样本参数得到单元338,用于依据同一组数据库样本参数各自对应的所述性能值,对该组数据库样本参数进行降维处理,得到相应的一组目标样本参数;
可选的,该数据库样本参数得到单元338可以包括:
适应值确定单元,用于依据同一组数据库样本参数各自对应的所述性能值,以及所述目标数据库的不同性能优化权重,确定各数据库样本参数对应的适应值;
特征标签得到单元,用于按照所述目标数据库的性能波动区间,对所确定的所述各数据库样本参数的适应值进行分割,得到相应数据库样本参数的特征标签;其中,所述适应值属于同一所述性能波动区间的所述数据库样本参数的特征标签相同;
排序单元,用于利用所述特征标签,对所述多组数据库样本参数各自包含的多个数据库样本参数进行重要性排序;
数据库样本参数构成单元,用于按照重要性排序结果,由每一组数据库样本参数中重要性较高的第一数量个数据库样本参数参数,构成一组数据库样本参数。
样本状态信息得到单元339,用于通过主成分分析方式,对所述多组样本状态信息分别进行降维处理,得到多组目标样本状态信息。
相应地,上述模型训练单元具体用于利用所述多组目标样本参数、所述多组目标样本状态信息以及所述多组模型结构训练数据,对深度强化学习网络进行循环训练。
基于上述描述,为了训练参数调优强化模型,上述候选数据参数得到模块330还可以包括:
训练单元,用于在所述目标数据库按照实际工作负载运行的过程中,将所述目标样本状态信息输入深度强化学习网络,按照参数推荐策略得到所述目标样本状态信息对应的候选数据库参数;
可选的,参数推荐策略是从预设的多个参数生成策略中选定的;所述多个参数生成策略包括随机生成策略、第一正态分布生成策略和/或第二正态分布生成策略,其中:所述随机生成策略包括基于多组数据库样本参数,随机得到候选数据库参数;所述第一正态分布生成策略包括基于所述深度强化网络中的神经网络预测结果,得到候选数据库参数;所述第二正态分布生成策略包括基于得到的模型结构训练数据,得到候选数据库参数。
模型训练数据得到单元,用于将所述候选数据库参数应用于所述目标数据库,得到所述样本状态信息对应的模型训练数据;
网络参数调整单元,用于基于得到的多组模型训练数据,调整所述深度强化学习网络的网络参数;
存储单元,用于将参数优化强化模型与按照所述实际工作负载运行的数据库实例进行关联存储。
在一些实施例中,为了选定参数推荐策略,上述训练单元可以包括:
数据量获取单元,用于获取得到的模型结构训练数据的当前数据量;其中,所述模型结构训练数据的数据量随着深度强化学习网络的训练次数增加而增多;
选择概率更新单元,用于依据所述当前数据量,更新所述多个参数生成策略各自对应的选择概率;
其中,随着所述记忆池所存储的各组模型结构训练数据的数据量增多,增大所述第一正态分布生成策略和所述第二正态分布生成策略各自对应的选择概率,并减小所述随机生成策略的选择概率。
可选的,上述选择概率更新单元可以包括:
数据增长量获取单元,用于获取所述当前数据量相对于上一次更新所述选择概率对应数据量的数据增长量;
更新单元,用于按照所述数据增长量对应的调整步长,增大所述第一正态分布生成策略和所述第二正态分布生成策略各自对应的选择概率,并减小所述随机生成策略的选择概率;
其中,若所述当前数据量大于数据量阈值,按照所述第一正态分布生成策略得到的候选数据库参数,与按照所述第二正态分布生成策略得到的候选数据库参数之间的差值小于预设参数阈值,所述按照参数推荐策略得到所述样本状态信息对应的候选数据库参数,具体可以为按照所述第一正态分布生成策略或所述第二正态分布生成策略,得到所述样本状态信息对应的候选数据库参数。
比较单元,用于对更新后的多个所述选择概率进行比较,得到多个所述选择概率的比较结果;
推荐策略选择单元,用于从所述多个参数生成策略中,选择与所述比较结果匹配的参数生成策略确定为参数推荐策略。
需要说明的是,关于上述各装置实施例中的各种模块、单元等,均可以作为程序模块存储在存储器中,由处理器执行存储在存储器中的上述程序模块,以实现相应的功能,关于各程序模块及其组合所实现的功能,以及达到的技术效果,可以参照上述方法实施例相应部分的描述,本实施例不再赘述。
在本申请实际应用中,如本申请公开的数据库存储调整方法和装置,其中的数据库、控制设备、调整设备等多个计算机设备可以组成为一个区块链,各计算机设备可以是区块链上的节点,数据库以及训练得到的各参数调整模型等,可以存储于区块链上,在客户端访问某数据库,以调整其配置参数,优化其性能的场景下,可以从其他区块链节点上,调用相应的参数调整模型,满足应用需求,具体实现过程可以参照上述实施例相应部分的描述,本实施例不做赘述。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行,实现上述数据库参数调整方法的各步骤,该信息处理方法的实现过程可以参照上述方法实施例的描述,本实施例不再赘述。
本申请还提出了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述数据库参数调整方法方面或数据库参数调整装置方面的各种可选实现方式中所提供方法,具体实现过程可以参照上述相应实施例的描述,不做赘述。
最后,需要说明,本说明书中各个实施例采用递进或并列的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的核心思想或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。