为什么需要读写分离?

简介: 为什么需要读写分离?

平时在我们的项目中需要更新的请求总是很少的。大多时候我们都是查询的请求。这就会导致我们的系统瓶颈就是由于查询请求过多引起的。然而我们都知道更新数据的时候需要加入一个锁。这个锁就是排他锁。查询请求的时候也需要加一个锁,这个锁就是共享锁。这两个锁之间是存在竞争的。那么如何把这两个锁分开呢?这也就是为什么需要读写分离的原因了。读写分离的思想其实也体现了架构中的分而治之的思想。把一个复杂的问题分成若干个小问题,然后逐个击破。当我们使用了读写分离之后,读请求和写请求分别落到不同的地上。而且随着请求的增加,我们还可以追加slave的服务器。这样可以支撑更多的读请求,其实缓存和搜索服务也是一种读写分离的思想体现。

说完了读写分离的思想,我们再来说一说。分库分表的思想。首先说分表,分表其实就只有两种分法,一个是水平成分,一个是垂直拆分水平拆分的思想就是把常用的字段剥离出来,然后单独的加到一个表中。然后两个表做相关的关联操作,平时较多的查询就会查这个单独的表,然后一些不常用的字段。就会在原表中搜索。这样把常用的字段处理出来,可以提高查询速度。

然而,水平拆分是将数据按照字段进行哈希,或者按照时间进行分片儿的操作。把数据分散到不同的表中,然后保证每个表的数据不会太多。常用的算法就是根据ID取模者根据一个特定的参数取模。

水平拆分和垂直拆分也体现了架构中的分而治之的思想。

水平分表和垂直分表可以单独使用,也可以结合使用。选择哪种分表策略取决于具体的应用场景和需求。水平分表适用于数据量大、查询压力大的场景,可以实现数据的并行处理和横向扩展。垂直分表适用于字段之间关联性不强、数据更新频率不同的场景,可以提高查询效率和减少冗余数据。


相关文章
|
SQL 存储 关系型数据库
MySQL主从复制、读写分离
MySQL主从复制、读写分离
187 0
|
2月前
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
3月前
|
数据库
读写分离
【8月更文挑战第9天】
153 4
|
4月前
|
SQL 存储 关系型数据库
Mycat 实现分库分表及读写分离
Mycat 实现分库分表及读写分离
81 0
|
6月前
|
SQL 存储 负载均衡
关系型数据库读写分离与主从复制
【5月更文挑战第2天】关系型数据库读写分离与主从复制
61 5
关系型数据库读写分离与主从复制
|
6月前
|
SQL 运维 关系型数据库
什么是读写分离?
什么是读写分离?
50 4
|
缓存 搜索推荐 数据库
什么时候需要做读写分离?
很多小伙伴可能会认为数据库的负载问题就应该使用“读写分离”来解决。这其实是一个非常大的误区,我们要使用“读写分离”,首先要搞明白“读写分离”能解决什么问题,而不仅仅只会使用这个技术。
146 0
|
SQL 缓存 关系型数据库
|
关系型数据库 MySQL Java
MySQL主从复制+读写分离(二)
MySQL主从复制+读写分离(二)
MySQL主从复制+读写分离(二)
|
SQL 存储 关系型数据库
下一篇
无影云桌面