分区表是根据一定规则,将数据库中的一张表分解成多个更小的容易管理的部分,
从逻辑上看,只有一张表,但底层却是由多个物理分区组成。
分区表包括普通分区表和子分区表。
目前常用的分区方法有如下:
RANGE 分区:一个连续范围
LIST 分区:一个个的单独指定的值,可以不连续
KEY 分区:支持各种数据类型,比如字符串,的hash分类方式
HASH 分区:针对数字的的hash
在分区的管理上目前支持创建分区、添加分区、删除分区。
RANGE 分区表和 LIST 分区表支持子分区,子分区的分区类型可以为[LINEAR]
HASH 和[LINEAR] KEY。
information_schema.partitions 中可以查到所创建的分区表信息。
分区表支持分区列类型
数值型:INT,BIGINT,SMALLINT,FLOAT。
时间类型(作为分区函数的输入值使用):DATE,DATETIME,TIME。
分区注意事项
包括子分区在内所有分区总和个数不大于 8192;
创建分区表过程中,磁盘空间不足,报错;
创建分区表过程中,分区名字有重复,报错;
创建分区表过程中,分区名字不符合命名规范,报错,分区表命名规范与普通表一致;
不支持每个分区指定不同的 tablespace;
创建分区表时未指定分区名,分区名默认为 p0,p1…;
分区列不支持 update 操作;
每个分区的子分区个数必须相同;
只有 range 分区与 list 分区可以创建子分区。
创建分区语法
partition_options:
PARTITION BY RANGE(expr)
(partition_definition [, partition_definition] ...)
[SUBPARTITION BY]
{ [LINEAR] HASH(expr)
| [LINEAR] KEY(column_list) }
[SUBPARTITIONS num]
partition_definition:
PARTITION partition_name
VALUES LESS THAN {(expr) | MAXVALUE}
[(subpartition_definition [, subpartition_definition] ...)]
subpartition_definition:
SUBPARTITION logical_name
注意:
expr 是某列值或一个基于某个列值、并返回一个整数值的表达式
各分区的 expr 列表的值必须递增
批量建立子分区,SUBPARTITIONS num ,对于key和hash的子分区批量建立,不指定名字
支持分区中使用的函数
abs(), ceiling(), ceil(), datediff(), day(), dayofmonth(), dayofweek(), dayofyear(), floor(), hour(), microsecond(), minute(), mod(), month(), quarter(), second(), time_to_sec(), to_days(), to_seconds(), weekday(), year(), yearweek(), +, -, *, /, div, %, extract(), from_days()
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




