mysql分表

1. 怎么分

  1. 水平拆分
    1. Id取余
    2. 按时间
    3. 按类型
  2. 垂直拆分
    1. 根据策略把字段拆出来独立一张表(策略:大字段、访问频率、更新频率、相关性)

2. 水平分表遇到的问题:

  1. 跨表直接连接查询无法进行
  2. 我们需要统计数据的时候
  3. 如果数据持续增长,达到现有分表的瓶颈,需要增加分表,此时会出现数据重新排列的情况
解决方案建议:

1. 第1,2点可以通过增加汇总的冗余表,虽然数据量很大,但是可以用于后台统计或者查询时效性比较底的情况,而且我们可以提前算好某个时间点或者时间段的数据 2. 第3点解决建议: 1. 可以开始的时候,就分析大概的数据增长率,来大概确定未来某段时间内的数据总量,从而提前计算出未来某段时间内需要用到的分表的个数 2. 考虑表分区,在逻辑上面还是一个表名,实际物理存储在不同的物理地址上 3. 分库

3. 分表后统计查询问题

  1. 效率低的方法用union
  2. 先按照算法查出数据在哪张表,再查询具体信息。
  3. merge引擎

林明潭blog
请先登录后发表评论
  • latest comments
  • 总共0条评论