Skip to content

分库分表 为什么是2的n次方

  1. 便于数据分配和定位 更容易地实现数据的均匀分布 快速定位数据 通过对特定值取模等操作,可以更快地确定数据所在的具体分表位置
  2. 适应系统扩展 当分库分表数量为 2 的 n 次幂时,扩容相对更容易。通过简单的位运算来调整数据的分配 在扩容过程中,选择 2 的 n 次幂的分表数量可以最大程度地减少数据迁移的工作量,只需迁移部署数据
  3. 取模 n & (x-1)
    假设需要分8张表 id 1000 则分表后的表名编号为 186046 & (8-1)= 6

分库分表带来的问题

  1. 无法再进行多表关联和聚合操作
  2. 设计分布式事务的问题 需要处理
  3. 主键生成策略变化 无法使用自动增长类型
  4. 成本增加 服务器 数据库等软硬件成本
  5. 数据迁移 扩容问题 不好处理 迁移是停机迁移还是双写呢
  6. 选择 分布式数据库可能更适合 TIDB

冷热分离

  1. 冷数据 存储到便宜的存储介质上 热数据存储在ssd等介质上
  2. 如何区分 冷热数据 时间范围
  3. 技术选型 mysql 等关系型数据库 hbase 等数据库