1④内部公开请勿外传版权所有©1993-2017金蝶国际软件集团有限公司④内部公开请勿外传大数据量转储方案熊魁考勤系统部2023/09/142④内部公开请勿外传④内部公开请勿外传内容0102背景注意事项03常用数据转储方案3④内部公开请勿外传④内部公开请勿外传PART1:背景介绍4④内部公开请勿外传④内部公开请勿外传1.为什么要做数据转储?随着业务的发展,数据表中的数据量越来越大,已经严重影响到数据库的IO(特别是读操作),从而造成系统卡顿,接口数据查询响应慢的情况。2.数据转储有什么优点?(1)大大提升查询效率(2)一般不用改动现有的代码或设计(3)方案可实施难度相对简单,风险可控3.数据转储有什么缺点?(1)可能会影响现有功能(2)到了一定的数据量可能又需要转储(3)转储过程可能会比较耗时,需要考虑其他突发状况5④内部公开请勿外传④内部公开请勿外传1.什么场景可以考虑数据转储?(1)业务操作由于大量历史数据存在导致数据查询效率慢(2)历史数据的转储不影响业务的进行(3)其他模块不依赖转储数据2.什么数据量级可以考虑数据转储?和数据库类型以及配置有关,一般情况下数据量达到了千万级别并且已经出现查询的性能瓶颈时就可以考虑数据转储6④内部公开请勿外传④内部公开请勿外传PART2:常见大数据转储方案介绍7④内部公开请勿外传④内部公开请勿外传一、按年份分表法1.备份数据库2.根据现场的历史数据情况,创建年份表,如:T_HR_ATS_ATTENDANCERESULT_2022。3.分批将原表(T_HR_ATS_ATTENDANCERESULT)的历史年份数据插入到新建的相应的年份表中。4.核对数据,插入完之后将年份表数据量和原表相应年份中的数据量对比,观察数据量是否一致5.核对数据一致后,删除原表中已经备份完成的历史年份的数据。6.给所有的年份表增加索引,索引和原表保持一致。7.如果想要在界面查询历史年份数据,则需要增加功能,查询并适配历史年份表的数据。方案优缺点:优点:1.业务表只保留当年的业务数据,可以大大提升查询效率。2.当前业务表数据量不大,管理与备份比较方便。3.方案可实施性较强,风险可控。缺点:1.需要增加代码来适配查询历史数据的功能。2.需要dba每年进行一次数据转储。8④内部公开请勿外传④内部公开请勿外传二、历史数据归档法1.备份数据库2.新建中间表(T_HR_ATS_ATTENDANCERESULT_TEMP),并将当前业务表(T_HR_ATS_ATTENDANCERESULT)的要保留的数据插入到新建的中间表中3.核对数据,中间表的数据和要保留的数据总数是否一致。4.重命名,当前业务表(T_HR_ATS_ATTENDANCERESULT)命名为T_HR_ATS_ATTENDANCERESULT_2023,归档处理。5.将中间表(T_HR_ATS_ATTENDANCERESULT_TEMP)重命名为T_HR_ATS_ATTENDANCERESULT,并增加相应的索引。方案优缺点:优点:1.可以保持原有的功能,需要归档历史数据。2.不需要改动代码。3.大大提升查询效率。缺点:1.如果需要查询历史数据,需要增加代码功能,且查询会比较慢。2.未来数据量大到影响到查询效率的时候,数据表也需要转储。3.该方案适用于较少或者不需要查询历史数据的业务场景9④内部公开请勿外传④内部公开请勿外传三、分区表法Oracle的分区表是将一张大表在物理上分成几个较小的表,从逻辑上看仍然是一张完整的表。这样,每次DML操作只考虑其中一张分区表即可具体步骤:1.备份数据库2.创建一张新表(T_HR_ATS_ATTENDANCERESULT_TEMP),给新表建立分区,按年分区,表结构和之前的考勤明细表一致3.分批将原表(T_HR_ATS_ATTENDANCERESULT)的全量数据插入到新建的分区表(T_HR_ATS_ATTENDANCERESULT_TEMP)中4.插入完后核对一下两表数据是否一致5.给分区表建立分区索引,索引和原表保持一致6.将原来的表(T_HR_ATS_ATTENDANCERESULT)重命名为T_HR_ATS_ATTENDANCERESULT_bak2023,分区表T_HR_ATS_ATTENDANCERESULT_TEMP重命名为T_HR_ATS_ATTENDANCERESULT方案优缺点:优点:1.可以保持原有的功能,不需要归档历史数据2.大大提升查询效率3.提高容错率,避免“一荣既荣,一损俱损”问题缺点:1.全量的历史数据分批插入到新的分区表比较耗时2.分区表的管理与备份需要更加细致化3.跨分区查询数据还是可能有性能瓶颈4.普通表不能转化为分区表10④内部公开请勿外传④内部公开请勿外传PART3:注意事项11④内部公开请勿外传④内部公开请勿外传注意事项1.由于转储时间较长,需要考虑执行过程当中出现异常中断,或者其他外界因素导致数据转储中断是否会给系统到来故障或者数据错误的情况,提前规划好后续措施。2.转储完成后及时核对数据量是否一致。3.转储完成后及时验证当前业务功能及依赖转储数据的相关功能是否正常。12④内部公开请勿外传版权所有©1993-2017金蝶国际软件集团有限公司④内部公开请勿外传Thankyou!