本发明涉及人工智能技术领域,具体地,涉及一种基于神经网络的数据库清理方法及系统。
背景技术:
数据库中包含数据表,数据表是一个临时保存数据的网格虚拟表,是数据存储中最常见和最简单的形式,并且在数据库中占据实际的物理空间。
随着时间推移,数据库中的数据表会逐渐增多,数据表中存储的数据量逐渐增大,表中会产生残留垃圾数据或冗余字段,内存碎片等问题。对于数据库中这些过于冗余,无用,难以检索的数据表,数据库的空间性能和使用性能将出现明显下滑,例如数据量少的表却占用很大的物理空间,或者对于数据量大的表的检索速度很慢等。
针对上述情况现在已经存在很多的数据库清理方法,例如分库分表,碎片清理,建立索引,压缩备份等。但是上述方法仅仅基于数据表的一个属性对数据表标记策略,因此通过上述方法无法得到最优的清洗数据库的策略。现有技术需要具有多年的经验专家在粗略对数据库进行标记的基础上相互讨论并再次对数据库标记相应的策略。面对巨大的数据库,专家对每张表进行标记的策略无法实现。如果仅按照对数据库进行粗略标记的策略清理数据库,则清理后的数据库的性能不佳。
技术实现要素:
本发明实施例的主要目的在于提供一种基于神经网络的数据库清理方法及系统,以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能。
为了实现上述目的,本发明实施例提供一种基于神经网络的数据库清理方法,包括:
根据当前数据表的特征构造当前数据表特征矩阵;
将当前数据表特征矩阵输入最优数据清理模型中,得到当前清理策略;其中,最优数据清理模型通过如下步骤创建:将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略,根据预测清理策略和实际清理策略创建最优数据清理模型;
根据当前清理策略清理当前数据表。
本发明实施例还提供一种基于神经网络的数据库清理系统,包括:
当前矩阵构造单元,用于根据当前数据表的特征构造当前数据表特征矩阵;
当前清理策略单元,用于将当前数据表特征矩阵输入最优数据清理模型中,得到当前清理策略;其中,最优数据清理模型通过如下步骤创建:将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略,根据预测清理策略和实际清理策略创建最优数据清理模型;
数据表清理单元,用于根据当前清理策略清理当前数据表。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,处理器执行计算机程序时实现所述的基于神经网络的数据库清理方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现所述的基于神经网络的数据库清理方法的步骤。
本发明实施例的基于神经网络的数据库清理方法及系统先根据当前数据表的特征构造当前数据表特征矩阵,再将当前数据表特征矩阵输入最优数据清理模型中以得到当前清理策略,最后根据当前清理策略清理当前数据表,可以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中基于神经网络的数据库清理方法的流程图;
图2是本发明实施例中创建最优数据清理模型的流程图;
图3是本发明实际应用中数据库清理系统的结构图;
图4是数据清理模型的示意图;
图5是本发明另一实施例中创建最优数据清理模型的流程图;
图6是本发明实施例中基于神经网络的数据库清理系统的结构框图;
图7是本发明实施例中计算机设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
鉴于现有技术清洗数据库的策略存在缺陷,本发明实施例提供一种基于bp神经网络的数据库清理方法,可以根据为每个表智能分配的清理策略清理数据库中的全部数据表,以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能。以下结合附图对本发明进行详细说明。
图1是本发明一实施例中基于神经网络的数据库清理方法的流程图。图3是本发明实际应用中数据库清理系统的结构图。如图3所示,数据库清理系统分为三个部分:数据输入层、推理层和数据输出层。其中数据输入层用于对数据库中的数据表进行属性解析,然后对表的属性信息进行编码,生成二维矩阵作为数据表特征矩阵。推理层基于bp神经网络模型对数据表特征矩阵进行推理,得到一维向量作为推理结果。输出层主要计算一维向量的推理结果与每一个清理策略匹配的概率,然后通过对比概率大小为每个表匹配一个清理策略。
如图1和图3所示,基于神经网络的数据库清理方法包括:
s101:根据当前数据表的特征构造当前数据表特征矩阵。
具体实施时,s101主要包括以下四步:
(1)获取当前数据表的特征(属性信息),包括数据表名、数据表类型、数据表功能特点、数据表字段、数据表条目数、数据表占用空间大小、数据表实际分配大小、数据表空间利用率,数据表存储过程数量和当前数据表时间距离上一次维护的时长等。
(2)对数据表的每一个特征进行解析编码。
a、数据表名是由字母,下划线和数字组成,并且字符长度不超过25个字符。根据计算机ascii码,每个符号对应八位二进制,因此数据表名的编码为1×200维向量。
b、数据表类型是表示数据表重要程度的特征,分为普通表或重要表。如果数据表为普通表则记为0,如果数据表为重要表则记为1。可以使用1×200维向量的编码表示数据表类型。
c、数据表功能特点是表示数据表作用的特征,包括信息表、日志表和历史表等类型。基于二进制计量方法对全部数据表类型开始依次编号,使用1×200维向量进行存储。
d、数据表字段用于记录数据表的数据信息,由字母,下划线和数组组成,不超过25个字符。选取索引字段在内的五个字段,根据计算机ascii码,每个符号对应八位二进制,将数据表字段编码为5×200维向量。
e、数据表条目数表示数据表具有的记录数的数量。可以基于二进制计量方法使用1×200维向量进行存储。
f、数据表占用空间大小表示一个数据表已用的存储空间,使用mb表示。可以基于二进制计量方法使用1×200维向量进行存储。
g、数据表实际分配大小表示创建一个数据表分配的空间大小,使用mb表示。可以基于二进制计量方法使用1×200维向量进行存储。
h、数据表空间利用率表示现有的数据已经使用的空间大小占实际分配数据表空间大小的比例。可以基于二进制计量方法使用1×200维向量进行存储。
i、数据表存储过程数量表示使用该数据表时存储过程的数量,使用mb表示。可以基于二进制计量方法使用1×200维向量进行存储。
j、当前数据表时间距离上一次维护的时长使用月为单位,可以基于二进制计量方法使用1×200维向量进行存储。
(3)将所有特征进行整合:将十四个1×200维向量的顺序随机打乱,得到14×200维矩阵。
(4)按14×200维矩阵每一行所在的顺序,将该矩阵所有行的值进行拼接,得到1×2800维特征矩阵,每一个值代表一个节点。1×2800维特征矩阵为当前数据表特征矩阵。
同理,根据上述方法也可以得到历史数据表特征矩阵。
s102:将所述当前数据表特征矩阵输入最优数据清理模型中,得到当前清理策略。
其中,最优数据清理模型通过如下步骤创建:将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略,根据预测清理策略和实际清理策略创建最优数据清理模型。
表1
表1是数据清理模型示意表。图4是数据清理模型的示意图。如表1和图4所示,本发明的数据清理模型基于bp(backpropagation,误差逆向传播)神经网络,分为四层。其中输入inputi表示上一层的第i个节点的值,隐藏层由可优化的二维参数矩阵weighti,j组成表示网络模型中需要训练的第i行第j列的参数,输出outputj是基于如下公式进行计算,得到的输出的特征矩阵的第j个节点的值。
outputj=∑inputi*weighti,j。
数据清洗模型第一层输入的特征矩阵为当前数据表特征矩阵,矩阵大小为1×2800,隐藏层的参数矩阵大小为2800×512,输出的特征矩阵大小为1×512。第二层输入的特征矩阵为上一层(第一层)的输入矩阵,隐藏层的参数矩阵大小为512×256,输出的特征矩阵大小为1×256。第三层输入的特征矩阵为上一层(第二层)的输入矩阵,隐藏层的参数矩阵大小为256×64,输出的特征矩阵大小为1×64。第四层输入的特征矩阵为上一层(第三层)的输入矩阵,输出的特征矩阵表示清理策略的概率大小,本发明的清理策略包括分区、删除、备份、压缩和物化视图,因此输出的特征矩阵大小为1×5,隐藏层的参数矩阵大小为64×5。
根据输出的特征矩阵确定上述五个清理策略的匹配概率,确定匹配概率的最大值对应的清理策略为当前清理策略。
s103:根据当前清理策略清理当前数据表。
图1所示的基于神经网络的数据库清理方法的执行主体可以为计算机。由图1所示的流程可知,本发明实施例的基于神经网络的数据库清理方法先根据当前数据表的特征构造当前数据表特征矩阵,再将当前数据表特征矩阵输入最优数据清理模型中以得到当前清理策略,最后根据当前清理策略清理当前数据表,可以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能。
图2是本发明实施例中创建最优数据清理模型的流程图。图5是本发明另一实施例中创建最优数据清理模型的流程图。如图2和图5所示,将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略,根据预测清理策略和实际清理策略创建最优数据清理模型包括:
执行如下迭代处理:
s201:将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略。
其中,可以从数据库中选取用于训练最优数据清理模型的训练集,训练集包括历史数据表特征矩阵和实际清理策略。可以通过如下方式确定实际清理策略:
(1)将不重要的临时数据表粗略匹配删除策略。
(2)将年代久远的历史数据表粗略匹配备份策略。
(3)将重要且经常进行查找等操作的大型数据表粗略匹配分区策略。
(4)将空间利用率不高的数据表粗略匹配压缩策略。
(5)将经常一起使用并且有联系的数据表粗略匹配物化视图策略。
(6)进行二层标签适配。可以采用专家评审的方法选取数据库中最具有代表性的2000个数据表,基于其中的1500个数据表生成历史数据表特征矩阵和对应的实际清理策略作为训练集,每种实际清理策略大约对应300个数据表。基于其中的500个数据表生成测试数据表特征矩阵和对应的实际清理策略作为测试集。
s202:确定预测清理策略对应的预测损失函数和实际清理策略对应的实际损失函数。
一实施例中,确定预测清理策略对应的预测损失函数包括:
确定预测清理策略对应的数据表搜索速度预测值和数据表空间利用率预测值;
根据数据表搜索速度预测值和数据表空间利用率预测值确定预测清理策略对应的预测损失函数。
具体实施时,可以通过如下公式确定预测损失函数:
loss1=λspeed1(select)+(1-λ)util1(space);
其中,loss1为预测损失函数,speed1(select)为数据表搜索速度预测值,util1(space)为数据表空间利用率预测值,λ为数据表搜索速度与数据表空间利用率在本次数据库清理中的比重。
一实施例中,确定实际清理策略对应的实际损失函数包括;
确定实际清理策略对应的数据表搜索速度实际值和数据表空间利用率实际值;
根据数据表搜索速度实际值和数据表空间利用率实际值确定实际清理策略对应的实际损失函数。
具体实施时,可以通过如下公式确定实际损失函数:
loss2=λspeed2(select)+(1-λ)util2(space);
其中,loss2为实际损失函数,speed2(select)为数据表搜索速度实际值,util2(space)为数据表空间利用率实际值。
s203:判断预测损失函数与实际损失函数的误差是否小于预设阈值。
本发明采用正向传播的方法计算误差,误差为预测损失函数与历史数据表特征矩阵的实际损失函数的差值的绝对值。
s204:当误差小于预设阈值时,确定当前迭代中的初始数据清理模型为最优数据清理模型。
一实施例中,s204包括:
当误差小于预设阈值时,将测试数据表特征矩阵输入当前迭代中的初始数据清理模型中,得到测试清理策略。
根据测试清理策略与实际清理策略的比较结果确定当前迭代中的初始数据清理模型为最优数据清理模型。
具体实施时,当测试清理策略与对应的实际清理策略相同时,则记为测试正确,否则记为测试错误,根据500个数据表的比较结果确定测试正确率。当测试正确率大于预设测试阈值时,则认为确定当前迭代中的初始数据清理模型为最优数据清理模型,否则重新进行训练,返回s201。
s205:当误差大于或等于预设阈值时,根据误差更新初始数据清理模型,继续执行迭代处理。
具体实施时,可以通过误差反向传播的算法更新初始数据清理模型中的隐藏层的参数矩阵,最终得到最优数据清理模型。
本发明实施例的具体流程如下:
1、根据历史数据表的特征构造历史数据表特征矩阵。
2、将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略。
3、确定预测清理策略对应的预测损失函数和实际清理策略对应的实际损失函数,根据数据表搜索速度预测值和数据表空间利用率预测值确定预测清理策略对应的预测损失函数。
4、确定实际清理策略对应的数据表搜索速度实际值和数据表空间利用率实际值,根据数据表搜索速度实际值和数据表空间利用率实际值确定实际清理策略对应的实际损失函数。
5、判断预测损失函数与该实际损失函数的误差是否小于预设阈值。
6、当误差大于或等于预设阈值时,根据误差更新初始数据清理模型,返回步骤2。
7、当误差小于预设阈值时,将测试数据表特征矩阵输入当前迭代中的初始数据清理模型中,得到测试清理策略,根据测试清理策略与实际清理策略的比较结果确定测试正确率。当测试正确率大于预设测试阈值时,确定当前迭代中的初始数据清理模型为最优数据清理模型,否则返回步骤2。
8、根据当前数据表的特征构造当前数据表特征矩阵。
9、将当前数据表特征矩阵输入最优数据清理模型中,得到当前清理策略。
10、根据当前清理策略清理当前数据表。
综上,本发明实施例的基于神经网络的数据库清理方法先根据当前数据表的特征构造当前数据表特征矩阵,再将当前数据表特征矩阵输入最优数据清理模型中以得到当前清理策略,最后根据当前清理策略清理当前数据表,可以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能,数据表所占用的空间更少,数据表检索速度更快。
基于同一发明构思,本发明实施例还提供了一种基于神经网络的数据库清理系统,由于该系统解决问题的原理与基于神经网络的数据库清理方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。
图6是本发明实施例中基于神经网络的数据库清理系统的结构框图。如图6所示,基于神经网络的数据库清理系统包括:
当前矩阵构造单元,用于根据当前数据表的特征构造当前数据表特征矩阵;
当前清理策略单元,用于将当前数据表特征矩阵输入最优数据清理模型中,得到当前清理策略;其中,最优数据清理模型通过如下步骤创建:将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略,根据预测清理策略和实际清理策略创建最优数据清理模型;
数据表清理单元,用于根据当前清理策略清理当前数据表。
在其中一种实施例中,还包括:最优数据清理模型创建单元,用于执行如下迭代处理:
将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略;
确定预测清理策略对应的预测损失函数和实际清理策略对应的实际损失函数;
判断预测损失函数与该实际损失函数的误差是否小于预设阈值;
当误差小于预设阈值时,确定当前迭代中的初始数据清理模型为最优数据清理模型,否则根据误差更新初始数据清理模型,继续执行迭代处理。
在其中一种实施例中,最优数据清理模型创建单元具体用于:
确定预测清理策略对应的数据表搜索速度预测值和数据表空间利用率预测值;
根据数据表搜索速度预测值和数据表空间利用率预测值确定预测清理策略对应的预测损失函数;
确定实际清理策略对应的数据表搜索速度实际值和数据表空间利用率实际值;
根据数据表搜索速度实际值和数据表空间利用率实际值确定实际清理策略对应的实际损失函数。
在其中一种实施例中,最优数据清理模型创建单元具体用于:
当误差小于预设阈值时,将测试数据表特征矩阵输入当前迭代中的初始数据清理模型中,得到测试清理策略;
根据测试清理策略与实际清理策略的比较结果确定当前迭代中的初始数据清理模型为最优数据清理模型。
如图3所示,在实际应用中,数据库清理系统包括数据输入层、推理层和数据输出层。数据输入层包括当前矩阵构造单元,推理层包括当前清理策略单元和最优数据清理模型创建单元,数据输出层包括数据表清理单元。
综上,本发明实施例的基于神经网络的数据库清理系统先根据当前数据表的特征构造当前数据表特征矩阵,再将当前数据表特征矩阵输入最优数据清理模型中以得到当前清理策略,最后根据当前清理策略清理当前数据表,可以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能。
本发明实施例还提供能够实现上述实施例中的基于神经网络的数据库清理方法中全部步骤的一种计算机设备的具体实施方式。图7是本发明实施例中计算机设备的结构框图,参见图7,所述计算机设备具体包括如下内容:
处理器(processor)701和存储器(memory)702。
所述处理器701用于调用所述存储器702中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的基于神经网络的数据库清理方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
根据当前数据表的特征构造当前数据表特征矩阵;
将当前数据表特征矩阵输入最优数据清理模型中,得到当前清理策略;其中,最优数据清理模型通过如下步骤创建:将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略,根据预测清理策略和实际清理策略创建最优数据清理模型;
根据当前清理策略清理当前数据表。
综上,本发明实施例的计算机设备先根据当前数据表的特征构造当前数据表特征矩阵,再将当前数据表特征矩阵输入最优数据清理模型中以得到当前清理策略,最后根据当前清理策略清理当前数据表,可以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能。
本发明实施例还提供能够实现上述实施例中的基于神经网络的数据库清理方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于神经网络的数据库清理方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
根据当前数据表的特征构造当前数据表特征矩阵;
将当前数据表特征矩阵输入最优数据清理模型中,得到当前清理策略;其中,最优数据清理模型通过如下步骤创建:将历史数据表特征矩阵输入初始数据清理模型中,得到预测清理策略,根据预测清理策略和实际清理策略创建最优数据清理模型;
根据当前清理策略清理当前数据表。
综上,本发明实施例的计算机可读存储介质先根据当前数据表的特征构造当前数据表特征矩阵,再将当前数据表特征矩阵输入最优数据清理模型中以得到当前清理策略,最后根据当前清理策略清理当前数据表,可以对数据库进行高效精准的清理,提高数据库的空间性能和使用性能。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrativelogicalblock),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrativecomponents),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元,或装置都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。