随着业务的不断增长,数据库中的数据也会越来越多,数据库的压力也会越来越大,我们会发现,在业务繁忙的时候,数据库的性能会直线下降,这时为了保证良好的性能,不得不想办法来分担数据库的压力,前面在介绍数据库架构高可用时,我们提到过,如果是为了分担数据库的读负载,我们可以采用主从复制的方式,给原来的数据库,增加几台具有相同数据的从服务器,这样呢通过读写分离的方式,我们就可以把数据库的读负载,分担到不同的从数据库服务器中了,这时在一段时间内呢,可能已经可以解决,我们的数据库性能问题了,但是随着业务的进一步发展,我们会发现,这时单一的主数据库呢,已经负担不了写的负载了,那么这时我们要怎么办呢,当然我们可以升级主数据库的硬件,但是硬件的扩充,也只能解决一时的问题,更何况MYSQL对于CPU的支持呢,也是有一个限度的,所以升级服务器的硬件,并不能完美的解决我们所遇到的问题,那么我们只能对原有的主数据库服务器进行拆分了,通常来说,对主数据库服务器的拆分,有下面几种方式,第一种方式呢,是把原来单一的主数据库服务器,多个数据库,拆分到不同的物理服务器中,数据库实例中去,我们知道,在一个MYSQL实例中,可能包含多个逻辑数据库,比如下图中的MYSQL节点,就包含了订单库,用户库,促销库,有一点我们要注意,这里所说的MYSQL节点,并不是代表一台MYSQL数据库,这里的节点代表的是MYSQL集群,也就是一组多从的数据库环境,只不过在这个集群中呢,所有数据库的数据全都是一致的,所以为了方便,我们就称之为一个节点,那么单一节点的第一种方式呢,也就是把这个节点中的不同数据库,拆分到不同的节点上去,以上面的MYSQL节点为例呢,我们可以把这个节点数据库,拆分到不同的三个节点上,如果MYSQL节点一中,只包含订单库,增加MYSQL节点二,存储用户库,节点三来存储促销库,这样我们就把单一节点的写案列,分摊到了三个节点上,这种做法的好处呢,是相对来说,实现数据库的拆分比较简单,特别是如果我们的业务应用,本身不允许跨库查询的情况下,那么实现这种拆分呢,实际上只要对不同的数据库,连接进行一下配置就可以了,缺点呢就是如果我们本身的写压力,就是集中在一个数据库中的话,比如我们原来的写压力呢,集中在订单数据库中,那么这样拆分后呢,实际上并不能减少多少MYSQL节点一的写负载,那么接下来呢,我们再来看看分库分表的第二种方式,就像前面所说的,如果把一个数据库迁移到一个独立节点中后,还是发现这个节点的主数据库呢,仍然不能负担这个数据库的写负载,我们要怎样处理呢,这个时候我们就可以使用分库分表的第二种方式了

我们就可以使用分库分表的第二种方式了,就是把原来一个逻辑数据库中的表,分离到不同节点的不同数据库中,一个数据库中呢,会有很多的表,这些表会记录不同主题的数据,比如我们前面介绍的订单数据库中,既可以存放订单的相关信息,也可以存放商品的相关信息表,和购物车的相关信息表,不过通过分析,我们发现,这个数据库的主要写压力呢,来源于购物车,和订单的相关表,那么这个时候我们就可以单独的把这两组表拆分到不同的数据库节点中去,这样拆分后呢,每一个数据库实际上承担的,实际上是原来数据库表的一部分压力,这样就可以减轻原有数据库,写负载的目的,使用这种方法呢,可以在一定的时间内,来解决我们的问题,但是随着我们业务的进一步发展,这时候我们又发现,订单的相关信息表,所在的数据库节点呢,又出现写压力的问题,那么这个时候呢,又要如何处理呢,如果再想按照主体进行拆分表的话,显然是不可能的了,所以这时我们就要使用分库分表的大招了,也就是传说中的表的水平拆分

数据库分库分表的几种方式相关推荐

  1. 8-1 数据库分库分表的几种方式

  2. 一文读懂数据库分库分表

    阅读此文你将了解: 什么是分库分表以及为什么分库分表 如何分库分表 分库分表常见几种方式以及优缺点 如何选择分库分表的方式 数据库常见优化方案 对于后端程序员来说,绕不开数据库的使用与方案选型,那么随 ...

  3. 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案...

    为什么80%的码农都做不了架构师?>>>    版权声明:本文由本人撰写并发表于2012年9月份的<程序员>杂志,原文题目<一种支持自由规划的Sharding扩容方 ...

  4. 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量...

    当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产 品可供参考,同时很多团队也会选择自主开发实现,而不管是 ...

  5. 别再问什么是数据库分库分表了,看这里!

    编者语:为了避免被误解为:「手里有把锤子,看什么都是钉子!」,说明一下不是什么业务都适合分布式数据库,更不是用了分布式数据库性能就一定能得到扩展. 其次:本文为纯干货,建议先转发.收藏再观看. 分布式 ...

  6. 分库分表的 9种分布式主键ID 生成方案

    <sharding-jdbc 分库分表的 4种分片策略> 中我们介绍了 sharding-jdbc 4种分片策略的使用场景,可以满足基础的分片功能开发,这篇我们来看看分库分表后,应该如何为 ...

  7. 数据库分库分表,分片配置轻松入门!

    上次和大伙聊了 MyCat 的安装,今天来说一个新的话题,就是数据库的分片. 当我们把 MyCat + MySQL 的架构搭建完成之后,接下来面临的一个问题就是,数据库的分片规则:有那么多 MySQL ...

  8. 数据库--分库分表--垂直分表与水平分表

    原文网址:数据库--分库分表--垂直分表与水平分表_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍数据库的分库分表的方案:垂直分表与水平分表. 关系型数据库本身比较容易成为系统瓶颈,单机存储容 ...

  9. 数据库分库分表解决方案

    数据库分库分表解决方案 前言 MySQL表大小限制 分表方案 垂直分表 水平分表 按月分表 MySQL分区表 分库方案 按业务分库 按表分库 拆分后的问题及常见的解决方案 垂直拆分 跨库Join问题 ...

最新文章

  1. oracle存储过程 多条件,Oracle多条件查询实际分页存储过程实操
  2. python中的优化器有哪些_Python中有哪些性能优化方法
  3. linux下的启停脚本
  4. UE4 Slate Architecture
  5. java中1%4是多少,四则运算(java) 王哲文 邹庭和
  6. CentOS下搭建wordpress全流程
  7. 记一次zookeeper连接数暴增事件
  8. 传智播客 C/C++学习笔记 多级指针
  9. 继承ActionSupport例子
  10. docker修改服务器ip地址,如何修改docker的ip地址
  11. Android半透明对话框实现
  12. Java微服务架构图(仅供参考,不一定适用)
  13. css transition opacity,CSS transition属性
  14. 说起仙人掌,相信你一定不会觉得陌生
  15. 【奇技淫巧】Linux | 时光之主-date
  16. 以下关于python二维数据的描述中错误的是_关于二维数据CSV存储问题,以下选项中描述错误的是‪‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫:...
  17. 微信号名称乱码什么情况_微信号改成什么比较好,2020最火微信号!
  18. 【java】环境变量安装
  19. 【Audio】Unity音频模块:加载、转换、剪切、混音、合并
  20. 程序员生存定律-选公司前要干的事:分类

热门文章

  1. CORBA GIOP消息格式学习
  2. 纯CSS无hacks的跨游览器多列布局(转)
  3. php面试专题---MYSQL查询语句优化
  4. mysql死锁问题分析
  5. Loadrunner通过ssh连接linux进行hadoop基准测试
  6. CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator
  7. Oracle的奇葩设置之非归档模式与RMAN备份
  8. 使用java进行文件编码转换
  9. 查看tomcat启动文件都干点啥---server对象
  10. 多张表数据导入到execl中