美文网首页
1.3Mysql分库分表及读写分离

1.3Mysql分库分表及读写分离

作者: MelodyOf流沙 | 来源:发表于2021-03-15 10:36 被阅读0次

分库分表

分库分表场景之IO瓶颈
  • 由于磁盘读IO非常慢,而且热点数据多,缓存内存放不下这么多数据,那么就会导致产生对同一个文件产生多次IO读取。解决方案 => 分库和垂直分表
  • 网络IO瓶颈,请求的数据太多,网络带宽不够 => 分库
分库分表场景之CPU瓶颈
  • 单表数据量太大,导致查询行数过多,SQL效率低下 => 水平分表
水平分表与分库(拆分行数)

以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中(将一个表中的数据拆分到多个库中)。
比如user_id / 20(分表数) %12(总库数求余) = 1则放第一个库,且user_id % 20(分表数)=3 表示数据应该放在第一个库且第4(3 + 1)个表;这是数据比较均衡的处理办法

垂直(拆分字段)

以表为依据,按照业务归属不同,将不同的表拆分到不同的库中

分区

mysql自带的,把数据文件分为多个文件以减少对同一个文件磁盘IO阻塞,减少一个文件的大小

分库分表的问题产生
  • join问题:代码层面进行优化
  • 查询字段非分表字段(例如按照user_id分表,但查询字段是order_id):使用中间表,中间表加入索引,并加缓存,一定要注意击穿问题
  • 分布式事务问题:使用外部XA事务进行处理,MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:网易的DDB,淘宝的TDDL等等。

读写分离

表建立主从复制(mysql自带工具即可),实现主写,从读的模式。
主服务器会开启多个线程用于同步binlog,子服务器会开启一个IO线程和一个sql线程,IO线程会主动找到主服务器的服务线程进行请求返回最新的binlog日志信息,然后子服务器再进行更新数据库信息放入relay log(中继日志),子服务器的sql线程会定时读取中继日志数据更新数据。

Mysql的高可用高并发架构

mysql高可用集群架构.png

MHA:Master HA 一个保证mysql高可用的架构软件,保证在master宕机时能主动切换到slave。

相关文章

  • 1.3Mysql分库分表及读写分离

    分库分表 分库分表场景之IO瓶颈 由于磁盘读IO非常慢,而且热点数据多,缓存内存放不下这么多数据,那么就会导致产生...

  • 高性能Mysql优化方案

    分库分表 读写分离 基本上互联网公司采用的架构是 水平分库+垂直分库(专库专职)+读写分离 水平分库分表 ID 解...

  • 解决大数据量的查询优化

    增加索引 分表 分库 主从分离(读写分离)

  • 企业IT架构笔记6  分库

    垂直分库,读写分离,水平分库(单表数据记录超大),分表,异构数据表或索引表(空间换时间) 1、读写分离:主库承担增...

  • MYSQL分库分表

    大众点评订单系统分库分表实践 利用Mycat中间件实现RDS MySQL的分库分表及读写分离功能 MYSQL数...

  • 读写分离与分库分表,分布式事务

    读写分离与分库分表,分布式事务 MySql存储引擎,建表规范,事务级别,sql优化,读写分离思想等。 了解过读写分...

  • PFM架构设计

    1、存储高性能 1.1、读写分离: 针对PFA的分析场景,进行读写分离 1.2、 分库分表: 海量核算数据,表分区...

  • 分库分表,读写分离

    垂直(纵向)拆分:将一个库的多个表分散到多个库,或将一根表拆分成多个表,再分散到多个库水平(横向)拆分:将一个表的...

  • MySQL优化

    1、 读写分离2、 给查询字段添加索引3、 分表4、 分库5、 分区

  • day14 MyCAT--分布式及优化

    六、配置文件模板说明(读写分离) 七 、配置文件--读写分离+高可用 八、垂直分库 九、垂直分表 十、 MyCAT...

网友评论

      本文标题:1.3Mysql分库分表及读写分离

      本文链接:https://www.haomeiwen.com/subject/pdxzqltx.html