什么是数据库读写分离?
对于“读写分离”了解不多认为数据库的负载问题都可以使用“读写分离”来解决。这样做是不正确的而我们就产生了这样的一个误区。我们要用“读写分离”首先应该明白“读写分离”是用来解决什么样的问题的而不是仅仅会用这个技术。什么是读写分离其实就是将数据库分为了主从库一个主库用于写数据多个从库完成读数据的操作主从库之间通过某种机制进行数据的同步是一种常见的数据库架构。一个主从同步集群通常被称为是一个“分组”。数据库分组架构解决什么问题大多数互联网业务往往读多写少这时候数据库的读会首先称为数据库的瓶颈这时如果我们希望能够线性的提升数据库的读性能消除读写锁冲突从而提升数据库的写性能那么就可以使用“分组架构”读写分离架构。用一句话概括读写分离是用来解决数据库的读性能瓶颈的。但是不是任何读性能瓶颈都需要使用读写分离我们还可以有其他解决方案。在互联网的应用场景中常常数据量大、并发量高、高可用要求高、一致性要求高如果使用“读写分离”就需要注意这些问题数据库连接池要进行区分哪些是读连接池哪个是写连接池研发的难度会增加为了保证高可用读连接池要能够实现故障自动转移主从的一致性问题需要考虑。在这么多的问题需要考虑的情况下如果我们仅仅是为了解决“数据库读的瓶颈问题”为什么不选择使用缓存呢为什么用缓存缓存也是互联网中常常使用到的一种架构方式同“读写分离”不同读写分离是通过多个读库分摊了数据库读的压力而存储则是通过缓存的使用减少了数据库读的压力。他们没有谁替代谁的说法但是如果在缓存的读写分离进行二选一时还是应该首先考虑缓存。为什么呢缓存的使用成本要比从库少非常多缓存的开发比较容易大部分的读操作都可以先去缓存找不到的再渗透到数据库。当然如果我们已经运用了缓存但是读依旧还是瓶颈时就可以选择“读写分离”架构了。简单来说我们可以将读写分离看做是缓存都解决不了时的一种解决方案。当然缓存也不是没有缺点的对于缓存我们必须要考虑的就是高可用不然如果缓存一旦挂了所有的流量都同时聚集到了数据库上那么数据库是肯定会挂掉的。对于常见的数据库瓶颈是什么呢其实是数据容量的瓶颈。例如订单表数据量只增不减历史数据又必须要留存非常容易成为性能的瓶颈而要解决这样的数据库瓶颈问题“读写分离”和缓存往往都不合适最适合的是什么呢数据库水平切分。什么是数据库水平切分数据库水平切分也是一种常见的数据库架构是一种通过算法将数据库进行分割的架构。一个水平切分集群中的每个数据库通常称为一个“分片”。每一个分片中的数据没有重合所有分片中的数据并集组成全部数据。水平切分架构解决什么问题呢大部分的互联网业务数据量都非常大单库容量最容易成为瓶颈当单库的容量成为了瓶颈我们希望提高数据库的写性能降低单库容量的话就可以采用水平切分了。