你好面试官,在我的理解中分库分表分为四个类型,垂直分表、垂直分库、水平分表、水平分库。接下来我会对这几个名词谈谈我的理解,具体如下:
垂直分表
1)简单来说就是将原本的一张表切割成多张表。举个例子:有张 student
表存储着学生家庭背景、学生入学宣言(500字)、学生信息,现在将其进行垂直分表,可以分为 学生基本信息表、学生入学宣言表、学生家庭背景表,将其进行切割。
2)垂直分表一般是将不常用的字段单独放在一张表、将大字段分一张表、把经常需要同时查出来的信息放一张表。这样做可以冷数据和热数据分开提高查询效率。
垂直分库
1)按我个人理解就是把一个数据库里面的多个表,按照功能,分成多个数据库存放。举个例子:一个数据库有很多张表,用户表、商品表、订单表等,那么可以根据功能属性进行垂直分库,将用户表等信息放到存放用户信息的数据库,将商品表、订单表存放到与商品订单有关的商品订单库。
2)这样做的好处就是将数据负载分散到不同的数据库上,从而提高系统的性能和扩展性、降低单一数据库的复杂度。
水平分表
1)我个人的理解就是在同一个数据库中,有几个相同表,里面的数据是不一样的,但表结构是一样的,数据按照固定的规则选择数据表存放,如:商品表1、商品表2。
2)提高了读写性能,减少了单表的压力、可弹性增加存储容量只需要增加一个表就行。
水平分库
1)按我的理解来说就是相同的表结构复制一份分到另一个库中,每个库的表结构是一样的,但是数据是不一样的。
2)这样做能在大数量的情况下提高读写性能,因为减少了单一数据库的读写压力。
3)能提高存储容量。可以通过增加或减少数据库进行弹性伸缩。
4)提高容错性。当一个数据库故障了,别的数据库还能正常运行,只影响小部分数据查询。