分库分表基础知识

分库分表是解决大数据量下数据库性能问题的有效手段。它包括垂直分库、垂直分表、水平分库和水平分表。垂直分库是按业务划分,将不同业务的表放在不同数据库;垂直分表则是按字段拆分,减少表的复杂度。水平分库是根据数据逻辑关系分散到多个数据库,而水平分表则在同一数据库内拆分数据。选择何时进行分库分表需考虑数据量和并发需求,通常在单表数据量达到千万级或GB级时考虑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.什么是分库分表

2.分库分表的方式

2.1垂直分库

 2.2垂直分表

2.3水平分库

2.4水平分表

总结


1.什么是分库分表

简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。

分表:如果一个表的属性太多,可以拆分成多个表来分开存储属性

  • 分库分表解决的问题

分库分表的目的是为了解决由于数据量过大而导致数据库性能降低的问题,将原来单体服务的数据库进行拆分。将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。

  • 什么情况下需要分库分表

        1.单机存储容量遇到瓶颈

2.连接数,处理能力达到上限

注意:

分库分表之前,要根据项目的实际情况 确定我们的数据量是不是够大,并发量是不是够大,来决定是否分库分表。

数据量不够就不要分表,单表数据量超过1000万或100G的时候,速度就会变慢(官方测试)

2.分库分表的方式

分库分表包括:垂直分库分表和水平分库分表

2.1垂直分库

数据库中不同的表对应着不同的业务,垂直切分是指按照业务的不同将表进行分类,分不到不同的数据库上面。将数据库部署在不同服务器上,从而达到多个服务器共同分摊压力的效果。

 2.2垂直分表

将一个表按照字段分成多张表,每个表存储其中一部分字段。例如:对职位表进行垂直拆分,将职位基本信息放在一张表,将职位描述信息存放在另一张表。

 垂直拆分带来哪些提升?

1.解决业务层面的耦合,业务清晰

2.能对不同业务的数据进行分级管理、维护、监控、扩展等

3.高并发场景下,垂直分库一定程度的提高访问性能

4.垂直拆分没有彻底解决单表数据量过大的问题  (要进行水平分库)

2.3水平分库

  • 将单张表的数据切分到不同的数据库中,每个数据库具有相同的库与表,只是表中的数据集合不同
  • 简单讲就是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多提数据库(主机)上面,例如将订单表 按照id是奇数还是偶数,分别存储在不同库中。

2.4水平分表

针对数据量巨大的单张表(比如订单表),按照规则把一张表的数据切分到多张表里面去。但是这些表还是在同一个库中,所以库级别的数据库操作还是有IO瓶颈。

 

  • 总结

    • 垂直分表:将一个表按照字段分成多表,每个表存储其中一部分字段
    • 垂直分库:根据业务不同,分别存放在不同的库中,这些库分别部署在不同服务器
    • 水平分库:把一张表的数据按照一定规则,分配到不同的数据库,每一个库只有这张表的部分数据
    • 水平分表:把一张表的数据按照一定规则,分配到同一个数据库的多张表中,每个表只有这个表的部分数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值