从头开始学分库分表-------基本概念
目录
一、水平分表
把同一张表拆分为表1、表2、表3、......、表N。解决单表数据量过大问题。拆分前后,表的结构都相同。
拆分原则:一般单张表的数据量达到百万级别,则适用水平分表。例如【学生成绩表】,学生成绩的记录往往都超过百万。所以适用于水平分表,按照学期进行分表。
二、水平分库
水平分库把同一张表的数据,按照一定的拆分规则,分配到不同的数据库中。
每个数据库放在不同的服务器上,拆分后的所有的表结构相同。
水平分库解决单表 数据行 过大问题,把一个库平移分成 库1、库2、...库N
拆分原则:(1)单表数据量特别巨大的时候。
举例:系统中有【学生成绩表】,如果希望存储30家学校的成绩数据,每家学校的教学业务数据都达到千万级别。那么单台MySQL数据库就会达到性能瓶颈。如此多的数据,就需要水平分库,使用多台MySQL服务器来存储每家的成绩数据。
三、垂直分表
垂直分表是按照表的字段进行拆分,按照热门、冷门字段把原来的表拆分开来,每张表存储其中一部分字段。
拆分原则:
(1)把频繁被查询的字段放在同一张主表中
(2)把不经常被查询的字段单独放在一张从表中
(3)把text、blob等大字段抽出来单独放在一张从表中
四、垂直分库
垂直分库按照业务,把不同的表分配到不同的服务器上。
垂直分库讲究专库专用。
拆分原则:单台数据库数据量很大,且访问压力很大、查询响应时间长,可考虑垂直分库。