集群和分布式的概念不同。
集群的概念是通过主从复制或者主主复制的手段,将含有相同数据库的mysql服务部署多个节点进行冗余数据保存和负载均衡,重点是多节点。
分布式则是分库分表分区等手段。例如原先一个项目的数据库中有很多表,分布式是将不同的表放到不同的库,达到提高性能的目的,但是其产生的问题是跨库的增删改查和事务的问题。
下面举例说明分库分表的情景:
1.假如在主从复制的架构中,如果只有一台写节点,但写的请求很多造成该主节点的压力很大就会出现很多问题,比如从节点的同步延时问题。
为了减轻主节点的压力,我们可以对主节点进行负载均衡。
或者将主节点一个库中的某些表放到另一台机器(也是主节点)的相同库名的库中。这样写入数据的时候A表写入主节点1,B表写入主节点2,从节点同时同步主节点1和2。
这样通过分库(将数据库不同表拆分到不同的机器上)的方式达到减轻主节点增删改的目的。
这是一种垂直切分。
2.再介绍一种垂直切分的情况。
例如某节点的数据库有A表和B表,两个表都有很多条数据(千万级)。
现在将数据分一半放到另一个节点中,该节点也有A表和B表。
这是库级别的垂直拆分。
表级别的垂直拆分就是将多字段的一张表拆分成两张表并建立关联。
水平切分的几种方式
按主键范围切分
按日期范围切分
按指定字段取模拆分(适合已定节点数的拆分,例如已定为5个节点,那么取模数就是5)
垂直切分的几种方式
库的切分,将同一个库的不同表拆分到相同节点的不同库或者不同节点的相同的库
表的切分,即字段的切分
水平切分和垂直切分总称为逻辑切分。还有物理切分,即把单个很大的数据表文件拆为多个文件,这就是我们所常说的表分区。
=======================================
分区
先复习一下Myisam和In