垂直分表:
-
垂直分表就是在同一数据库内将一张表按照指定字段分成若干表,每张表仅存储其中一部分字段;
-
垂直分表拆解了原有的表结构,拆分的表之间一般是一对一的关系;
优势:充分提高了热点数据的操作效率,商品信息的操作的高效率不会被商品描述的低效率所拖累(冷热数据分离);避免了IO过度争抢并减少锁表的几率
垂直分库:
总结:垂直分库是指按照业务将表进行归类,然后把不同类的表分布到不同的数据库上面,而每个库又可以放在不同的服务器上,它的核心理念是-专库专用;
垂直分库依然没有解决库中单表数据量过大的问题
水平分表:
-
水平分表就是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中,表的结构没有变化;
-
水平分表解决单表行数据量大的问题;
水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中,它带来的提升是:
-
优化单一表数据量过大而产生的性能问题;
-
避免IO争抢并减少锁表的几率;
水平分库:
-
水平分库可以看做是水平分表的进一步拆分,是把同一个表的数据按一定规则拆到不同的数据库中,每个库又可以部署到不同的服务器上;
-
水平分库解决了单库数据量大的问题,突破了服务器物理存储的瓶颈;
优点:
-
解决了单库大数据,高并发的性能瓶颈问题;
-
提高了系统的稳定性及可用性;
当一个应用难以再细粒度的垂直切分,或切分后数据量行数巨大,存在单库读写、存储性能瓶颈,这时候就需要进行水平分库了,经过水平切分的优化,往往能==解决单库存储量及性能瓶颈==。但由于同一个表被分配在不同的数据库,需要额外进行数据操作的路由工作,因此大大提升了系统复杂度