读写分离解决了什么问题?

2024-01-05

 

 

当只有一个库时,对于表 table_a 的写入和读取有以下逻辑:

高并发读场景下,光是读取操作就可能将DB的CPU打满了,如果再有写操作那就更是雪上加霜、卡上加卡。

 

如果将纯粹的读取(NOT select for update)操作剥离出去,写操作只留在主库上进行,这样的话两边的速度都加快了。

而且因为从库的数据都一致,可以水平扩展,那应用的读操作也能水平扩展,快速的分摊读流量,可以满足要快速扩大查询操作的场景(负载均衡)。

 

我们现在有个问题,场景是数据量已经千万级,再加上查询需要关联好几张表,查询速度已经不能接受了。 考虑读写分离来着,但是因为写操作比较少,读写分离并不能解决我们遇到的问题。