2. 添加分区语句如:alter table tbl_test add partition(partition p3 values less than(50));
注意:
(1) 对于RANGE分区的表,只可以添加新的分区到分区列表的最高端 。
(2) 对于LIST分区的表,不能添加已经包含在现有分区值列表中的任意值 。
3. 如果希望能不丢失数据的条件下重新定义分区 , 可以使用如下语句:
REORGANIZE会对分区的数据进行重构 。
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;
5. 修补分区:修补被破坏的分区 , 如:ALTER TABLE tbl_name REPAIR PARTITION p2,p3;
十、查看分区信息
1. 查看分区信息:select * from information_schema.partitions where table_schema='arch1' and table_name = 'tbl_test' G;
2. 查看分区上的数据:select * from tbl_test partition(p0);
3. 查看MySQL会操作的分区:explain partitions select * from tbl_test where uuid = 2;
十一、 局限性
1. 最大分区数目不能超过1024,一般建议对单表的分区数不要超过50个 。
2. 如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内 。
3. 不支持外键 。
4. 不支持全文索引,对分区表的分区键创建索引,那么这个索引也将被分区 。
5. 按日期进行分区很合适 , 因为很多日期函数可以用 。但是对字符串来说合适的分区函数不太多 。
6. 只有RANGE和LIST分区能进行子分区,HASH和KEY分区不能进行子分区 。
7. 临时表不能被分区 。
8. 分区表对于单条记录的查询没有优势 。
9. 要注意选择分区的成本,没插入一行数据都需要按照表达式筛选插入的分区 。
10. 分区字段尽量不要可以为null
Mysql表分区状态查询一、查询mysql表是否为分区表:可以查看表具有哪几个分区、分区的方法、分区中数据的记录数等信息
SELECT PARTITION_NAME,PARTITION_METHOD,PARTITION_EXPRESSION,PARTITION_DESCRIPTION,TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD,SUBPARTITION_EXPRESSION
FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='xw_coobill_order';
二、查询表有多少个分区
SELECT TABLE_NAME, COUNT(*) AS CNT
推荐阅读
- 过关小游戏经营,过关小游戏经营类游戏
- 游戏怎么用显卡截图快捷键,怎么用显卡玩游戏
- 微信公众号直播怎么做的,微信公众号直播怎么弄
- 包含python内建函数使用的词条
- 即时战略游戏情侣网名,好玩的即时战略类游戏
- 字符串的截取方式js,截取字符串的函数js
- php源码自带数据库 php+mysql源码
- word文件怎么用微信发,word文件怎么用微信发送
- ios怎么变为ghost,iso改成gho