mysql高并发分表_并发与高并发(二十三)高并发之数据库切库分库分表思路

前言

数据库为什么要切库?如何切库?

主体概要

数据库瓶颈

数据库切库

数据库的分表

主体内容

一、数据库瓶颈

单个数据库数据量太大(1-2T):多个库

单个数据库服务器压力太大,读写瓶颈:多个库

单个表数据量过大:分表

二、数据库切库和分库

现在大型的系统在数据库层面大多采用了读写分离技术,就是一个主库,多个从库。主库主要负责数据更新和实时数据的查询,从库负责的就是非实时数据的查询。因为在实际情况下,数据库大多是读多写少的。而读取数据通常耗时比较长,占用服务器CPU时间也较多,从而影响用户体验。我们通常做法就是将查询从主库中抽取出来,从而多个从库使用负载均衡,减轻每个从库的查询压力。采用“读写分离”的目标就是减轻主库的压力,又可以把用户查询数据的请求分发到不同的从库上,把数据源动态的置入到程序中,让指定的程序选择连接操作主库还是连接从库进行操作。这里用到的技术主要是注解,SpringAOP等等。

这里我们说一下“多数据源(切库)”与“分库”的比较区别:

它们都是底层是多个数据库在提供服务。

分库是属于在微服务应用拆分的时候都有自己的数据库,而多数据源是在没有进行应用拆分的时候就已经分成两个库了,根据业务使用不同的代码连接不同的数据库。

03f9f2ae13f1163d554cfadeeeec98a3.png

三、数据库的分表

1.什么时候考虑分表?

当一个数据表很大,大到我们做了sql和索引优化之后,基本操作的速度还是影响使用,我们就必须考虑分表了。

2.分表策略

(1)横向分表

将表中不同的数据行按照一定规律分布到不同的数据库表中(这些表保存在同一个数据库中),这样来降低单表数据量,优化查询性能,其中表结构是一样的。

(2)纵向分表

一般根据数据的活跃度进行划分。比如对于博客系统,它对于作者标题之类变化频率慢的数据(冷数据),而博客的访问量,点赞数之类(活跃数据)

(3)mybatis分表插件shardbatis2.0

这个插件的使用我们可以参考https://www.cnblogs.com/shamo89/p/10033349.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值