MySQL-分库分表(二)

为什么要分库分表(数据库层面如何设置)?
用过哪些分库分表中间件?
不同的分库分表中间件有什么优点和缺点?
具体是如何对数据库进行垂直拆分和水平拆分?

面试官心里分析
这里扯到了高并发 因为分库分表是为了支撑高并发 数据量大两个问题的 分库分表是最普遍的技术问题

为什么要分库分表 (设计高并发系统的时候 数据库层面该如何设计)
说明白了 分库分表是两回事 可以光分库不分表 也可以是光分表不分库

分表
单表数量太大 会极大的的影响sql执行的性能 到了后面的sql可能就跑的很慢 单表到了几百万的时候 性能就会相对差一些了 所以要考虑分表 就是把一个表的数据放到多个表中 然后查询到的时候就查询一张表 比如 用按照用户id 来分表 将一个用户的数据放在一个表中 然后在操作的时候就对一个用户就操作那个表就好了 这样可以控制表的数据量在可控范围内 比如每个表就固定在200万以内

在这里插入图片描述
分库
经验而言:一个库我们一般最多支持到并发2000 一定要扩容 而且一个库并发最好保持在每秒1000左右 不要太大 可以将一个库的数据拆分成多个库中 访问就访问一个库

在这里插入图片描述
用过哪些分库分表的中间件? 不同的分库分表中间件都有设么优点和缺点?
常见的包括
Cobar
TDDL
Atlas
Sharding-jdbc
Mycat
建议考量的 就是sharding-jdbc 和mycat

Sharding-jdbc 优点是在于不用部署 运维成本低 不需要代理层的二次转发请求 性能很高 但是需要各个系统重新升级版本在发布 各个系统需要耦合

Mycat 他需要部署 运维成本高 好处是在于对于各个项目是透明的

你们具体是如何对数据库进行垂直拆分和水平拆分

水平拆分:
将数据均匀的放到库里面 然后多个库来抗更高的并发 还有就是用多个库的存储容量来进行扩容
在这里插入图片描述
垂直拆分:
是把多个字段的表拆分为多个表 一般来说会将较少的放在一个表里 较多的放在另一个表里去
因为数据库里面是有缓存的 访问的评率越高行字段越少 就可以在缓存里缓存更多的行 性能就越好
在这里插入图片描述
最常见的 就是把一个大表拆开 订单表 订单支付表 订单商品表

分库分表的方式

Range来分 好处 扩容的时候很简单 提前准备一个库 然后到了新的月份的时候 就会写到新的库里 缺点 大部分请求都访问新的数据

在这里插入图片描述
Hash来分 好处 平均分配每个库的数据量和请求压力 坏处 就是扩容起来比较麻烦 迁移数据的时候 要重新计算hash值重新分配到不同的库和表
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值