主题
面试速答(先看这里)
**一句话结论:**1、id会重复,每张表都用自己的自增id,不用全局分布式id,就会导致id的重复,如果id重复了,那么全局查询的实际,就没办用id唯一定位一个数据。
60秒标准回答:
其实没啥不行的,只要你能接受以下几个问题就行。(狗头)
1、id会重复,每张表都用自己的自增id,不用全局分布式id,就会导致id的重复,如果id重复了,那么全局查询的实际,就没办用id唯一定位一个数据。尤其是很多需要做数据汇总、统计的场景,会把数据同步到离线表,那么就会导致数据主键冲突,无法同步
2、无法支持二次分表,每张表自己做自增,在单表中是唯一了,不冲突了,但是如果后面如果要重新分表,那么就会导致表中出现重复id的情况,这是一定有问题的
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**其实没啥不行的,只要你能接受以下几个问题就行。
- **要点2:**2、无法支持二次分表,每张表自己做自增,在单表中是唯一了,不冲突了,但是如果后面如果要重新分表,那么就会导致表中出现重复id的情况,这是一定有问题的。
- **要点3:**所以,一般做过了分库分表之后,都会用一个分布式ID来做主键id、或者业务唯一号,要不然就会出现以上两个问题,而且这两个问题基本上可以认为是无法接受的。
加分表达:
- 其实没啥不行的,只要你能接受以下几个问题就行。
- (狗头) 1、id会重复,每张表都用自己的自增id,不用全局分布式id,就会导致id的重复,如果id重复了,那么全局查询的实际,就没办用id唯一定位一个数据。
- 尤其是很多需要做数据汇总、统计的场景,会把数据同步到离线表,那么就会导致数据主键冲突,无法同步。
追问准备:
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
其实没啥不行的,只要你能接受以下几个问题就行。(狗头)
1、id会重复,每张表都用自己的自增id,不用全局分布式id,就会导致id的重复,如果id重复了,那么全局查询的实际,就没办用id唯一定位一个数据。尤其是很多需要做数据汇总、统计的场景,会把数据同步到离线表,那么就会导致数据主键冲突,无法同步。
2、无法支持二次分表,每张表自己做自增,在单表中是唯一了,不冲突了,但是如果后面如果要重新分表,那么就会导致表中出现重复id的情况,这是一定有问题的。
所以,一般做过了分库分表之后,都会用一个分布式ID来做主键id、或者业务唯一号,要不然就会出现以上两个问题,而且这两个问题基本上可以认为是无法接受的。