articleList

07-海量数据处理之Mysql数据库【水平分表】

2025/03/13 posted in  ShardingJDBC
Tags: 

  • 需求:当一张表的数据达到几千万时,查询一次所花的时间长,需要进行优化,缩短查询时间
  • 都是大表拆小表
    • 垂直分表:表结构拆分
    • 水平分表:数据拆分
  • 水平分表
    • 把一个表的数据分到一个数据库的多张表中,每个表只有这个表的部分数据
    • 核心是把一个大表,分割N个小表,每个表的结构是一样的,数据不一样,全部表的数据合起来就是全部数据
    • 针对数据量巨大的单张表(比如订单表),按照某种规则(RANGE,HASH取模等),切分到多张表里面去
    • 但是这些表还是在同一个库中,所以单数据库操作还是有IO瓶颈,主要是解决单表数据量过大的问题
    • 减少锁表时间,没分表前,如果是DDL(create/alter/add等)语句,当需要添加一列的时候mysql会锁表,期间所有的读写操作只能等待
      image-20211122131914958