mysql 分区管理和对NULL的处理
来源:互联网 发布:js怎么使用正则表达式 编辑:程序博客网 时间:2024/05/21 10:25
Mysql 分区对NULL的处理
- range分区中, NULL值会被当做最小值处理
- list分区中, NULL值必须出现在分区枚举值中, 否在在插入数据是会报错
- hash和key会将NULL当做0处理
分区管理
- 添加分区
:range —> alter table talbeName add partition(partition partitionName values less than(values));
| name | CREATE TABLE `name` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY RANGE (id)SUBPARTITION BY HASH (id)SUBPARTITIONS 2(PARTITION p0 VALUES LESS THAN (3) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB) */ |mysql> alter table name add partition( partition p2 values less than(10));Query OK, 0 rows affected (0.14 sec)Records: 0 Duplicates: 0 Warnings: 0| name | CREATE TABLE `name` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY RANGE (id)SUBPARTITION BY HASH (id)SUBPARTITIONS 2(PARTITION p0 VALUES LESS THAN (3) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN (10) ENGINE = InnoDB) */ |lter table name add partition( -> partition p3 values less than(7));ERROR 1493 (HY000): VALUES LESS THAN value must be strictly increasing for each partition//不能在中间插入
:list —> alter table tableName add partiton(partition partitionName values in(v1, v2));
| listPartition | CREATE TABLE `listPartition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8/*!50100 PARTITION BY LIST (id)(PARTITION p0 VALUES IN (1,2,4) ENGINE = InnoDB, PARTITION p1 VALUES IN (3,5) ENGINE = InnoDB) */ | alter table listPartition add partition( partition p2 values in(6, 7));Query OK, 0 rows affected (0.12 sec)Records: 0 Duplicates: 0 Warnings: 0| listPartition | CREATE TABLE `listPartition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8/*!50100 PARTITION BY LIST (id)(PARTITION p0 VALUES IN (1,2,4) ENGINE = InnoDB, PARTITION p1 VALUES IN (3,5) ENGINE = InnoDB, PARTITION p2 VALUES IN (6,7) ENGINE = InnoDB) */ |
删除分区
: alter table tableName drop partition partitionName;调整分区
**:range —> alter table tableName reorganize partition partitionName into(partition pName1 values less than(v1),
partition pName2 values less than(v2));**
| name | CREATE TABLE `name` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY RANGE (id)SUBPARTITION BY HASH (id)SUBPARTITIONS 2(PARTITION p0 VALUES LESS THAN (3) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN (10) ENGINE = InnoDB) */ |alter table name reorganize partition p2 into( partition p2 values less than(7), partition p3 values less than(10));Query OK, 0 rows affected (0.22 sec)Records: 0 Duplicates: 0 Warnings: 0| name | CREATE TABLE `name` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY RANGE (id)SUBPARTITION BY HASH (id)SUBPARTITIONS 2(PARTITION p0 VALUES LESS THAN (3) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION p3 VALUES LESS THAN (10) ENGINE = InnoDB) */ |
**:list —> alter tableName reorganize partition partitionName1, partitionName2, partitionName3 into(partition p1 values in (v1, v2),
partition p2 values in(v3, v4));**
| listPartition | CREATE TABLE `listPartition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8/*!50100 PARTITION BY LIST (id)(PARTITION p0 VALUES IN (1,2,4) ENGINE = InnoDB, PARTITION p1 VALUES IN (3,5) ENGINE = InnoDB, PARTITION p2 VALUES IN (6,7) ENGINE = InnoDB) */ |alter table listPartition reorganize partition p0, p1, p2 into( partition p0 values in(1, 2), partition p1 values in(3, 4, 5, 6, 7));Query OK, 0 rows affected (0.21 sec)Records: 0 Duplicates: 0 Warnings: 0| listPartition | CREATE TABLE `listPartition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8/*!50100 PARTITION BY LIST (id)(PARTITION p0 VALUES IN (1,2) ENGINE = InnoDB, PARTITION p1 VALUES IN (3,4,5,6,7) ENGINE = InnoDB) */ |
HASH / KEY 分区管理
合并分区:alter table tableName coalesce partitions n;
注意:不用coalesce 来增加分区
可以使用alter table tableName add partition partitions n; 来增加分区, 但是这样增加的分区是原来分区数量和n的和;
| hashPartition | CREATE TABLE `hashPartition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY HASH (id)PARTITIONS 5 */ |mysql> alter table hashPartition coalesce partition 4;Query OK, 0 rows affected (0.20 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table hashPartition coalesce partition 6;ERROR 1508 (HY000): Cannot remove all partitions, use DROP TABLE instead| hashPartition | CREATE TABLE `hashPartition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY HASH (id)PARTITIONS 1 */ |mysql> alter table hashPartition add partition partitions 2;Query OK, 0 rows affected (0.16 sec)Records: 0 Duplicates: 0 Warnings: 0| hashPartition | CREATE TABLE `hashPartition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY HASH (id)PARTITIONS 3 */ | alter table hashPartition coalesce partition 2;Query OK, 0 rows affected (0.19 sec)Records: 0 Duplicates: 0 Warnings: 0//注意, coalesce 是做减法操作, 就是原来有5分区, 执行coalesce partitoin 3后只有2个分区, 并不是3个
阅读全文
0 0
- mysql 分区管理和对NULL的处理
- Mysql 分区处理NULL的得方式
- mysql 对null的处理
- MySQL查询对NULL的处理
- MySql索引中,对NULL的处理
- MySQL查询对NULL的处理
- MySQL查询对NULL的处理
- MySQL查询对NULL的处理
- MySql索引中,对NULL的处理
- MySQL查询对NULL的处理
- MySql索引中,对NULL的处理
- MySQL 分区表 partition线上修改分区字段,后续进一步学习partition (2) --> 子分区以及对录入Null值的处理情况.
- MySQL 分区表 partition线上修改分区字段,后续进一步学习partition (2) --> 子分区以及对录入Null值的处理情况.
- 兼容oracle,sqlserver,mysql数据库对null和''(空)的不同处理的解决方法
- MySQL分区的管理
- Mysql中的load语句对null的处理
- freemarker 对null 的处理
- JSON对null的处理
- error C2061: 语法错误: 标识符“WTS_ALPHATYPE”
- 时间换算
- JavaScript (09)-整体总结
- XML生成2
- CommonJS,AMD,CMD,ES6模块规范
- mysql 分区管理和对NULL的处理
- 欢迎使用CSDN-markdown编辑器
- .pynb文件的打开
- @SuppressWarnings注解用法详解
- 创建进程的两种方式
- 跨浏览器事件的添加与删除
- 计算导论与C语言基础week12期末题
- LeetCode 349. Intersection of Two Arrays
- ubuntu17.04安装搜狗输入法