MySQL分区和ORACLE相比有哪些不足

分库、分表、分区的操作在各种数据库都可以做。由于数据库不同的原因,很多的内部实现和我们要综合考虑的地方都因此不同。现在很多公司都在用多种数据库,大家没什么发现分区分表在mysql里不如其它数据库的地方?...显示全部

分库、分表、分区的操作在各种数据库都可以做。由于数据库不同的原因,很多的内部实现和我们要综合考虑的地方都因此不同。
现在很多公司都在用多种数据库,大家没什么发现分区分表在mysql里不如其它数据库的地方?

收起
参与24

查看其它 2 个回答y18511664518的回答

y18511664518y18511664518技术总监长城超云

MySQL的分区主要有两种形式:水平分区和垂直分区
水平分区(HorizontalPartitioning)
这种形式的分区是对根据表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。
所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。水平分区一定要通过某个属性列来分割。常见的比如年份,日期等。
垂直分区(VerticalPartitioning)
这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应所有行。
可以用 showvariables like '%partition%';
命令查询当前的mysql数据库版本是否支持分区。
分区的作用:数据库性能的提升和简化数据管理
在扫描操作中,mysql优化器只扫描保护数据的那个分区以减少扫描范围获得性能的提高。
分区技术使得数据管理变得简单,删除某个分区不会对另外的分区造成影响,分区有系统直接管理不用人工干预。
mysql从5.1版本开始支持分区。每个分区的名称是不区分大小写。同个表中的分区表名称要唯一。
二、 mysql分区类型
根据所使用的不同分区规则可以分成几大分区类型。
RANGE 分区:
基于属于一个给定连续区间的列值,把多行分配给分区。
LIST 分区:
类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
HASH分区:
基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。
KEY
分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
复合分区:
基于RANGE/LIST 类型的分区表中每个分区的再次分割。子分区可以是 HASH/KEY 等类型。
上边说了一下mysql分区,但是现在在实际生产环境中体现出来的并不能像oracle那样分区以后能增加并发量,数据量,mysql的分区能在一定程度上提高性能,方便管理,还有待完善。结合分表,读写分离等方案会更好一些。

金融其它 · 2017-07-05
浏览3019

回答者

y18511664518
技术总监长城超云
擅长领域: 数据库存储关系型数据库

y18511664518 最近回答过的问题

回答状态

  • 发布时间:2017-07-05
  • 关注会员:5 人
  • 回答浏览:3019
  • X社区推广