mysql 分区表中分区键NULL值处理
标签:
分区表 |
分类: mysql |
NULL值不是一个数值!从5.1.8开始,分区的实现中对null值的处理和order
by的处理一样是把null值看成比任何非null值都要小的存在。
不同的分区类型对null的处理也是不一样的(测试环境DB:qw_test)
1、RANGE分区:
A、创建两个分区表,注意其最小分区的值
http://s6/middle/4d398f21ga9a9563ed2d5&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
B、通过information_schema查看分区表中各分区信息
http://s5/middle/4d398f21ga9a956eb5f64&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
C、往两个分区表各写入一条分区键键值为null的记录
http://s9/middle/4d398f21ga9a9576bf968&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
D、通过information_schema查看分区表中各分区信息
http://s9/middle/4d398f21ga9a957f84358&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
(记录都写在当前最小的分区中)
E、通过删除最小分区后查询全表记录查看
http://s3/middle/4d398f21ga9a958be3f72&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
结论:range分区中分区键写入null值,则记录会被写入当前最小的分区;在分区清理的过程中可能会将这部分数据误处理,建议在指定分区键的时候字段属性设置not null来约束!
2、LIST分区:
A、创建一个list分区表,注意几个分区中list列表
http://s13/middle/4d398f21ga9a959d14c7c&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
B、写入不在list中非null值记录、null值记录
http://s12/middle/4d398f21ga9a95a89519b&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
(均提示无指定分区存储记录)
C、创建两个分别含有null值的list分区表
http://s9/middle/4d398f21ga9a96032fe48&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
D、分别向两个list分区表中写入一条分区键值为null的记录
http://s8/middle/4d398f21ga9a96174c8d7&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
E、通过information_schema查看分区表中各分区信息
http://s4/middle/4d398f21ga9a9623c30a3&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
F、同样也可以通过删除相应分区后查询全表记录查看
http://s3/middle/4d398f21ga9a9636b4072&690 分区表中分区键NULL值处理" TITLE="mysql 分区表中分区键NULL值处理" />
结论:list分区中null值必须和其他值一样明确list指定才会被写入
3、HASH和KEY分区
在这两种分区中null值被等值于0进行处理,有兴趣的同学可以自己验证下。
参考官方文档:http://dev.mysql.com/doc/refman/5.1/en/partitioning-handling-nulls.html
不同的分区类型对null的处理也是不一样的(测试环境DB:qw_test)
1、RANGE分区:
A、创建两个分区表,注意其最小分区的值
C、往两个分区表各写入一条分区键键值为null的记录
E、通过删除最小分区后查询全表记录查看
结论:range分区中分区键写入null值,则记录会被写入当前最小的分区;在分区清理的过程中可能会将这部分数据误处理,建议在指定分区键的时候字段属性设置not null来约束!
2、LIST分区:
A、创建一个list分区表,注意几个分区中list列表
B、写入不在list中非null值记录、null值记录
C、创建两个分别含有null值的list分区表
D、分别向两个list分区表中写入一条分区键值为null的记录
E、通过information_schema查看分区表中各分区信息
F、同样也可以通过删除相应分区后查询全表记录查看
结论:list分区中null值必须和其他值一样明确list指定才会被写入
3、HASH和KEY分区
在这两种分区中null值被等值于0进行处理,有兴趣的同学可以自己验证下。
参考官方文档:http://dev.mysql.com/doc/refman/5.1/en/partitioning-handling-nulls.html

加载中…