欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql增量表与全量表逻辑实例讲解

程序员文章站 2022-06-03 10:10:11
sourcetabel: offer t1 (存在20161201~20180531的用户相关信息,分区为日分区p_date_no, 全量表, 每个分区会保存前一个分区中的所有数据内容) targe...

sourcetabel: offer t1

(存在20161201~20180531的用户相关信息,分区为日分区p_date_no, 全量表, 每个分区会保存前一个分区中的所有数据内容)

targettabel: xyzj_user t2

全量表更新逻辑:

第一步:从t1源表中,传入(p_date_no等于昨天), 获取表里面所有用户的id与其新套餐生效时间.

第二步: 将第一步得到的所有的用户id, 套餐生效时间往前推2个月(旧套餐)作为p_date_no, 作为子查询条件去查t1源表,查出两个月前这个用户办理旧套餐情况.

相当于全表查询, 去每个分区里面找这个用户办理的旧套餐的信息

清空源表之后插入

增量表更新逻辑:

第一步:从t1源表中,传入(p_date_no等于昨天), 获取表里面所有用户的id与其新套餐生效时间。

第二步: 将第一步的结果对比源表, 将重复的去除了,留下昨天更新的用户id,也就是昨天刚办理新套餐的那批用户。

第三步: 将(第二步得到的新办理套餐用户id), 加上p_date_no(昨天) 减去2个月, 去查t1源表,去看一下这些办理新套餐的用户2个月前办理的旧套餐信息。

全量表更新逻辑缺点:

1, 一个表可以存在的分区的长度有限,太久远的日期无法作为分区去查询

第一步得到的用户有可能是很久之前办理的新套餐,用这个日期作为分区去查可能查不出来

2, 相当于全表更新查询效率很慢