什么是分库分表?
简单说就是将原来单一的数据库(或数据库集群)按照某个维度分为多个库(表)。
为什么要分库分表?
因为业务复杂度高,访问数据库次数已经优化到一定水平仍然数据库的性能成为了系统性能的瓶颈的时候,就智能用数据库分库分表的手段了。
怎么理解分库分表?
我对分库分表的理解是,在库(或者表)的层面加了一层"索引",也就是上边所说的按照某一个维度去分组了数据,放在不同的库(或者表)中,这样在业务层面想要查询某些数据的时候,可以先按照分库分表的维度找到所在的库(或者表),这样做的好处就是在单个的库(或者表)中存储的数据量会相对的少,能够保证数据库操作的效率。
如何来操作分库分表?
分库分表的操作无非就是水平切分和垂直切分,水平和垂直是对于某一条数据(或记录)而言,这样去理解的话,如果对数据水平切分,那就是把不同记录的数据分库或者分表;如果按照垂直切分,就是将一条数据本身切分成多条数据。
分库分表的方式有四种,它们分别是:垂直分表、垂直分库、水平分库和水平分表。
垂直分表:可以把一个宽表的字段按照访问频率、是否是大字段的原则拆分为多个表,这样既能使业务清晰,还能提高部分性能。拆分后,尽量从业务角度避免联查,否则性能方面将得不偿失。
垂直分库:可以把多个表按照业务的耦合性来进行分类,分别存放在不同的数据库中,这些库可以分布在不同的服务器,从而使访问压力被分摊在多个服务器,大大提高性能,同时能提高整体架构的业务清晰度,不同的业务库可根据自身情况定制优化方案。但是它需要解决跨库带来的所有复杂问题。
水平分库:可以把一个表的数据(按数据行)分到多个不同的库,每个库只有这个表的部分数据,这些库可以分布在不同的服务器,从而使访问压力被多服务器负载,提升性能。它不仅需要解决跨库带来的问题,还需要解决数据路由的问题。
水平分表:可以把一个表的数据(按数据行)分到多个同一个数据库的多张表中,每个表的数据只有这个表的部分数据,这样做能小幅提升性能,它仅仅作为水平分库的一个补充优化。
 
posted on 2022-08-16 10:47  CRUDEngineer  阅读(33)  评论(0编辑  收藏  举报