分库分表键的选择 重试方案

简介: 【7月更文挑战第19天】

在很多业务里,分库分表键都是根据主要查询筛选出来的,那么不怎么重要的查询怎么解决呢?
比如电商场景下,订单都是按照买家ID来分库分表的,那么商家该怎么查找订单呢?或是买家找客服,客服要找到对应的订单,又该怎么找?

分库分表键的选择

选择进行分库分表的业务字段,有的时候会有多个字段,如何选择合适的字段呢?
关键点就是 根据查询来选择 。例如在订单里面,最常见的是按照买家来进行分库分表,理由是买家查询自己的订单是最主要的场景,这样收益最大。这个完全是业务驱动的,最常用的分库分表键有主键、外键、索引列;如果是范围分库分表,那么日期类型的列也很常用。

重试方案

设置一个重试方案要考虑3个方面的内容:

  1. 重试次数:无限次重试意义并不大
  2. 重试间隔:等间隔重试或指数退避重试。后者指的是重试间隔的时间在增长,一般是两倍增长,面试的时候可以设计一些更加灵活的重试,比如最开始按照两倍增长,再按照50%增长,最后保持最大重试间隔不断重试
  3. 是否允许跨进程重试:在进程A里触发了重试,但是重试一次后,是否可以在进程B上重试第二次?对应到分布式环境上,意味着是否可以在不同的机器上重试。

理论上说,重试是为了避开前一次失败的原因,比如因为偶发的网络抖动失败。设计指数退避的重试策略的原因也很简单,通过不断延长重试时间间隔,有更大的概率避开引发失败的因素。

面试准备

  • 分库分表的主键生成策略
  • 如果使用了后续提到的引入中间表、二次分库分表和使用其他中间件支持查询中的任何一个方案,就需要搞清楚数据同步的方案;换句话说,如果数据不一致,多久会发现,最终要多久才能达成一致。

简历里或面试里提到分库分表方案设计的时候,主动提起是如何解决这个问题的?
面试常见问题引导

  • 问到了主键生成策略,那么你可以说主键生成会影响分库分表的中间表设计。
  • 面试官问到了从其他维度怎么查询数据的问题。例如在订单这里问到了客服怎么查、运营怎么查等。
  • 面试官问到了数据同步和数据一致性,你可以用这里面谈到的场景来展示你是如何解决这些问题的。
  • 面试官问到了如何选择合适的分库分表键,那么你就可以强调非分库分表键的查询更加复杂,需要额外的支持。
目录
相关文章
|
4月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
4月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
575 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
6月前
|
SQL
分库分表优化 禁用跨页查询
【7月更文挑战第6天】
54 0
38MyCat - 分片规则(自然月分片)
38MyCat - 分片规则(自然月分片)
76 0
|
SQL 算法 Java
自定义水平分库分表策略【hint分片】
自定义水平分库分表策略【hint分片】
|
SQL 算法 Java
自定义水平分库分表策略【范围分片】
自定义水平分库分表策略【范围分片】
|
存储 数据库连接 数据库
分库方案有哪些
分库方案有哪些
112 0
|
存储 数据处理 数据库
分表方案有哪些
分表方案有哪些
131 0
|
存储 缓存 算法
短链系统设计性能优化-分片键选型及全局自增 ID 策略
若一个 long 可对应多个 short 使用 cache 缓存所有 long2short 在为一个 long url 创建 short url 时,若 cache miss,则创建新 short
96 0
|
SQL 机器学习/深度学习 算法
PolarDB-X拆分键推荐
PolarDB-X 2.0提供了透明分布式的能力,默认进行主键的哈希拆分,让用户无感知的从单机数据库迁移到分布式数据库。拆分键的选择是学术界和工业界研究已久的问题,一个重要选型是tp优先还是ap优先,两者难以同时兼顾。
PolarDB-X拆分键推荐

热门文章

最新文章

下一篇
开通oss服务