MySQL分区(Partition)与分片(Sharding)的差别

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

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

    sharding分为垂直分区和水平分区。垂直就是把不一样的表分散到不一样的数据库或主机。适合耦合度低系统。水平分区以行为单位,将同一个表的数据拆分到不一样数据库或主机上,适合复杂系统。ide

    此外,sharding还能够分为静态和动态。静态即分区键是静态分配的。可能数据不均衡。动态则引入一个字典,而后定位在哪一个分片。每次查询要2步,且可能存在单点故障。性能

相关文章
相关标签/搜索