分库分表 为什么是2的n次方
- 便于数据分配和定位 更容易地实现数据的均匀分布 快速定位数据 通过对特定值取模等操作,可以更快地确定数据所在的具体分表位置
- 适应系统扩展 当分库分表数量为 2 的 n 次幂时,扩容相对更容易。通过简单的位运算来调整数据的分配 在扩容过程中,选择 2 的 n 次幂的分表数量可以最大程度地减少数据迁移的工作量,只需迁移部署数据
- 取模 n & (x-1)
假设需要分8张表 id 1000 则分表后的表名编号为 186046 & (8-1)= 6
分库分表带来的问题
- 无法再进行多表关联和聚合操作
- 设计分布式事务的问题 需要处理
- 主键生成策略变化 无法使用自动增长类型
- 成本增加 服务器 数据库等软硬件成本
- 数据迁移 扩容问题 不好处理 迁移是停机迁移还是双写呢
- 选择 分布式数据库可能更适合 TIDB
冷热分离
- 冷数据 存储到便宜的存储介质上 热数据存储在ssd等介质上
- 如何区分 冷热数据 时间范围
- 技术选型 mysql 等关系型数据库 hbase 等数据库