前几天面试,被面试官问道,工作中是否用到过分库分表。(⊙﹏⊙),当然没用到过,所以赶紧补一下!

视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili

笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun)

问题分析:

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:

  1. IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。 请求数据太多,带宽不够,网络IO瓶颈。
  2. CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。

为了解决上述问题,我们需要对数据库进行分库分表处理。分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。

拆分策略

分库分表的形式,主要是两种:垂直拆分和水平拆分。而拆分的粒度,一般又分为分库和分表。

垂直拆分

1. 垂直分库

垂直分库:以表为依据,根据业务将不同表拆分到不同库中。

特点:

每个库的表结构都不一样。

每个库的数据也不一样。

所有库的并集是全量数据。

2. 垂直分表

垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。

特点:

每个表的结构都不一样。

每个表的数据也不一样,一般通过一列(主键/外键)关联。

所有表的并集是全量数据。

水平拆分

1. 水平分库

水平分库:以字段为依据,按照一定策略,将一个库的数据拆分到多个库中。

特点:

每个库的表结构都一样。

每个库的数据都不一样。

所有库的并集是全量数据。

2.水平分表

水平分表:以字段为依据,按照一定策略,将一个表的数据拆分到多个表中。

特点:

每个表的表结构都一样。

每个表的数据都不一样。

所有表的并集是全量数据。

注意:在业务系统中,为了缓解磁盘IO及CPU的性能瓶颈,到底是垂直拆分,还是水平拆分;具体是分库,还是分表,都需要根据具体的业务需求具体分析。

实现技术

  • shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析、改写、路由处理。需要自行编码配置实现,只支持java语言,性能较高。
  • MyCat:数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及前者。

MyCat概述

介绍

Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在。

开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器里面存储了什么数据,都无需关心。 具体的分库分表的策略,只需要在MyCat中配置即可。

优势:

  • 性能可靠稳定
  • 强大的技术团队
  • 体系完善
  • 社区活跃

分库分表的工作原理:拦截客户端提交的SQL语句并进行分析(如:分片分析、路由分析、读写分离分析、缓存分析等),然后将此SQL发往后端的真实数据库,并将返回的结果处理(如:数据合并)后再返回给客户端。如下图:

参考数据库架构之【MySQL8+MyCat2+Keepalived】RDBMS 读写分离和分库分表集群方案 - 简书 (jianshu.com)

MySql使用MyCat分库分表(一)相关推荐

  1. MySql使用MyCat分库分表(四)分片规则

    视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定 ...

  2. MySql使用MyCat分库分表(三)配置详解

    视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 一.MyCat 配置 schema ...

  3. 【MySQL】MyCat分库分表分片规则配置详解与实战(MySQL专栏启动)

  4. mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

    一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件,运行在代码应用和MySQL数据库之间的应用. 前身: corb ...

  5. docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...

    一.MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Communi ...

  6. MySQL单表膨胀优化之MyCat分库分表

    MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右.但是MySQL单表达到1500W时性能开始急剧下降! 事实上MySQL单表可以存储10亿级数据,只是这时候性能比 ...

  7. 利用MyCAT分库分表

    文章目录 MyCAT分库分表 一.分库分表简介 二.垂直切分---分库 1.思想 2.配置实现 三.水平切分 MyCAT分库分表 一.分库分表简介 在业务数据量过多的时候,而且数据不断持续增长的情况下 ...

  8. MyCat分库分表和读写分离

    文章目录 1.MyCat 1.1.MyCat简介 1.2.Mycat对多数据库的支持 1.3.MyCAT架构 1.4.MyCat分库分表 1.5.MyCat下载与安装 1.5.1.下载mycat 1. ...

  9. mycat分库分表与读写分离

    mycat分库分表与读写分离 Dockerfile搭建mycat 1.创建mycat的配置文件 #新建目录 mkdir /docker/mycat#切换目录 cd /docker/mycat#下载my ...

最新文章

  1. spring boot 字体文件等静态资源无法获取
  2. 记录 之 一个小bug:Unsupported syntax ‘Starred‘
  3. 空间谱专题16:信号个数估计
  4. node ajax validator,使用validator.js对字符串数据进行验证
  5. 一行代码画一个数据分析图(lzdb 库)
  6. 黑马2018年JavaEE课程大纲
  7. 开课吧Java课堂之什么是搜索字符串
  8. 【转】一个基于Ajax的通用(组合)查询(ASP.NET)
  9. Onvif协议学习:12、修改分辨率
  10. 【Coursera公开课】职场素养 笔记
  11. 初中计算机flash基本知识,初中信息技术flash课件
  12. 图灵——如迷的解谜者
  13. oracle11g dataguard
  14. 微信小程序 表单控件【族谱聚微信小程序表单控件】
  15. android gpuimage 直播,1小时学会:最简单的iOS直播推流(四)如何使用GPUImage,如何美颜...
  16. 关于声音的前后左右上下的控制以及单声道立体声的区别
  17. 使用VMware 5.5.3在Ubuntu Edgy上安装VMware Tools
  18. Excel函数公式大全—LOOKUP函数
  19. 无法打开文件“libboost_thread-vc120-mt-gd-1_58.lib的解决办法
  20. 没有加入泛型之前存在的问题

热门文章

  1. 解题思考F. 解方程(二分法解方程)
  2. 仓储管理之计价方法——先进先出法
  3. 服装市场的现状及发展趋势
  4. Stochastically Stable Negativity for Analytically Linear Subalgebras——ShaneZhang
  5. 世界时区与北京时间的时差表
  6. 大公司为什么会倒闭?
  7. 招商银行如何关闭大众版和手机银行转账功能
  8. 【Axure视频教程】鼠标滚动切换图片
  9. MySQL启动和关闭命令总结
  10. Java生成动态生成水印图片,为图片打水印. Java为图片打水印