<>key分区

按照key进行分区非常类似于按照hash进行分区,只不过hash分区允许使用用户自定义的表达式

与hash分区不用的是,key分区不允许使用用于自定义的表达式,需要使用mysql服务器提供的hash函数,不需要hash分区那样对字段整型进行转换,

同时hash分区只支持整数分区,而key分区支持使用出blob or text类型外的其他类型的列作为分区键。

和hash功能一样,不同的是分区的字段可以是非int类型,如字符串、日期等类型。

语法:
create table <table> ( // 字段 ) ENGINE=数据库引擎 DEFAULT CHARSET=utf8
AUTO_INCREMENT=1 #方法1: partition by key(expr) partitions num;
#方法2(不指定默认首选主键作为分区键,在没有主键的情况下会选择非空唯一键作为分区键): partition by key() partitions num;
#方法3(支持线性分区linear key): partition by linear key(expr) expr:是零个或者多个字段名的列表
num:表示分区数量 key分区也支持线性分区linear key
demo1:
该表有40家超市职员记录,假定你需要将超市员工按入职时期进行分别存储,
#方法1 CREATE TABLE `employees_key_create_time` ( `id` int(11) unsigned NOT NULL
AUTO_INCREMENT, `ename` varchar(30) NOT NULL DEFAULT '' COMMENT '员工名称', `ecode`
varchar(30) NOT NULL DEFAULT '' COMMENT '员工编号', `store_id` int(11) unsigned NOT
NULL DEFAULT '0' COMMENT '所属门店', `create_time` datetime(6) NOT NULL COMMENT
'添加时间', PRIMARY KEY (`id`,`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
COMMENT='员工表' partition by key(create_time) partitions 5;
分区文件(截图):

demo2:
该表有40家超市职员记录,假定你需要将超市员工按唯一主键进行分别存储,
#方法2: CREATE TABLE `employees_key_id` ( `id` int(11) unsigned NOT NULL
AUTO_INCREMENT, `ename` varchar(30) NOT NULL DEFAULT '' COMMENT '员工名称', `ecode`
varchar(30) NOT NULL DEFAULT '' COMMENT '员工编号', `store_id` int(11) unsigned NOT
NULL DEFAULT '0' COMMENT '所属门店', `create_time` datetime(6) NOT NULL COMMENT
'添加时间', PRIMARY KEY (`id`,`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
COMMENT='员工表' partition by key() partitions 5;
分区文件(截图):

demo3:
该表有40家超市职员记录,假定你需要将超市员工按唯一主键(线性分区)进行分别存储,
#方法3: CREATE TABLE `employees_key_linear` ( `id` int(11) unsigned NOT NULL
AUTO_INCREMENT, `ename` varchar(30) NOT NULL DEFAULT '' COMMENT '员工名称', `ecode`
varchar(30) NOT NULL DEFAULT '' COMMENT '员工编号', `store_id` int(11) unsigned NOT
NULL DEFAULT '0' COMMENT '所属门店', `create_time` datetime(6) NOT NULL COMMENT
'添加时间', PRIMARY KEY (`id`,`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
COMMENT='员工表' partition by linear key (id)
分区文件(截图):

【注意:key分区只能重置分区不能删除或添加分区】

1.重置分区
alter table employees_key_create_time add partition partitions 6; alter table
employees_key_id add partition partitions 6; alter table employees_key_linear
add partition partitions 4;
2.移除表的分区
alter table employees_key_create_time remove partitioning;

技术
©2019-2020 Toolsou All rights reserved,
vue项目中使用本地静态JS数据文件利用克鲁斯卡尔算法求最小生成树C++ 移动构造函数和拷贝构造函数华为鸿蒙 HarmonyOS 2 正式发布VS添加动态链接库的两种方法python_樱花树Jmeter配置元件之HTTP授权管理器与 HTTP缓存管理器-19vue+element-ui里面table组件多选框实现批量操作RISC-V指令集架构特点及其总结js实现上下文菜单