Range分区的特点: 根据分区键值保存到不同表中 多个分区要连续,不能重叠 要完全封口则需要使用MAXVALUE CREATE
Range分区的特点:
CREATE TABLE `user_login_log` (
`user_id` int(10) unsigned NOT NULL COMMENT "登录⽤用户ID",
`login_time` datetime NOT NULL COMMENT "⽤用户登录时间",
`login_ip` int(10) unsigned NOT NULL COMMENT "登录IP",
`login_type` tinyint(4) NOT NULL COMMENT "登录类型:0未成功 1成功") ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITioN BY RANGE(YEAR(login_time))(
PARTITION p0 VALUES LESS THAN (2017),
PARTITION p1 VALUES LESS THAN (2018),
PARTITION p2 VALUES LESS THAN (2019),
PARTITION p3 VALUES LESS THAN (2020),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
应⽤场景
CREATE TABLE `user_login_log` (
`user_id` int(10) unsigned NOT NULL COMMENT "登录⽤用户ID",
`login_time` datetime NOT NULL COMMENT "⽤用户登录时间",
`login_ip` int(10) unsigned NOT NULL COMMENT "登录IP",
`login_type` tinyint(4) NOT NULL COMMENT "登录类型:0未成功 1成功") ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY RANGE(YEAR(login_time))(
PARTITION p0 VALUES LESS THAN (2017),
PARTITION p1 VALUES LESS THAN (2018),
PARTITION p2 VALUES LESS THAN (2019),
PARTITION p3 VALUES LESS THAN (2020),
PARTITION p3 VALUES LESS THAN (2020)
);
不实用封口的好处是,需要增加分区时执行:
ALTER TABLE user_login_log ADD PARTITION(PARTITION p4 VALUES LESS
THAN(2021))
⽇志数据进⾏备份的时候,在Mysql v5.7版本后加⼊了一个分区交换的概念
#归档表
CREATE TABLE `arch_user_login_log_2016` (
`user_id` int(10) unsigned NOT NULL COMMENT "登录⽤用户ID", `login_time` datetime NOT NULL COMMENT "⽤用户登录时间", `login_ip` int(10) unsigned NOT NULL COMMENT "登录IP", `login_type` tinyint(4) NOT NULL COMMENT "登录类型:0未成功 1成功"
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE user_login_log exchange PARTITION p0 WITH TABLE
arch_user_login_log_2016;
ALTER TABLE arch_user_login_log_2016 ENGINE=ARCHIVE;
再删除分区文件
ALTER TABLE user_login_log DROP PARTITION p0;
如果一个表不是分区表并已经有数据了,还可以变成分区表
ALTER TABLE user_login_log PARTITION BY RANGE(YEAR(login_time))(
PARTITION p0 VALUES LESS THAN (2017),
PARTITION p1 VALUES LESS THAN (2018),
PARTITION p2 VALUES LESS THAN (2019),
PARTITION p3 VALUES LESS THAN (2020)
);
变成分区表后, 会重排数据,并且数据量大的情况下I/O消耗很⼤,这种数据量⼤的表,要按照修改表结构的方式来进行分区表操作
分区表最⼤大有多少个:1024,分区表的限制和注意事项:
分区表的最佳实践
--结束END--
本文标题: MySQL分区表Range方式
本文链接: https://www.lsjlt.com/news/6414.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-14
2024-05-14
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0