天继续给大家介绍MySQL相关知识,本文主要内容是MySQL数据库的分库和分表思路。

一、分库分表基本原理

分库和分表就是将本来在一个数据库上存储的表,分散存储到多个数据库上。分库和分表可以显著降低MySQL数据库的存储压力,当数据库中的数据存储量越来越多时,不仅可能超出磁盘的存储空间大小,还可能对数据的增删改查操作性能造成极大的影响。因此,当一台设备上的硬件资源,达到了数据库的瓶颈时,就可以考虑进行分库和分表。
分库可以在前端简单的实现,例如,根据ID来进行分库,单数ID的数据存储在一个分库中,奇数ID的数据存储在另一个分库中。

二、分库分表存在的问题

但是,分库和分表也会带来一些问题,主要有以下三个方面:
1、事务问题
在进行分库和分表后,由于数据存储到了不同的数据库上,因此数据库事务管理上存在极大的困难。如果依赖数据库本身的分布式事务管理功能,将会付出很大的性能开销,而如果在编程端由应用程序实现逻辑上的事务操作,又会给开发人员造成额外负担。
2、跨库、跨表的联合查询问题
在进行分库和分表后,不同的数据表可能会分散存储在不同的数据库中,如果这些表有一定的关联性,那么在进行联表查询的时候,就无法join位于不同数据库的表,只能将原来一次查询可以完成的业务,拆分成多次查询。
3、额外的数据管理负担和数据运算压力
当进行分裤和分表后,如果要对数据库中的内容进行统计操作,则会带来非常大的开销,例如,计算学生成绩表中的平均分、查找学习成绩最好的10个学生等操作,本来在一个数据表上可以直接查询得到,但是如果我们将这些信息存储到了不同的数据表中,我们就需要通过多次查询,并进行额外的数据处理后,才可以得到结果。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

MySQL优化详解(五)——MySQL分库分表相关推荐

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

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

  2. MySql高可用搭建 + 读写分离 + 分库分表

    Mysql读写分离与分库分表 一.Mysql读写分离解决的问题 二.mysql处理请求运行流程 三.读写分离结构 四.读写分离产生场景 五.读写分离工具 5.1 MyCat 5.2 HAProxy 5 ...

  3. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)

    什么是MYCAT: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个 ...

  4. mysql pdo 插入没效果_MySQL分库分表后用PHP如何来完美操作

    当单表达到几千万时,查询一次要很久,如果有联合查询,有可能会死在那 分库分表主要就是解决这个问题,减小数据库的负担,缩短查询时间分库 1)按功能分 用户类库.商品类库.订单类库.日志类.统计类库... ...

  5. springcloud mysql库集群_SpringCloud实现分库分表模式下,数据库实时扩容方案

    一.项目结构 1.工程结构 2.模块命名 shard-common-entity: 公共代码块 shard-open-inte: 开放接口管理 shard-eureka-7001: 注册中心 shar ...

  6. 分布式.数据库架构(Mysql 就这么点东西,分库分表读写分离集群演化)

    缘起 讲个创业故事,某一天老总想做一个HR的Saas系统,其中员工信息表,但不同员工信息表有一部分是相同的,也有一部分不同的.我们就把不同的放在一个json字段(Mysql 8.0以后支持)中,Dao ...

  7. mysql 优化详解_MySQL 优化详解

    1.缓存池 MySQL的设计是通过缓存池的方式的,也就是说将一部分的数据都储存到内存中,当我们查找一个数据的时候,如果发现在缓存池中的时候,就能够直接的 从缓存中获取,如果不在的话,那么就去磁盘中加载 ...

  8. php mysql 操作函数_PHP操作mysql函数详解,mysql和php交互函数

    1. 建立和关闭连接1) mysql_connect() resource mysql_connect([string hostname [:port][:/path/to/socket][,stri ...

  9. mysql sharding 方案_mysql sharding 方案 分库分表(sharding)系列(4)

    图1. Sharding实现层面与相关框架/产品 在DAO层实现 当团队决定自行实现sharding的时候,DAO层可能是嵌入sharding逻辑的首选位置,因为在这个层面上,每一个DAO的方法都明确 ...

  10. 【数据库】分库分表分区

    目录 通用的概念 拆分方式 水平拆分(Sharding) 垂直拆分 一.分区 1. 分区的特点 2. 分区路由规则 3. 分区优/缺点 参考 二.分库分表 为什么分库分表 1. 分库 2. 分表 3. ...

最新文章

  1. jQuery将不再支持IE6/7/8
  2. 2.3.2 spring属性注入-注解注入-半注解注入-后序
  3. VS2010 不能将参数 2 从“char [20]”转换为“LPCWSTR”的错误解决
  4. 用shp制作geoJson格式地图数据(shp convert to geoJson)
  5. phoenix关联hbase表:通过建立视图映射或表映射的方式
  6. face_recognition快速入门
  7. 牛客 - 弦(卡特兰数)
  8. 深入浅出学Hive:Hive参数
  9. IOS设置导航栏的背景图片和文字
  10. 上传文件到某文件夹时,提示...路径访问被拒绝
  11. AcWing1069.凸多边形的划分(区间DP)题解
  12. python发音语言-python 利用pyttsx3文字转语音过程详解
  13. [原创]UUID的介绍和使用
  14. POJ1149PIGS
  15. xftp中文文件名乱码
  16. Python获取微信好友地址以及性别并生成可视化图表
  17. fusioncharts的打印管理(printManager)
  18. 地下城php补丁怎么用,dnf技能补丁怎么用到WeGame(附其使用教程)
  19. Jmail的使用方法
  20. echarts饼图设置每个扇形的颜色

热门文章

  1. NLP学习—15.多模态研究方向及在文本分类、文本生成的应用
  2. NLP—6.数据不平衡处理
  3. 优化理论18----Fritz John条件
  4. 触发器(Trigger)的使用方法详解
  5. Mysql数据库安装和配置
  6. 【论文阅读】医疗影像分割中的半监督学习Semi-supervised
  7. keras load model 并保存特定层 (pop) 的权重save new_model
  8. 【数据结构笔记】Leetcode买卖股票的最佳时机 系列总结
  9. linux 7种网卡绑定模式,七种网卡绑定模式详解
  10. unity 源码_Unity-DataFlowGraph 读源码例子Tour笔记 14