MySql使用MyCat分库分表(一)
前几天面试,被面试官问道,工作中是否用到过分库分表。(⊙﹏⊙),当然没用到过,所以赶紧补一下!
视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili
笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun)
问题分析:
随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:
- IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。 请求数据太多,带宽不够,网络IO瓶颈。
- 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分库分表(一)相关推荐
- MySql使用MyCat分库分表(四)分片规则
视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定 ...
- MySql使用MyCat分库分表(三)配置详解
视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 一.MyCat 配置 schema ...
- 【MySQL】MyCat分库分表分片规则配置详解与实战(MySQL专栏启动)
- mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置
一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件,运行在代码应用和MySQL数据库之间的应用. 前身: corb ...
- docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...
一.MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Communi ...
- MySQL单表膨胀优化之MyCat分库分表
MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右.但是MySQL单表达到1500W时性能开始急剧下降! 事实上MySQL单表可以存储10亿级数据,只是这时候性能比 ...
- 利用MyCAT分库分表
文章目录 MyCAT分库分表 一.分库分表简介 二.垂直切分---分库 1.思想 2.配置实现 三.水平切分 MyCAT分库分表 一.分库分表简介 在业务数据量过多的时候,而且数据不断持续增长的情况下 ...
- MyCat分库分表和读写分离
文章目录 1.MyCat 1.1.MyCat简介 1.2.Mycat对多数据库的支持 1.3.MyCAT架构 1.4.MyCat分库分表 1.5.MyCat下载与安装 1.5.1.下载mycat 1. ...
- mycat分库分表与读写分离
mycat分库分表与读写分离 Dockerfile搭建mycat 1.创建mycat的配置文件 #新建目录 mkdir /docker/mycat#切换目录 cd /docker/mycat#下载my ...
最新文章
- spring boot 字体文件等静态资源无法获取
- 记录 之 一个小bug:Unsupported syntax ‘Starred‘
- 空间谱专题16:信号个数估计
- node ajax validator,使用validator.js对字符串数据进行验证
- 一行代码画一个数据分析图(lzdb 库)
- 黑马2018年JavaEE课程大纲
- 开课吧Java课堂之什么是搜索字符串
- 【转】一个基于Ajax的通用(组合)查询(ASP.NET)
- Onvif协议学习:12、修改分辨率
- 【Coursera公开课】职场素养 笔记
- 初中计算机flash基本知识,初中信息技术flash课件
- 图灵——如迷的解谜者
- oracle11g dataguard
- 微信小程序 表单控件【族谱聚微信小程序表单控件】
- android gpuimage 直播,1小时学会:最简单的iOS直播推流(四)如何使用GPUImage,如何美颜...
- 关于声音的前后左右上下的控制以及单声道立体声的区别
- 使用VMware 5.5.3在Ubuntu Edgy上安装VMware Tools
- Excel函数公式大全—LOOKUP函数
- 无法打开文件“libboost_thread-vc120-mt-gd-1_58.lib的解决办法
- 没有加入泛型之前存在的问题