(4) 每个SUBPARTITION子句必须包含(至少)子分区的一个名字 。
(5) 在每个子分区内,子分区的名字必须是惟一的 , 目前在整个表中,也要保持唯一 。例如:
PARTITION BY RANGE(YEAR(registerTime))
SUBPARTITION BY HASH(TO_DAYS(registerTime))
(
PARTITION p0 VALUES LESS THAN (2017) (
SUBPARTITION s0,
SUBPARTITION s1
),
PARTITION p1 VALUES LESS THAN (2020) (
SUBPARTITION s2,
SUBPARTITION s3
),
PARTITION p2 VALUES LESS THAN MAXVALUE (
SUBPARTITION s4,
SUBPARTITION s5
)
)
子分区可以用于特别大的表 , 可以在多个磁盘间分配数据和索引 。例如:
SUBPARTITION s0
DATA DIRECTORY = '/disk0/data'
INDEX DIRECTORY = '/disk0/idx'
,
,
SUBPARTITION s1
DATA DIRECTORY = '/disk1/data'
INDEX DIRECTORY = '/disk1/idx'
九、MySQL分区处理NULL值的方式
MySQL中的分区禁止空值NULL上没有进行处理,无论它是一个列值还是一个用户定义表达式的值 , 一般而言,在这种情况下MySQL把NULL视为0 。如果你希望回避这种做法,你应该在设计表时声明列“NOT NULL” 。
十、分区管理概述
【mysql分区后怎么查询 mysql分区可以提高查询速度么】 可以对分区进行添加、删除、重新定义、合并或拆分等管理操作 。
① RANGE和LIST分区的管理
1. 删除分区语句如:alter table tbl_test drop partition p0;
注意:
(1) 当删除了一个分区 , 也同时删除了该分区中所有的数据 。
(2) 可以通过show create table tbl_test;来查看新的创建表的语句 。
(3) 如果是LIST分区的话,删除的数据不能新增进来,因为这些行的列值包含在已经删除了的分区的值列表中 。
2. 添加分区语句如:alter table tbl_test add partition(partition p3 values less than(50));
注意:
(1) 对于RANGE分区的表,只可以添加新的分区到分区列表的最高端 。
(2) 对于LIST分区的表,不能添加已经包含在现有分区值列表中的任意值 。
3. 如果希望能不丢失数据的条件下重新定义分区,可以使用如下语句:
ALTER TABLE tbl_name REORGANIZE PARTITION partition_list INTO(partition_definitions)
(1) 拆分分区如:
ALTER TABLE tbl_name REORGANIZE PARTITION partition_list INTO(partition s0 values less than(5),partition s1 values less than(10));
或者如:
ALTER TABLE tbl_name REORGANIZE PARTITION p0 INTO(partition s0 values in(1,2,3), partition s1 values in(4,5));
(2) 合并分区如:ALTER TABLE tbl_name REORGANIZE PARTITION s0,s1 INTO(partition p0 values in(1,2,3,4,5));
4. 删除所有分区,但保留数据,形式:ALTER TABLE tbl_name remove partitioning;
② HASH和KEY分区的管理
1. 减少分区数量语句如:ALTER TABLE tbl_name COALESCE PARTITION 2;
2. 添加分区数量语句如:ALTER TABLE tbl_name add PARTITION partitions 2;
③ 其他分区管理语句
1. 重建分区 :类似于先删除保存在分区中的所有记录,然后重新插入它们,可用于整理分区碎片 。如:ALTER table tbl_name REBUILD PARTITION p2,p3;
2. 优化分区 :如果从分区中删除了大量的行,或者对一个带有可变长度的行(也就是说,有VARCHAR , BLOB或TEXT类型的列)做了许多修改,可以使用 ALTER TABLE tbl_name OPTIMIZE PARTITION来收回没有使用的空间 , 并整理分区数据文件的碎片 。如:ALTER TABLE tbl_name OPTIMIZE PARTITION p2,p3;
3. 分析分区 :读取并保存分区的键分布 , 如:ALTER TABLE tbl_name ANALYZE PARTITION p2,p3;
4. 检查分区 :检查分区中的数据或索引是否已经被破坏,如:ALTER TABLE tbl_name CHECK PARTITION p2,p3;
推荐阅读
- python爬虫新增mysql,python增量爬虫
- 大侠驿馆经营游戏,大侠网络科技有限公司
- 直播间见面技巧,第一次直播怎么和别人打招呼
- 直接看go语言实战 go语言自学
- JAVA分层窗口代码,java分层架构设计
- 电脑启动蓝屏怎么找回硬盘,电脑蓝屏怎么一键恢复,发现不了硬盘
- 虎牙直播怎么购买粉,虎牙如何买粉丝
- linux限制用户命令 linux限制用户cpu使用率
- 电脑密码用u盘怎么重置密码,电脑重置密码的u盘