System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于自优化,具体涉及一种表结构字段类型自优化方法及其自优化系统。
技术介绍
1、大数据分析系统中,由于数据表个数成百上千,甚至某些大型系统有数万数十万张数据表。数据表结构初始化创建时,很多字段都为了冗余,设置类型或者大小时远远超过了实际存储需要,占用了大量的空间,严重影响了系统的速度。
技术实现思路
1、本专利技术提供一种表结构字段类型自优化方法及其自优化系统,用以解决上述问题。
2、本专利技术通过以下技术方案实现:
3、一种表结构字段类型自优化方法,所述方法包括以下步骤:
4、步骤1:获取数据库元数据;
5、步骤2:根据步骤1元数据的相关信息,按照数据表的列表进行循环操作,通过length()查询每个表中每个字段的实际最大存储值的长度和实际最小长度,并且获得数据表的记录条数;
6、步骤3:基于步骤2的实际最大存储值的长度和实际最小长度与设置长度进行比对,并将比对后的结果进行类型标记;
7、步骤4:基于步骤3的比对结果,获取符合需求的字段类型和长度;
8、步骤5:基于步骤4获取的字段类型和长度,结合定时任务,对信息进行按月份的扫描,基于步骤1-4的方法得到自动生成调整类型的脚本,实现自动化检测类型及调整类型与自动化收缩长度。
9、进一步的,所述步骤1的数据包括数据表列表、字段名称、类型、设置长度和数据表存在月数,所述数据表存在月数通过数字显示。
10、进一步的,所述
11、步骤2.1:获得数据表的字段信息,存放到t_table_all,包括数据表用户owner,数据表名table_name,字段名column,字段设置长度length;
12、步骤2.2:对数据表的字段进行遍历查询,获取实际最大长度max_l和min_l,并且将步骤2.1获取的信息统一存储至t_table_length;
13、步骤2.3:通过查询元数据得到数据表的记录条数,存放于t_table_row。
14、进一步的,所述步骤2.2具体为,for循环语句,循环内容为t_table_all所有记录,循环获取的参数为owner、table_name、column和length;
15、循环体为插入t_table_length的语句,通过拼接字符串的方法,生成循环读取每个数据表的owner、table_name、column、length、max、min信息的sql语句,其中max为max_l,min为min_l;
16、最后通过execude immediate调用执行生成的sql语句。
17、进一步的,所述步骤2.3具体为,读取all_tables系统视图信息,获取owner、table_name和num_rows等信息,insert into到t_table_row中。
18、进一步的,所述步骤3具体为,
19、通过查询t_table_length,将设置长度length和实际最大长度max_l与实际最小长度min_l之间进行直接比对;
20、如果设置长度超过实际最大长度10%,则对该字段进行标记,标记为长度超长;
21、如果实际最大存储值的长度与实际最小存储值的长度相同,且类型为varchar而非char,标记为类型异常。
22、进一步的,所述步骤4具体为,
23、所述长度超长的字段具体为,
24、数据表存在月数小于24时:
25、目标字段长度=(实际最大长度*1.1)+(实际最大长度*(24-数据表存在月数)/120)
26、数据表存在月数大于等于24时:
27、目标字段长度=实际最大长度*1.1
28、所述类型异常的字段具体为,
29、当存储相同内容时,且数据表存在月数大于24,则varchar类型直接转换为char类型。
30、进一步的,根据公式计算得到的结果,计算公式的参数实际最大长度根据t_table_length的max_l获得,数据表存在的月数,根据数据库元数据获取;
31、所示获取方法为:select owner,object,(sysdate-created)/30yfs from all_objects where owner=‘dsjpt’;
32、其中,yfs为对应表存在的月数。
33、进一步的,所述系统包括
34、获取单元,用于获取数据库元数据;
35、按照数据表的列表进行循环操作,通过length()查询每个表中每个字段的实际最大存储值的长度和实际最小长度,并且获得数据表的记录条数;
36、比对单元,基于获取单元获取的实际最大存储值的长度和实际最小长度与设置长度进行比对,并将比对后的结果进行类型标记;
37、获取符合需求的字段类型和长度;
38、自动优化单元,基于获取的字段类型和长度,结合定时任务,对信息进行按月份的扫描,编写自动生成调整类型的脚本,实现自动化检测类型及调整类型与自动化收缩长度。
39、一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
40、存储器,用于存放计算机程序;
41、处理器,用于执行存储器上所存放的程序时,实现权利要求1-8任一所述的方法。
42、本专利技术的有益效果是:
43、本专利技术的表结构字段类型自优化系统,可实现表结构字段自检查与自收缩,根据各自数据表中存储的数据情况,重新调整字段类型与大小,实现自动化表结构维护。
44、本专利技术可以将数据表字段自动优化为合理的大小和类型,降低了存储空间使用率,规范了表结构设计,提升了数据库系统的使用速度。一些数据库表字段长度设计异常或不规范的情况,也可以通过本专利技术进行自动化矫正。
本文档来自技高网...【技术保护点】
1.一种表结构字段类型自优化方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述一种表结构字段类型自优化方法,其特征在于,所述步骤1的数据包括数据表列表、字段名称、类型、设置长度和数据表存在月数,所述数据表存在月数通过数字显示。
3.根据权利要求2所述一种表结构字段类型自优化方法,其特征在于,所述步骤2具体为,
4.根据权利要求3所述一种表结构字段类型自优化方法,其特征在于,所述步骤2.2具体为,FOR循环语句,循环内容为T_TABLE_ALL所有记录,主要循环获取的参数为OWNER、TABLE_NAME、COLUMN和LENGTH;
5.根据权利要求4所述一种表结构字段类型自优化方法,其特征在于,所述步骤2.3具体为,读取ALL_TABLES系统视图信息,获取OWNER、TABLE_NAME和NUM_ROWS信息,INSERTINTO到T_TABLE_ROW中。
6.根据权利要求3所述一种表结构字段类型自优化方法,其特征在于,所述步骤3具体为,
7.根据权利要求6所述一种表结构字段类型自优化方法
8.根据权利要求7所述一种表结构字段类型自优化方法,其特征在于,根据公式计算得到的结果,计算公式的参数实际最大长度根据T_TABLE_LENGTH的MAX_L获得,数据表存在的月数,根据数据库元数据获取;
9.根据权利要求1所述一种表结构字段类型自优化系统,其特征在于,所述系统包括
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
...【技术特征摘要】
1.一种表结构字段类型自优化方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述一种表结构字段类型自优化方法,其特征在于,所述步骤1的数据包括数据表列表、字段名称、类型、设置长度和数据表存在月数,所述数据表存在月数通过数字显示。
3.根据权利要求2所述一种表结构字段类型自优化方法,其特征在于,所述步骤2具体为,
4.根据权利要求3所述一种表结构字段类型自优化方法,其特征在于,所述步骤2.2具体为,for循环语句,循环内容为t_table_all所有记录,主要循环获取的参数为owner、table_name、column和length;
5.根据权利要求4所述一种表结构字段类型自优化方法,其特征在于,所述步骤2.3具体为,读取all_tables系统视图信息,获取owner...
【专利技术属性】
技术研发人员:李明权,周江涛,伺彦伟,董辛森,安玉红,赵成浩,孟浩云,梁彬,张军亮,范国华,刘卫强,王常青,霍庆生,
申请(专利权)人:河北航天信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。