xml地图|网站地图|网站标签 [设为首页] [加入收藏]
当前位置: www8029com > 澳门新葡8522最新网站 > 正文

【澳门新葡8522最新网站】MySQL LIST分区

时间:2019-10-23 23:04来源:澳门新葡8522最新网站
介绍 LIST分区和RANGE分区非常的相通,重要差距在于LIST是枚举值列表的相会,RANGE是三翻五次的区间值的汇集。二者在语法方面特别的经常。相仿提出LIST分区列是非null列,不然插入nul

介绍

LIST分区和RANGE分区非常的相通,重要差距在于LIST是枚举值列表的相会,RANGE是三翻五次的区间值的汇集。二者在语法方面特别的经常。相仿提出LIST分区列是非null列,不然插入null值假若枚举列表里面官样文章null值会插入战败,这一点和别的的分区区别等,RANGE分区会将其用作最小分区值存款和储蓄,HASHKEY分为会将其转移成0存款和储蓄,重要LIST分区只匡助整形,非整形字段必要通过函数转换到整形;5.5版本之后方可无需函数调换使用LIST COLUMN分区扶植非整形字段,在COLUMN分区中有详尽的上书。

 

少年老成、创设分区

List各种分区枚举的值只必要不均等就可以,未有固定的依次。

CREATE TABLE tblist (
    id INT NOT NULL,
    store_id INT
)
PARTITION BY LIST(store_id) (
    PARTITION a VALUES IN (1,5,6),
    PARTITION b VALUES IN (2,7,8),
    PARTITION c VALUES IN (3,9,10),
    PARTITION d VALUES IN (4,11,12)
);

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='tblist';

澳门新葡8522最新网站 1

 1.插入数据

insert into tblist(id,store_id) values(1,1),(7,7); 

往a、b三个分区中各插入一条记下

澳门新葡8522最新网站 2

2.插入不在列表中的值

澳门新葡8522最新网站 3 

当往分区中插入不在枚举列表中的值是会插入退步,插入null值借使null值不在枚举列表中也生龙活虎致失利

二、分区管制

1.日增分区

ALTER TABLE tblist ADD PARTITION (PARTITION e VALUES IN (20));

小心:不可能充实富含现存大肆值的分区。

2.集合分区

ALTER TABLE tblist REORGANIZE PARTITION  a,b INTO (PARTITION m VALUES IN (1,5,6,2,7,8));

将分区a,b合併为分区m

留意:同RANGE分区相符,只可以合併相邻的多少个分区,无法跨分区合併。比方无法合併a,c四个分区,只好通过合併a,b,c

澳门新葡8522最新网站 4

3.拆分分区

ALTER TABLE tblist REORGANIZE PARTITION  a,b,c INTO 
(PARTITION n VALUES IN (1,5,6,3,9,10),
PARTITION m VALUES IN (2,7,8));

ALTER TABLE tblist REORGANIZE PARTITION  n INTO 
    ( PARTITION a VALUES IN (1,5,6),
    PARTITION b VALUES IN (3,9,10));

澳门新葡8522最新网站 5

通过两轮的拆分,枚举列表(3,9,10)排到了(2,7,8)的前头去了;其实是如此的,少年老成最早联合abc成nm多个分区由于n中的枚举值小于m所以n在m的先头,前面再拆分n分区由于n分区在m分区的眼下所以拆分出去的分区也是排在m分区的前边,由于a分区的值紧跟于b分区的值所以a排在b的后面。

留意:1.在5.7.12版本中测验开掘,合併和拆分分区重新定义的枚举值能够不是原先的值,尽管原本的枚举值包涵了多少而新合并或拆分的分区枚举值又不不带有原本的枚举值会促成数据遗失。即使不知底为啥mysql不会禁绝该作为,然而人为的渴求无论是合并也许拆分分区枚举值保持不改变,或许只好扩展不能收缩,那样能保障数据不丢掉。

2.联结和拆分后的分区由于是周边的分区举办统大器晚成和拆分会遵照原来的分区的值新的分区也会在原本的分区的顺序地点。

4.剔除分区

ALTER TABLE tblist DROP PARTITION e;

只顾:删除分区同有时间会将分区中的数据删除,同时枚举的list值也被删除,后边不可能往表中插入该值的数目。

三、其它分区

1.对时间字段举行分区

CREATE TABLE listdate (
    id INT NOT NULL,
    hired DATETIME NOT NULL
)
PARTITION BY LIST( YEAR(hired) ) 
(
    PARTITION a VALUES IN (1990),
    PARTITION b VALUES IN (1991),
    PARTITION c VALUES IN (1992),
    PARTITION d VALUES IN (1993)
);

ALTER TABLE listdate ADD INDEX ix_hired(hired);

INSERT INTO listdate() VALUES(1,'1990-01-01 10:00:00'),(1,'1991-01-01 10:00:00'),(1,'1992-01-01 10:00:00');

EXPLAIN SELECT * FROM listdate WHERE hired='1990-01-01 10:00:00';

澳门新葡8522最新网站 6

 LIST分区也扶持对非整形的年华等级次序字段的转变分区。

四、移除表的分区

ALTER TABLE tablename
REMOVE PARTITIONING ;

专一:使用remove移除分区是单纯移除分区的概念,并不会去除数据和drop PARTITION不均等,前面一个会连同数据一齐删除

 

 

参考: 

RANGE分区:

COLUMN分区:

HASH分区:

KEY分区:

子分区:

点名各分区路线:

分区索引:

分区介绍总计:

总结

 重新定义LIST分区时一定要重新定义相邻的分区,无法跳过分区定义,重新定义的分区列表枚举必需带有原分区的列表枚举,如若遗失有些包括记录的枚举值那么数量也将被去除;重新定义分区无法退换分区的门类。

 

 

 

备注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

编辑:澳门新葡8522最新网站 本文来源:【澳门新葡8522最新网站】MySQL LIST分区

关键词: www8029com