MySQL分区摘要
admin
2023-04-24 08:01:28
0

MySQL支持的分区类型为水平分区,并不支持垂直分区。

水平分区,以行为单位,划分到不同的物理文件中;垂直分区即针对列划分。

MySQL的分区,除了InnoDB支持,MyISAM也支持,所以分区并不是引擎级别的事儿。

分区并不一定会让访问变得更快,尤其是OLTP应用,OLAP应用使用分区的效果往往更好。

MySQL支持的如下几种分区类型。

  • RANGE 行数据基于一个给定连续区间的列值划分。
  • LIST 和RANGE类似,只是LIST面向的不是连续区间值,而是离散的集合。
  • HASH 根据自定义的表达式返回值进行分区,不支持负数返回。
  • KEY 根据MySQL提供的hash函数进行分区

不论按照哪种类型进行分区,如果当前表有主键或者唯一索引,分区列必须是唯一索引的组成部分。反过来,如果当前表没有定义主键也没有唯一索引,分区列可以是任何列。


分区操作示例:

create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by range(season) (
prtition s1 values less than (4),
partition s2 values less than (7),
partition s3 values less than (10),
partition s4 values less than (13));

使用函数获取range值

create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by range(year(finyear)) ( 
partition s1 values less than (2016), 
partition s2 values less than (2017), 
partition s3 values less than (2018),
partition s4 values less than (2020));
create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by range(year(finyear)*100+ month(finyear)) ( 
partition s1 values less than (201804), 
partition s2 values less than (201807), 
partition s3 values less than (201810),
partition s4 values less than (201813));

LIST分区示例

create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by LIST(id) ( 
partition s1 values in (1,3,5,7,9), 
partition s2 values in (2,4,6,8,10));

HASH分区示例

create table sales(id int, price decimal(9,2), season int, finyear datetime) engine=innodb
partition by hash(year(finyear));

KEY分区示例

create table sales(id int, price decimal(9,2), season int, finyear datetime) engine=innodb
partition by key(finyear);
分区后的数据存储结构及使用效果

以RANGE分区为例
MySQL分区摘要

插入数据

insert into sales select 1,10.05,1,'2018-01-01';
insert into sales select 2,10.05,3,'2018-03-01';
insert into sales select 3,10.05,4,'2018-04-01';

执行查询

explain partitions 
select * from sales where finyear < '2016-01-01';

MySQL分区摘要

可以看到,查询优化器,直接跳过第四个分区,在前三个分区中查询,这就是要的效果。

除了分区,还有分表、分库、分片操作,每一个都很重要,也都有各自的适用场景。

相关内容

热门资讯

伊方透露新一轮谈判先决条件 当地时间12日,伊朗方面发布消息称,一名知情人士透露了伊朗同美国新一轮谈判的五项先决条件 ——即“结...
中东危机下,莫迪将密集访问5国 【环球时报驻巴基斯坦特约记者 黄晓娜】印度外交部11日宣布,印度总理莫迪将于15日开始对阿联酋、荷兰...
“台独”顽固分子沈伯洋参选台北... 【环球时报特约记者 陈立非】台湾今年年底举行“九合一”选举,国民党很早就确定由现任台北市市长蒋万安争...
伊拉克和巴基斯坦据称已分别同伊... 总台记者当地时间5月12日获悉,伊拉克和巴基斯坦已分别同伊朗签订协议,以从海湾地区运输石油和液化天然...
京沪高铁“涨价”,调价背后有何... 昨天(11日),京沪高铁发布公告称,决定对京沪高速线、合蚌高速线动车组列车公布票价进行优化调整,时速...
第三方样品A厂家生产支架样品测... 第三方样品A厂家生产支架样品测试实验报告 一、检测范围 本次检测对象为A厂家生产的XX型医用金属...
伊朗德黑兰地区发生4.6级地震 总台记者获悉,当地时间5月12日23时47分左右,伊朗德黑兰地区发生4.6级地震。震中位于德黑兰省和...
被科威特指控“武装渗透”布比延... 新华社科威特城/德黑兰5月12日电(记者尹炣 陈霄)科威特政府12日指认,伊朗伊斯兰革命卫队多名武装...
酒吧办护士制服派对被指低俗,当... 据媒体报道,5月12日国际护士节,浙江衢州有网友发帖称,当地APK·ELITE CLUB酒吧举办所谓...
珠海冠宇获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示珠海冠宇(688772)新获得一项发明专利授权,专利名为“一种...