读写分离

2023/8/31 数据库MySQL

前置条件

先熟悉了解:主从复制

# 1、读写分离介绍

  • 读写分离就是将读和写分开,将数据放在两个数据库,一个用来读(select)操作,一个用来写(INSERT、UPDATE、DELETE)操作。

# 2、为什么要读写分离

  • 增、改、删操作( INSERT、UPDATE、DELETE)是很慢的,但是查(select)很快,写10000条数据可能要3分钟,读10000条数据可能只要5秒钟。
  • 数据库的操作,是会加锁,就会影响别的操作,所以读写分离解决的是,数据库的写入,影响了查询的效率。
  • 数据库最影响索引的查询速度的是IOCPU。写操作会占用IO的操作,而读的排序(order by)会占用CPU的操作。
  • InnoDB是支持事务的,更适合用来写,MyISAM的不支持事务,适合用来读,并且读取速度快。

结论:

  • 减轻数据库的io压力,由多个数据库分担用户的查询请求压力,而且大多数公司的业务场景都是读多写少。
  • 减少因为数据库读写而导致的加锁逻辑,影响数据库的读写性能。

# 3、读写分离架构

主从复制之后,就会有多台从机,主机负责写和强一直性的读,从机负责非强一致性的读

# 4、读写分离技术实现

国内使用比较多的读写分离的中间件

  • Apache ShardingSphere(推荐,京东、当当等大型互联网公司落地使用)
  • Mycat(最近也比较火)

参考: