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, 相当于全表更新查询效率很慢
上一篇: 嫂子出差