- DATA DIRECTORY表示数据的物理文件的存放目录
- INDEX DIRECTORY表示索引的物理文件的存放目录
所有这些操作都可以通过使用ALTER TABLE命令的分区扩展来实现 。
新增分区为已创建的未分区表创建分区:
- RANGE:ALTER TABLE tb PARTITION BY RANGE (expr) ( range_partitions_exprs(n>0) );
- LIST:ALTER TABLE tb PARTITION BY LIST (expr) ( list_partitions_exprs(n>0) );
- HASH:ALTER TABLE tb PARTITION BY HASH(expr) PARTITIONS 2;
- KEY:ALTER TABLE tb PARTITION BY KEY(expr) PARTITIONS 2;
- RANGE:ALTER TABLE tb ADD PARTITION ( range_partitions_exprs(n>0) );
- LIST:ALTER TABLE tb ADD PARTITION ( list_partitions_exprs(n>0) );
- HASH & KEY:ALTER TABLE tb ADD PARTITION PARTITIONS n;
数据不丢失的前提下 , 将m个分区合并为n个分区(m>n) , 即减量重新组织分区
- RANGE:ALTER TABLE tb REORGANIZE PARTITION s0,s1,... INTO ( range_partitions_exprs(n) )
- LIST:ALTER TABLE tb REORGANIZE PARTITION s0,s1,... INTO ( list_partitions_exprs(n) )
- HASH & KEY:ALTER TABLE clients COALESCE PARTITION n; (n小于原有分区数)
- RANGE:ALTER TABLE tb REORGANIZE PARTITION p0,p1,... INTO ( range_partitions_exprs(n) )
- LIST:ALTER TABLE tb REORGANIZE PARTITION p0,p1,... INTO ( list_partitions_exprs(n) )
重建分区 , 即先删除分区中的所有记录 , 然后重新插入 。可用于整理分区碎片 。
- ALTER TABLE tb REBUILD PARTITION p0, p1;
- ALTER TABLE tb OPTIMIZE PARTITION p0, p1;
如从分区中删除了大量的行 , 或者对一个带有可变长度字段(VARCHAR、BLOB、TEXT类型)的行作了许多修改 , 可以使用优化分区来收回没有使用的空间 , 并整理分区数据文件的碎片 。修复分区 , 修补被破坏的分区 。
- ALTER TABLE tb REPAIR PARTITION p0,p1;
- ALTER TABLE tb CHECK PARTITION p1;
- ALTER TABLE tb DROP PARTITION p2;
- ALTER TABLE tb TRUNCATE PARTITION p2;
- SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA = 'xxx' AND TABLE_NAME LIKE 'xxxx';
- ALTER TABLE tb ANALYZE PARTITION p3;
超大表会带来如下的影响:
- 单表数据量太大 , 会被频繁读写 , 加锁操作密集 , 导致性能降低 。
- 单表数据量太大 , 对应的索引也会很大 , 查询效率降低 , 增删操作的性能也会降低 。
在MySQL 5.1分区功能出现以前 , 要想解决超大表问题 , 只能采用分表操作 , 因为这类问题十分常见 , MySQL才自带了一个分区功能 , 以达到相同的效果 。
所以你可以直接说分区就是分表的替代 , 分表是分区出现以前的做法 。不过这不代表我们就没有必要学习分表了 , 相反 , 水平分表的功能或许可以用更加便捷的分区来替代 , 但是垂直分表的功能 , 分区却无法替代 。
推荐阅读
- Brython:浏览器中的Python
- 知乎|跟进微博、抖音!知乎宣布全面上线显示用户IP属地
- MySQL的监控原理
- Java开发中的POJO、Dto、PO、Vo傻傻分不清楚?一文看懂
- SQL注入笔记记录+MySQL的事务隔离级别
- 荣耀|荣耀畅玩30入网:2.2GHz 5G芯片、4900mAh大电池
- 一些小故事大道理?小故事大、道理
- 打跑得快技巧十句口诀是什么?
- 读 MySQL 源码再看 INSERT 加锁流程
- MySQL 大批量插入,如何过滤掉重复数据?