什么情况需要考虑 mysql 分表

最近看到公司的其中一个数据库用户表每个月都要几百万的新用户数据增加,目前单表已经是两千多万了。所以找了 DBA 讨论,发现以前学的知识,以及网上的一些资料其实说的并不是很正确,比如 mysql 单表不建议超过一千万,我司 DBA 数据规范建议是单表最多不超过五千万。DBA 认为单看数据表的行数来决定分不分表是不正确。结合自己的知识和 DBA 的建议,记录一下需要分表的场景:

  1. 表字段多,部分字段不经常用
  2. 表数据占物理空间大
  3. 数据库服务器性能问题
  4. 业务查询较多,查询慢
  5. 业务受到影响,不满足日常需求

分表方式有水平分表,垂直分表。常用的水平分表都是 RANGE 、一致性 HASH 算法 、取模几种方式。分表之后,业务代码、架构也需要调整,比如引入中间件,否则分页,排序,事务都无法处理。

MySQL 自带的性能分析功能

  1. explain 查询 sql 是否使用索引
  2. show processlist 查看当前连接状态
  3. mysqldumpslow 慢日志查询工具
  4. mysqlslap 性能分析
  5. show status

MySQL 自带查看命令、表信息

  1. show index from tablename
  2. mysqladmin 查看 mysql 命令功能
  3. mysqlshow 查看数据库、表、字段信息,只能查看单个库、表、字段
打赏作者

您将是第一位评论人!

提醒
avatar