读写分离
半塘 2023/8/31 数据库MySQL
前置条件
先熟悉了解:主从复制
# 1、读写分离介绍
- 读写分离就是将读和写分开,将数据放在两个数据库,一个用来读(select)操作,一个用来写(INSERT、UPDATE、DELETE)操作。
# 2、为什么要读写分离
- 增、改、删操作( INSERT、UPDATE、DELETE)是很慢的,但是查(select)很快,写10000条数据可能要3分钟,读10000条数据可能只要5秒钟。
- 数据库的
写
操作,是会加锁,就会影响别的读
和写
操作,所以读写分离解决的是,数据库的写入,影响了查询的效率。 - 数据库最影响索引的查询速度的是
IO
和CPU
。写操作会占用IO
的操作,而读的排序(order by)会占用CPU
的操作。 InnoDB
是支持事务的,更适合用来写,MyISAM
的不支持事务,适合用来读,并且读取速度快。
结论:
- 减轻数据库的io压力,由多个数据库分担用户的查询请求压力,而且大多数公司的业务场景都是读多写少。
- 减少因为数据库读写而导致的加锁逻辑,影响数据库的读写性能。
# 3、读写分离架构
主从复制之后,就会有多台从机,主机负责写和强一直性的读,从机负责非强一致性的读
# 4、读写分离技术实现
国内使用比较多的读写分离的中间件
- Apache ShardingSphere(推荐,京东、当当等大型互联网公司落地使用)
- Mycat(最近也比较火)
参考: