type
status
date
slug
summary
tags
category
icon
password
这里写文章的前言:
一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
分库分表
什么是分库
分库就是在表数量不变的情况下,将两个表放在不同的数据库里

分表
分表是指在库数量不变的情况下,对表进行拆分

分库分表
是指将数据库和表都进行拆分,数量都发生变化。

分库分表的方式
水平拆分,垂直拆分,混合拆分
水平分表
水平分表是指表结构不变,分成多个表。数据放在不同的表里。
切分后的后果:
- 每个表的结构一样
- 每个表的数据不一样
- 全部分表的数据合起来是所有数据

水平分库
将表水平分到不同的库,使得每个库具有相同的表,表的数据不同,跟水平分表类似,一般先水平分表,再水平分库
垂直分表
将一个表中的字段结构拆分到多张表,拆分完
- 表结构不一致
- 表数据不一致
- 所有表的字段合起来是原表的字段
举例:如下图,order 表,根据字段垂直切分,切分后 order_base表包含一部分字段的数据 和 order_info表包含另一部分字段的数据。

垂直分库
将一个库的表放到不同的库里

为什么要分库分表
单表或者数据库出现了瓶颈
单库的瓶颈常有以下的情况:
- 数据库的磁盘不足,数据占满了空间
- 数据库服务器cpu压力过大,读写性能下降
- 数据库服务器内存不足
- 数据库连接数过多,无法升配
单表出现性能瓶颈
单表通常遇到的情况
一个表的数据量过大,导致读写性能较慢
微服务化
根据业务架构进行分库分表,比如用户的数据放在一个数据库,订单数据放在一个数据库,等等。
