面试官竟然问我怎么分库分表?幸亏我总结了一套八股文( 二 )


订单按照用户ID分片后,发生数据倾斜怎么办?
因为不同用户的订单量是不同的,一个爱好购物的小姐姐的订单量抵得上几十个老爷们 。导致一张表数据几百条,另一张表数据量千万级,这该咋整?
做冷热数据分离,基础库只存储3个月内的订单,其他的移动到历史订单库 。
这个要跟产品商量好,3个月前的订单需要单独的查询页面 。
跨库事务问题:
这个问题就更复杂了 。
 

面试官竟然问我怎么分库分表?幸亏我总结了一套八股文

文章插图
 
 
下一个订单需要调用多个服务,只能使用分布式事务 。分布式事务的实现非常复杂,常用的有以下几种解决方案:
二阶段提交
TCC
本地消息表
MQ事务消息
分布式事务中间件
面试官:准备得挺全的啊 。订单表分片后,肯定不能使用数据库自增主键做订单ID,因为无法全局唯一,有什么好的解决办法?
我:又问到我手心里面,我前两天刚看完一灯写的“雪花算法”,我现场手写订单ID的生成代码吧 。
面试官:小伙子可以啊,下一面是HR面试,有薪资要求尽管提,你一定要来我们公司上班 。
总结:
关于分库分表的所有知识点,虽然很多,但都已经总结在这张图上了 。
面试官竟然问我怎么分库分表?幸亏我总结了一套八股文

文章插图
 
你解决怎么样?




推荐阅读