前言sql
作数据库分表的时候,老是能看到水平切分、垂直切分,可是并不能理解何为水平、何为垂直。仅此作个记录。数据库
通常状况下说的水平切分、垂直切分,都是指的数据库层面的。服务器
随着业务量的增长,数据量确定快速增加,拿Mysql来讲,单表数据量在百万级内读取效率仍是能够的,但是一旦达到千万级,性能会有较大的下降。若是是复杂的搜索,那么组合索引对于内存来讲也是一笔很大的开销。这个时候就须要从数据库层面来进行优化了。架构
广泛采用的方式就是数据库 垂直切分+ 水平切分的方式来进行改进。并发
垂直拆分:原来一个表的信息,拆分到两个或者多个表中,经过主键来进行关联。(垂直拆分列,列数据拆分到不一样表中)
垂直切分的优势分布式
垂直切分的缺点性能
水平切分:把一个表的数据按照某种规则划分到不一样表或数据库里。(水平拆分行,行数据拆分到不一样表中)大数据
水平切分的优势优化
水平切分的缺点spa
通常状况下说的水平扩展、垂直扩展,都是指的服务层面的。
当一个开发人员提高计算机系统负荷时,一般会考虑两种方式垂直扩展和水平扩展。选用哪一种策略主要依赖于要解决的问题 以及系统资源的限制。
在垂直扩展模型中,想要增长系统负荷就意味着要在系统现有的部件上下工夫,即经过提升系统部件的能力来实现。
好比增长机器的内存,提升单机处理能力,拆分功能到不一样的机器上部署等等。
垂直扩展旨在提升自身效率,但总会遇到自身的瓶颈。
在水平扩展模型中,经过增长更多的系统成员来实现。也就是一般所说的加机器。
当你的大量请求并发的时候,能够经过分布式的方式,让请求均匀的分布到不一样的机器上,减少压力。
简而言之:
垂直扩展:拆分功能为小功能,来转移压力的发生。
水平扩展:复制相同的表、库、服务器来共同承担压力。