再有程序员问你什么是分库分表,直接把这个发给他:
分库:
拆分数据库,一个数据库变成多个数据库,无论去做数据库中的任何操作,都需要先确定在哪个数据库中,然后再操作。
1.为什么要分库
数据库中的数据量不一定是可控的,业务增长是成几何式增长,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,
增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。
2.垂直拆分库
特点:数据库和数据库之间不会出现相同表,把一个库中的表通过业务上的划分,分别部署到不同的数据库。
常见的垂直拆分库方案
按照业务维度拆分,
比如电商项目:会员,订单,商品、物流、仓储、支付、类别、财务,评论,售后、众筹、预售
垂直拆分库的优缺点:
优点:
a.高并发场景下,垂直拆分会一定程度的提升IO、数据库连接数、单机硬件资源的瓶颈
b.解决业务系统层面的耦合,业务清晰,与微服务的治理类似
c.也能对不同业务的数据进行分级管理、维护、监控、扩展等
缺点:
a.部分表无法join,只能通过接口聚合方式解决,提升了开发的复杂度
b.分布式