新闻资讯

希望使用数据库“读写分离”请先了解“读写分离”能解决什么问题

发布时间:2020-11-27 浏览次数:20

有些技术学生可能对"读写分离"知之甚少,认为数据库负载问题可以通过读写分离来解决,这是一个很大的错误,我们要使用读写分离,首先要明白"读写分离"是用来解决什么类型的问题,而不仅仅是技术。

读写分离其实就是数据库分为主库和从库,一个主库用来写数据,几个从库完成读数据的操作。主库和从库通过某种机制同步数据,这是一种常见的数据库体系结构。

一个组从同步集群,通常被称为是一个“分组”。

大多数互联网业务倾向于多读少写。这时数据库的读取首先会被称为数据库的瓶颈。此时,如果我们想线性提高数据库的读取性能,消除读写锁之间的冲突,从而提高数据库的写入性能,可以使用“分组架构”(读写分离架构)。
用一句话概括,读写分离是用来解决数据库的读性能瓶颈的。但是,不是任何读性能瓶颈都需要使用读写分离,我们还可以有其他解决方案。

在互联网的应用场景中,常常数据量大、并发量高、高可用要求高、一致性要求高,如果使用“读写分离”,就需要注意这些问题:

数据库连接池要区分,哪个是读连接池,哪个是写连接池,这样会增加研发难度;为了保证高可用性,读连接池应该能够实现自动故障转移;需要考虑主从之间的一致性。

在这么多的问题需要考虑的情况下,如果我们仅仅是为了解决“数据库读的瓶颈问题”,为什么不选择使用缓存呢?

缓存也是互联网中经常使用的一种架构。与“读写分离”不同,读写分离通过多个库来分配数据库读取的压力,而存储通过使用缓存来降低数据库读取的压力。他们没有任何人的替代品,但是如果你在缓存中读写之间选择,你应该首先考虑缓存。

缓存的使用成本远低于从库。缓存的开发相对容易,大部分读操作可以先缓存,再渗透到数据库中。当然,如果我们已经使用了缓存,但是读取仍然是一个瓶颈,我们可以选择“读写分离”的架构。简单来说,我们可以把读写分离当成缓存解决不了的时候的解决方案。

当然,缓存也不是没有缺点的。对于缓存,我们必须要考虑的就是高可用,不然,如果缓存一旦挂了,所有的流量都同时聚集到了数据库上,那么数据库是肯定会挂掉的。

常见的数据库瓶颈其实就是数据容量的瓶颈。比如订单表,数据量只是在增加,历史数据必须保留,很容易成为性能瓶颈。要解决数据库的这个瓶颈问题,“读写分离”和缓存往往是不合适的。最适合的是什么?数据库的水平分割。

数据库水平切分,也是一种常见的数据库架构,是一种通过算法,将数据库进行分割的架构。一个水平切分集群中的每个数据库,通常称为一个“分片”。每一个分片中的数据没有重合,所有分片中的数据并集组成全部数据。

大部分的互联网业务,数据量都非常大,单库容量最容易成为瓶颈,当单库的容量成为了瓶颈,我们希望提高数据库的写性能,降低单库容量的话,就可以采用水平切分了,这样就是
水平切分架构解决的问题。

而有少部分程序员,会没有分析数据库的性能瓶颈是什么,就贸贸然的使用“读写分离”,殊不知“水平切分”才是正道。


上一篇: 运维数据库的作用和特点有哪些?

下一篇: 没有了

产品试用 产品试用
400-820-6580 免费电话