MySQL优化详解(五)——MySQL分库分表
天继续给大家介绍MySQL相关知识,本文主要内容是MySQL数据库的分库和分表思路。
一、分库分表基本原理
分库和分表就是将本来在一个数据库上存储的表,分散存储到多个数据库上。分库和分表可以显著降低MySQL数据库的存储压力,当数据库中的数据存储量越来越多时,不仅可能超出磁盘的存储空间大小,还可能对数据的增删改查操作性能造成极大的影响。因此,当一台设备上的硬件资源,达到了数据库的瓶颈时,就可以考虑进行分库和分表。
分库可以在前端简单的实现,例如,根据ID来进行分库,单数ID的数据存储在一个分库中,奇数ID的数据存储在另一个分库中。
二、分库分表存在的问题
但是,分库和分表也会带来一些问题,主要有以下三个方面:
1、事务问题
在进行分库和分表后,由于数据存储到了不同的数据库上,因此数据库事务管理上存在极大的困难。如果依赖数据库本身的分布式事务管理功能,将会付出很大的性能开销,而如果在编程端由应用程序实现逻辑上的事务操作,又会给开发人员造成额外负担。
2、跨库、跨表的联合查询问题
在进行分库和分表后,不同的数据表可能会分散存储在不同的数据库中,如果这些表有一定的关联性,那么在进行联表查询的时候,就无法join位于不同数据库的表,只能将原来一次查询可以完成的业务,拆分成多次查询。
3、额外的数据管理负担和数据运算压力
当进行分裤和分表后,如果要对数据库中的内容进行统计操作,则会带来非常大的开销,例如,计算学生成绩表中的平均分、查找学习成绩最好的10个学生等操作,本来在一个数据表上可以直接查询得到,但是如果我们将这些信息存储到了不同的数据表中,我们就需要通过多次查询,并进行额外的数据处理后,才可以得到结果。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
MySQL优化详解(五)——MySQL分库分表相关推荐
- mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置
一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件,运行在代码应用和MySQL数据库之间的应用. 前身: corb ...
- MySql高可用搭建 + 读写分离 + 分库分表
Mysql读写分离与分库分表 一.Mysql读写分离解决的问题 二.mysql处理请求运行流程 三.读写分离结构 四.读写分离产生场景 五.读写分离工具 5.1 MyCat 5.2 HAProxy 5 ...
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
什么是MYCAT: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个 ...
- mysql pdo 插入没效果_MySQL分库分表后用PHP如何来完美操作
当单表达到几千万时,查询一次要很久,如果有联合查询,有可能会死在那 分库分表主要就是解决这个问题,减小数据库的负担,缩短查询时间分库 1)按功能分 用户类库.商品类库.订单类库.日志类.统计类库... ...
- springcloud mysql库集群_SpringCloud实现分库分表模式下,数据库实时扩容方案
一.项目结构 1.工程结构 2.模块命名 shard-common-entity: 公共代码块 shard-open-inte: 开放接口管理 shard-eureka-7001: 注册中心 shar ...
- 分布式.数据库架构(Mysql 就这么点东西,分库分表读写分离集群演化)
缘起 讲个创业故事,某一天老总想做一个HR的Saas系统,其中员工信息表,但不同员工信息表有一部分是相同的,也有一部分不同的.我们就把不同的放在一个json字段(Mysql 8.0以后支持)中,Dao ...
- mysql 优化详解_MySQL 优化详解
1.缓存池 MySQL的设计是通过缓存池的方式的,也就是说将一部分的数据都储存到内存中,当我们查找一个数据的时候,如果发现在缓存池中的时候,就能够直接的 从缓存中获取,如果不在的话,那么就去磁盘中加载 ...
- php mysql 操作函数_PHP操作mysql函数详解,mysql和php交互函数
1. 建立和关闭连接1) mysql_connect() resource mysql_connect([string hostname [:port][:/path/to/socket][,stri ...
- mysql sharding 方案_mysql sharding 方案 分库分表(sharding)系列(4)
图1. Sharding实现层面与相关框架/产品 在DAO层实现 当团队决定自行实现sharding的时候,DAO层可能是嵌入sharding逻辑的首选位置,因为在这个层面上,每一个DAO的方法都明确 ...
- 【数据库】分库分表分区
目录 通用的概念 拆分方式 水平拆分(Sharding) 垂直拆分 一.分区 1. 分区的特点 2. 分区路由规则 3. 分区优/缺点 参考 二.分库分表 为什么分库分表 1. 分库 2. 分表 3. ...
最新文章
- jQuery将不再支持IE6/7/8
- 2.3.2 spring属性注入-注解注入-半注解注入-后序
- VS2010 不能将参数 2 从“char [20]”转换为“LPCWSTR”的错误解决
- 用shp制作geoJson格式地图数据(shp convert to geoJson)
- phoenix关联hbase表:通过建立视图映射或表映射的方式
- face_recognition快速入门
- 牛客 - 弦(卡特兰数)
- 深入浅出学Hive:Hive参数
- IOS设置导航栏的背景图片和文字
- 上传文件到某文件夹时,提示...路径访问被拒绝
- AcWing1069.凸多边形的划分(区间DP)题解
- python发音语言-python 利用pyttsx3文字转语音过程详解
- [原创]UUID的介绍和使用
- POJ1149PIGS
- xftp中文文件名乱码
- Python获取微信好友地址以及性别并生成可视化图表
- fusioncharts的打印管理(printManager)
- 地下城php补丁怎么用,dnf技能补丁怎么用到WeGame(附其使用教程)
- Jmail的使用方法
- echarts饼图设置每个扇形的颜色
热门文章
- NLP学习—15.多模态研究方向及在文本分类、文本生成的应用
- NLP—6.数据不平衡处理
- 优化理论18----Fritz John条件
- 触发器(Trigger)的使用方法详解
- Mysql数据库安装和配置
- 【论文阅读】医疗影像分割中的半监督学习Semi-supervised
- keras load model 并保存特定层 (pop) 的权重save new_model
- 【数据结构笔记】Leetcode买卖股票的最佳时机 系列总结
- linux 7种网卡绑定模式,七种网卡绑定模式详解
- unity 源码_Unity-DataFlowGraph 读源码例子Tour笔记 14