要了解分区与分片之间的差异,首先我们需要知道什么是分片与分区。分片:分片Sharding 不是一门新技术,而是一个相对简朴的软件理念。众所周知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 mysql 的潜在用户都对 MySQL 的扩展性有所顾虑,而是否具备分区功能就成了衡量一个数据库可扩展性与否的一个关键指标(当然不是唯一指标)。数据库扩展性是一个永恒的话题,MySQL 的推广者经常会被问到:如在单一数据库上处理应用数据捉襟见肘而需要进行分区化之类的处理,是如何办到的呢? 答案是:Sharding。  Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。

通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由 或者 table路由规则找到需要查询的具体的DB或者table,以进行Query操作。这里所说的“sharding”通常是指“水平切分”, 这也是本文讨论的重点。具体将有什么样的切分方式呢和路由方式呢?行文至此,读者难免有所疑问,接下来举个简单的例子:我们针对一个Blog应用中的日志来说明,比如日志文章(article)表有如下字段:article_id(int),title(varchar(128)),content(varchar(1024)),user_id(int)所谓的特定的用户,用数据库的字段表示就是“user_id”。就是这个“user_id”,它就是我们需要的分库的依据和规则的基础。我们可以这样做,将user_id为 1~10000的所有的文章信息放入DB1中的article表中,将user_id为10001~20000的所有文章信息放入DB2中的 article表中,以此类推,一直到DBn。 这样一来,文章数据就很自然的被分到了各个数据库中,达到了数据切分的目的。要想获得目标数据,这时候我们利用DB路由的功能 来查找存储相应的数据在那台服务器上。看到这里,是不是觉得这个和表分区很像?确实很多地方,分区和分片有很多的相似之处,但他们又有什么区别呢?

Sharding与数据库分区(Partition)的区别有的时候,Sharding 也被近似等同于水平分区(Horizontal Partitioning),网上很多地方也用水平分区来指代 Sharding,但我个人认为二者之间实际上还是有区别的。的确,Sharding 的思想是从分区的思想而来,但数据库分区基本上是数据对象级别的处理,比如表和索引的分区,每个子数据集上能够有不同的物理存储属性,还是单个数据库范围内的操作,而 Sharding 是能够跨数据库,甚至跨越物理机器的。

mysql分片与分区的区别

MySQL5.1提供的分区(Partition)功能确实可以实现表的分区,但是这种分区是局限在单个数据库范围里的,它不能跨越服务器的限制。如果能够保证数据量很难超过现有数据库服务器的物理承载量,那么只需利用MySQL5.1提供的分区(Partition)功能来改善数据库性能即可;否则,还是考虑应用Sharding理念吧,spider storage engine就是一个不错的选择。

分区和分片的区别_MySQL分区与分片的差异相关推荐

  1. 分区和分片的区别_Mysql分表和分区的区别、分库分表介绍与区别

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看: [root@BlackGhost test]# ls |grep user a ...

  2. mysql分区和分表比较_MySQL分区和分表的区别与联系

    一.分区和分表简介 分表 就是将一张大表分成N个小表. 分区 将一张大表的数据分成N个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上. 二.分区和分表的区别 1. 实现方式 1.1 分表 My ...

  3. 分区和分片的区别_MySql分表、分库、分片和分区知识点介绍

    一.前言 数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈.需要进行数据的处理,采用的手段是分区.分片.分库.分表. 二.分片(类似分库) 分片是把数据库横向扩展(Scale Out)到多个 ...

  4. 分区和分片的区别_PHP: 分区和分片 - Manual

    分区和分片 数据库群组是由于各种各样的原因建立的,他可以提升处理能力.容忍错误,并且 提升大量服务器同时工作的的性能.群组有时会组合分区和共享功能,来将大量复杂的任务 分拆成更加简单的任务,更加可控的 ...

  5. mysql的分区和索引详解_Mysql分区和索引记录

    分区 前提:当数据量达到800w的时候,用create_date进行设置索引查询,也需要花费5s以上,所以还得进行分区操作,达到更快的效果.设置好分区后,查询就是0.5s. 开始操作:用create_ ...

  6. 数据库分区、分表、分片的区别

    一.分区的概念 分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表.另外,分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据 ...

  7. mysql 分区 mycat 分片_Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)...

    一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: select * from travelrecord where id in(5000001, 10000001) ...

  8. mysql 西安_MySQL分区维护

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 注释:实际上,本节讨论的命令还没有在MySQL 5.1中实现, 在这里提出的目的,是为了在5.1版投产前的开发周期期间,引出来自用户测试该软件的反馈意见. ...

  9. mysql 字符串类型 分区_MySQL分区类型

    博文大纲: 1.RANGE分区 2.LIST分区 3.HASH分区 4.key分区 5.MySQL分表和分区的区别 6.附加:如何实现将分区放在不同的目录下进行存储 MySQL分区类型如下: RANF ...

最新文章

  1. 如何创建一个数据科学项目?
  2. spark分区增减、JavaFX基本操作和HDFS NN DN概念
  3. JPA 2.1如何成为新的EJB 2.0
  4. Leetcode--80. 删除排序数组中的重复项Ⅱ
  5. 【Dreamweaver】前端初学者开发利器Dreamweaver快捷键大全
  6. linux的users命令,linux users命令详解
  7. python前端开发工具篇
  8. qj71c24n通讯实例_三菱Q系列串行通信模块QJ71C24N概述与特点
  9. week15——作业(字符串,完结撒花)
  10. SQL计算日环比、周同比
  11. 最黑链的如何写隐藏代码
  12. python怎么安装bokeh_Python如何使用bokeh包和geojson数据绘制地图
  13. Vue-js 零基础 国外案例 DEMO 全课程讲解 3 我是---- 静静
  14. Arduino开发遥控小车(三)基于nRF24L01无线模块实现舵机转向和直流电机调速
  15. java实现屏幕中大图查找小图
  16. Linux WAK介绍与入门实例
  17. 计算机学院的迎新晚会,计算机学院举办迎新晚会
  18. css使用font-face引入阿里图标库的图标 - Kaiqisan
  19. 五个故事,告诉你为什么要做目标管理
  20. steam教育机构品牌

热门文章

  1. etcd和mysql_etcd和redis比较
  2. 拼装机器人感想_机器人学习心得体会(精选3篇)
  3. Hadoop集群规划
  4. Linus:“我删除了Linux,因为它就是个垃圾!”
  5. 这样的奇技淫巧不可取,切记切记
  6. 撒花!算法岗必须复现的上百篇经典论文代码完结啦! | 附下载链接
  7. 肝了我好久,《Python知识手册V1.0》出来了!!!
  8. python引入redis_十六大Python面试题!看完面试官给了我40K的薪资
  9. stl clocklist 查找元素_C++算法竞赛中常用的STL
  10. python编程用户登陆c_django实现用户登陆功能详解