为了账号安全,请及时绑定邮箱和手机立即绑定

分库分表

标签:
MySQL

前言

公司最近在搞服务拆分的内容,由于服务拆分必然会带来数据库的拆分,
同时公司业务单表数据最高已经达到了亿级,于是乎考虑分库分表来对库进行拆分
所以将分库分表提上日程必然是势在必行
特此记录一下对分库分表的研究历程
图片描述

何谓

分库分表,字面意思就给人一种手艺活的感觉
既然是一门手艺活,那么当然得先从姿势讲起(手动❀鸡)

垂直

  • 垂直分表:大表拆分成小表,由于大表有很多字段,但是有部分简单查询时这些字段并不常用,因此可以拆分成基础信息表和详细信息表。
  • 垂直分库:大库拆分成小库,一般是按照服务来进行拆分,比如订单库,用户库。

水平

  • 水平分表:将表的行数据进行拆分,比如主键为偶数的表放到order_1表,主键为奇数的数据放到order_2表
  • 水平分库:和水平分表逻辑类似,将数据按照一定规则在不同的库上进行分配

何时需要

数据库在一个公司的架构中,作为最底层的基础建设,对各种上层应用提供数据服务支撑,很容易在整个架构的性能上形成一定瓶颈,常见现象有如下几种:

  1. 数据库连接过多
  2. 查询经过索引等优化后无法满足日常查询
  3. 读写分离已经无法满足

注意点

  1. 分库后如何处理事务
  2. 多数据源管理
  3. 跨库join操作

如何落实

  1. ShardingSphere
  2. MyCat

总结

  1. 分库分表之前要慎重,因为涉及到数据的变更,可能业务代码上还需要作改动
  2. 分库分表的优先级一般位于所有优化方案之后,在索引或读写分离等优化方案无法满足后,如果这些方式不能根本解决问题,才进行分库分表
  3. 数据库设计之初就考虑分库分表,但是不推荐直接分库分表,大多数的产品还是以满足功能和使用为为前提,提前分库分表无疑会增加开发成本
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消