Mycat垂直拆分与水平拆分

垂直拆分:
       垂直拆分是根据数据库里面的数据表的业务进行拆分,好比:一个数据库里面既存在用户数据,又存在订单数据,那么垂直拆分能够把用户数据放入到用户库,把订单数据放到订单库。垂直分表是对数据表进行垂直拆分的一种方式,常见是把一个多字段的大表按经常使用字段和很是用字段进行拆分,每一个表里面的数据记录数通常状况下是相同的,只是字段不同,使用主键关联。数据库

好比原始用户表是:
服务器

 

垂直拆分后的表是:网络

 

 

 

垂直拆分的优势是:并发

  1. 可使得数据变小,一个数据块(block)就能存放更多的数据,在查询时就会减小I/O次数(每次查询时读取的Block就少)分布式

  2. 能够达到最大化利用Cache的目的,具体在垂直拆分的时候能够将不常变的字段放一块儿,将常常改变的放一块儿高并发

  3. 数据维护简单性能

 缺点是:大数据

  1. 主键出现冗余,须要管理冗余例3d

  2.  会引发表链接JOIN操做(增长CPU开销)能够经过在业务服务器上进行join来减小数据库压力blog

  3.  依然存在单表数据量过大的问题(须要水平拆分)

  4. 事务处理复杂

 

水平拆分
概述

水平拆分是经过某种策略将数据分片来存储,分库内分表和分库两部分,每片数据会分散到不一样的MySQL表或库,达到分布式的效果,可以支持很是大的数据量。前面的表分区本质上也是一种特殊的库内分表

库内分表,仅仅是单纯的解决了单一表数据过大的问题,因为没有把表的数据分布到不一样的机器上,所以对于减轻MySQL服务器的压力来讲,并无太大的做用,你们仍是竞争同一个物理机上的IO、CPU、网络,这个就要经过分库来解决

水平拆分表以下:

 

 

 

实际状况中每每会是垂直拆分和水平拆分的结合,即将Users_A_M和Users_N_Z再拆成Users和UserExtras,这样一共四张表

水平拆分的优势是:

不存在单库大数据和高并发的性能瓶颈
应用端改造较少
提升了系统的稳定性和负载能力
缺点是:

分片事务一致性难以解决
跨节点Join性能差,逻辑复杂
数据屡次扩展难度跟维护量极大

 

Mycat垂直切分与水平切分详细配置请参考博文:

https://www.jianshu.com/p/e97cee4611f4

相关文章
相关标签/搜索