MySQL大表优化

当MySQL单表记录数过大时,数据库的CRUD性能会明显下降

常见的优化方法如下

  1. 限定数据范围:加上where条件或者limit限制查询条数,不要查全表
  2. 读写分离:主库负责写,从库负责读
    原因:数据库的写入,影响了查询的效率;适用于读多写少的场景,减少单个数据库的压力
  3. 垂直分库:根据业务模块不同,不同表存储在不同的数据库,适合业务之间的耦合度非常低、业务逻辑清晰的系统
  4. 垂直分表:对字段进行拆分,常用字段放在一个表,不常用字段放在另一个表
    原因:一条记录占用空间过大会导致跨页,造成额外的性能开销,磁盘IO次数多
    优点:列数据变小,减少I/O次数,简化表结构,易于维护,提高热门数据的查询效率
    缺点:主键冗余,需要管理冗余列,并会引起联表join操作,会让事务变得复杂
  5. 水平分库:把同一个表的数据按照一定规则拆分到不同的数据库中,不同的数据库可以放到不同的服务器上
  6. 水平分表:在同一个数据库内,把同一个表的数据按照一定规则拆分到多个表中
    解决单表数据量过大的问题
    优点:解决单表数据量过大、高并发的瓶颈问题,提高系统的稳定性和负载能力
    缺点:多次扩展难度大、维护成本高;事务一致性难以得到保证
    拆分方式
    • 按照时间区间或ID区间来切分
      • 优点:便于水平扩展,扩展时只需添加新的表即可,无需对其他数据进行迁移
      • 缺点:无法做到"冷热数据分离",热数据频繁查询;冷数据很少被查询
    • 根据数值取模
      • 优点:分片均匀,不容易出现热点和并发访问的瓶颈
      • 缺点:后期分片集群扩容时,需要迁移旧的数据;跨分片查询复杂

推荐阅读:https://blog.csdn.net/itguangit/article/details/79825577

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值