MySQL运维3-分库分表策略
  G0MHGueRBUHk 2023年12月13日 25 0

一、介绍

  单库瓶颈:如果在项目中使用的都是单MySQL服务器,则会随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行存储,存在一下性能瓶颈:

  1. IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率低下,请求数据太多,带宽不够,网络IO瓶颈。
  2. CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。

  分库分表:就是将数据分散存储,是将单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。

  

二、拆分策略

  

  2.1 垂直分库

    特点:以表为依据,根据业务将不同表拆分到不同库中。

    • 每个库的表结构都不一样
    • 每个表的数据也不一样
    • 所有库的并集是全量数据

  

  2.2 垂直分表

    特点:以字段为依据,根据字段属性将不同字段分到不同表中 。

    • 每个表的结构都不一样
    • 每个表的数据也不一样,一般通过一列(主键/外键)管理
    • 所有表的并集是全量数据

    

  2.3 水平分库 

    特点:以字段为依据,按照一定策略,将一个库的数据拆分到多个库中

    • 每个库的表结构一样。
    • 每个库的数据都不一样
    • 所有库的并集是全量数据

    

  2.4 水平分表

    特点:以字段为依据,按照一定策略,将一个表的数据拆分到多个表中。

    • 每个表的结构都一样
    • 每个表的数据都不一样
    • 所有表的并集是全量数据

  2.5 组合策略  

    在实际应用中,可以同时采用分库和分表的策略,根据业务需求和系统负载情况来选择合适的分库分表策略。

三、分库分别键

  3.1 业务键

    根据业务需求,选择具有业务含义的键作为分库分表的依据,例如,按照用户ID分表

  3.2 时间键

    对于大部分应用来说,按时间进行分表是一个常见的选择,可以更容易地管理历史数据

  3.3 哈希建

    使用哈希函数将数据均匀地分散到不同的库或表中,以防止热点数据集中存储

  3.4 范围键

    按照数据范围进行分表,适用于数据按照某一范围规律增长的情况

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月13日 0

暂无评论

推荐阅读
  yThMa20bw7iV   2024年05月20日   58   0   0 MySQL
  pwciJmn0pWhj   2024年05月18日   56   0   0 MySQL
  WOljo6A3TCPl   2024年05月20日   48   0   0 MySQL
  8MfSLxyzjZA4   2024年05月20日   49   0   0 MySQL
  pwciJmn0pWhj   2024年05月17日   52   0   0 MySQL
  U6xQfOH75OE1   2024年05月17日   42   0   0 MySQL
  ijEHlwWobBkw   2024年05月17日   45   0   0 MySQL
  ijEHlwWobBkw   2024年05月17日   50   0   0 MySQL
  IS5q6TY5yQNJ   2024年05月17日   47   0   0 MySQL
G0MHGueRBUHk