MySQL数据库是如何分区表的?

分区是一种表的设计模式。通常,表分区是根据条件将一个大表分为几个小表。 但是对于应用程序来说,分区表与没有分区的表是相同的。换句话说,分区对应用程序是透明的,但是数据库却会重新排列数据。在进行的项目中,我们需要保存大量的、有效的数据,为了提高查询效率并快速删除过期数据,我们选择了MySQL分区机制。那么MySQL数据库如何对表进行分区?

MySQL数据库是如何分区表的?_业界动态_数字化

 分区类型

1.Range分区:最为常用,基于属于一个给定连续区间的列值,把多行分配给分区。最常见的是基于时间字段。基于分区的列最好是整型,如果日期型的可以使用函数转换为整型。

2.List分区:LIST分区和RANGE分区类似,区别在于LIST是枚举值列表的集合,RANGE是连续的区间值的集合。

3.Hash分区:基于给定的分区个数,将数据分配到不同的分区,HASH分区只能针对整数进行HASH,对于非整形的字段只能通过表达式将其转换成整数。

4.Key分区:KEY分区其实跟HASH分区差不多,不同点如下:

(1)KEY分区允许多列,而HASH分区只允许一列。

(2)如果在有主键或者唯一键的情况下,key中分区列可不指定,默认为主键或者唯一键,如果没有,则必须显性指定列。

(3)KEY分区对象必须为列,而不能是基于列的表达式。

(4)KEY分区和HASH分区的算法不一样,PARTITION BY HASH (expr),MOD取值的对象是expr返回的值,而PARTITION BY KEY (column_list),基于的是列的MD5值。

 分区命令

创建分区

MySQL数据库是如何分区表的?_业界动态_数字化

创建后可以看到,每个分区都会对应1个ibd文件

MySQL数据库是如何分区表的?_业界动态_数字化

 注意事项

1.MySQL分区中如果存在主键或唯一键,则分区列必须包含在其中(否则判断主键或唯一时,需要扫描所有分区);

2.分区字段不能为NULL,要不然怎么确定分区范围呢,所以尽量NOT NULL;

3.最大分区数目不能超过1024;

4.不支持外键;

5.只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列;

6.分区表不影响自增列。

 常见问题

1.A PRIMARY KEY must include all columns in the table's partitioning function:这样的话判断主键是否唯一就可以在单个分区内部完成,否则就需要跨所有的分区;

2.MAXVALUE can only be used in last partition definition:RANGE表分区后不能带MAXVALUE分区,否则无法增加分区。或者就只能重新分区了;

MySQL数据库是如何分区表的?_业界动态_数字化

3.Table has no partition for value 737425:因为分区的范围没有包含所有可能的记录的值。

到此这篇关于MySQL数据库是如何分区表的文章就介绍到这了,更多相关MySQL数据库分区表的内容,请继续关注。

79
88
0
17

相关资讯

  1. 1、众大佬送别金庸大侠最后一程,黄晓明与马云现身,刘德华献花圈!2759
  2. 2、重映13天票房78万,巩俐尽力了,张艺谋也无奈,他跌落神坛了328
  3. 3、李川《我的小确幸》热播“承让CP”或要开虐3714
  4. 4、张东健接3岁半儿子放学父子首度被拍下合照1053
  5. 5、《我的姐姐》票房过亿,陈思诚不满意张子枫初吻桥段,迷惑发言透露情商4396
  6. 6、最强五一档,能否让上市电影公司打好Q2业绩翻身仗?|财报观察4657
  7. 7、《甄嬛传》安陵容出演刘涛新剧,陶昕然或靠“卖惨”再度翻红1022
  8. 8、女星与空气演戏,刘亦菲呆萌,赵丽颖真实,杨紫让人感同身受2357
  9. 9、白百何徐峥“华表”开奖打头阵逗趣耍宝欢乐多2958
  10. 10、《变身超人》曝“无节操”预告陈柏霖变2B超人4875
全部评论(0)
我也有话说
0
收藏
点赞
顶部