MySQL LIST分区(转载)

LIST分区和RANGE分区非常的相似,主要区别在于LIST是枚举值列表的集合,RANGE是连续的区间值的集合。二者在语法方面非常的相似。同样建议LIST分区列是非null列,否则插入null值如果枚举列表里面不存在null值会插入失败,这点和其它的分区不一样,RANGE分区会将其作为最小分区值存储,HASH\KEY分为会将其转换成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';

 1.插入数据

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

往a、b两个分区中各插入一条记录

2.插入不在列表中的值

 

当往分区中插入不在枚举列表中的值是会插入失败,插入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

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));
复制代码

经过两轮的拆分,枚举列表(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';

 LIST分区也支持对非整形的时间类型字段的转换分区。

四、移除表的分区

ALTER TABLE tablename
REMOVE PARTITIONING ;

注意:使用remove移除分区是仅仅移除分区的定义,并不会删除数据和drop PARTITION不一样,后者会连同数据一起删除

 

 

参考: 

RANGE分区:http://www.cnblogs.com/chenmh/p/5627912.html

COLUMN分区:http://www.cnblogs.com/chenmh/p/5630834.html

HASH分区:http://www.cnblogs.com/chenmh/p/5644496.html

KEY分区:http://www.cnblogs.com/chenmh/p/5647210.html

子分区:http://www.cnblogs.com/chenmh/p/5649447.html

指定各分区路径:http://www.cnblogs.com/chenmh/p/5644713.html

分区索引:http://www.cnblogs.com/chenmh/p/5761995.html

分区介绍总结:http://www.cnblogs.com/chenmh/p/5623474.html

总结

 重新定义LIST分区时只能重新定义相邻的分区,不能跳过分区定义,重新定义的分区列表枚举必须包含原分区的列表枚举,如果丢失某个包含记录的枚举值那么数据也将被删除;重新定义分区不能改变分区的类型。

 

转载于:https://www.cnblogs.com/fanxiumin/p/6034194.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

啦啦

Y2错题解析 数据流程图描述信息的来龙去脉和实际流程,反映信息在系统中流动、处理和存储的情况。程序结构图用来描述程序结构,一般由构成系统的要素和表达要素间关系的连线或箭头构成。因果图是一种发现问题“根本原因”的分析方法。 Spring依赖检查的常…

emacs 入门教程,菜单汉化,配置文件等杂乱文章

首先来一发ArchWiki的Emacs简体中文的入门教程 https://wiki.archlinux.org/index.php/Emacs_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 怎样设置,Emacs中文菜单? 把包内的3个文件丢到 emacs/share/emacs/site-lisp下面。 在~/ 建一个 .emacs的…

关于element框架的el-image点击后,页面出现卡死等情况的解决方式

当el-image标签被添加时&#xff0c;页面的body就会自动添加style属性 所以我们绑定一个点击事件删除样式就可以了 <el-image style"width: 100px; height: 100px" :src"scope.row.logo" fit"scale-down" click"cancelStyle()"/&…

从源代码角度看Struts2返回JSON数据的原理

2019独角兽企业重金招聘Python工程师标准>>> 前面一篇文章其实只是介绍了如何在Struts2中返回JSON数据到客户端的具体范例而无关其原理&#xff0c;内容与标题不符惹来标题党嫌疑确实是笔者发文不够严谨&#xff0c;目前已修改标题&#xff0c;与内容匹配。本文将从…

一张图看懂encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别

From:https://www.cnblogs.com/shuiyi/p/5277233.html 一、这四个方法的用处 1、用来编码和解码URI的 统一资源标识符&#xff0c;或叫做 URI&#xff0c;是用来标识互联网上的资源&#xff08;例如&#xff0c;网页或文件&#xff09;和怎样访问这些资源的传输协议&#xf…

关于axios请求报400如何获取报错信息

不废话&#xff0c;直接放代码 addGoods(product).then(res > {if (res.code 200) {this.$message.success("添加成功");this.handleFilter();} else {this.$message.error("添加失败");}}).catch(res > {console.log(res)console.log(res.respons…

炫酷弹窗效果制作

昨天在家看电视时&#xff0c;退出的时候发现了一个弹窗效果&#xff0c;整个背景模糊&#xff0c;觉得这样的效果好炫&#xff0c;要比纯色加透明度高大上好多&#xff0c;连续试了几个界面&#xff0c;最终确定效果由css实现的&#xff0c;于是今天一大早来到公司便赶紧搜索了…

选择版本Win7系统VS2010下搭建qt开发环境

这几周一直在研究选择版本之类的问题,下午正好有机会和大家共享一下. win7下vs2010搭建qt环境总算成功了&#xff0c;在此分享一下。 最初选择了VS2012 qt-windows-opensource-5.0.2-msvc2012_64-x64-offline.exe &#xff0b; qt-vs-addin-1.2.1-opensource.exe 一路安装成功…

学习 Spring Boot:(二十九)Spring Boot Junit 单元测试

From: https://blog.wuwii.com/springboot-test.html 前言 JUnit 是一个回归测试框架&#xff0c;被开发者用于实施对应用程序的单元测试&#xff0c;加快程序编制速度&#xff0c;同时提高编码的质量。 JUnit 测试框架具有以下重要特性&#xff1a; 测试工具测试套件测试运…

如何通过Maven的Tomcat插件运行Web工程

From: https://blog.wuwii.com/maven-tomcat.html Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首选。对于一个初学者来说&…

DUMPE2FS(8)

为什么80%的码农都做不了架构师&#xff1f;>>> DUMPE2FS(8) DUMPE2FS(8) NAME dumpe2fs - dump ext2/ext3/ext4 filesystem information SYNOPSIS dumpe2fs [ -bfhixV ] [ -o superblocksuperblock ] [ -o blocksizeblock- size ] …

Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题...

现互联网公司后端架构常用到SpringSpringMVCMyBatis&#xff0c;通过Maven来构建。通过学习&#xff0c;我已经掌握了基本的搭建过程&#xff0c;写下基础文章为而后的深入学习奠定基础。 首先说一下这篇文章的主要内容分为&#xff1a; 1、Maven多模块项目的创建&#xff1b; …

基于struts2,hibernate的小javaweb项目

19:47:49 这是截图 闲话不说 就开始了 web-xml&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <web-app version"2.5" xmlns"http://java.sun.com/xml/ns/javaee"xmlns:xsi"http://www.w3.org/2001/XMLSchema-in…

MySql的用户权限

用户管理 MySQL数据库中的表与其他任何关系表没有区别&#xff0c;都可以通过典型的SQL命令修改其结构和数据。可以使用GRANT和REVOKE命令。通过这些命令&#xff0c;可以创建和禁用用户&#xff0c;可以在线授予和撤回用户访问权限。在5.0版本中增加了两个新命令&#xff1a;C…

.yaml 文件格式简介

From: https://www.cnblogs.com/wxmdevelop/p/7341292.html YAML 的意思其实是&#xff1a;"Yet Another Markup Language"&#xff08;仍是一种置标语言&#xff09;的缩写。 功能 YAML的语法和其他高阶语言类似&#xff0c;并且可以简单表达清单、散列表&#x…

SnakeYaml快速入门

From: https://www.jianshu.com/p/d8136c913e52 在YAML快速入门[https://www.jianshu.com/p/97222440cd08]中&#xff0c;我们已经简单介绍了YAML的语法&#xff0c;本节中主要介绍YAML的配置读取。 目前有很多可以生成和解析YAML的第三方工具&#xff0c;常见的&#xff0c;…

有源代码的iphone项目

2019独角兽企业重金招聘Python工程师标准>>> http://blog.joomla.org.tw/iphone-ipad/104-iphone.html 學習和利用現成的資源是很重要的&#xff0c;以下列出有原始碼可下載的iPhone/iPod程式&#xff0c;這邊收集的是以已經放到App Store上的程式為主&#xff0c;…

Content Security Policy 入门教程

From: http://www.ruanyifeng.com/blog/2016/09/csp.html 跨域脚本攻击 XSS 是最常见、危害最大的网页安全漏洞。 为了防止它们&#xff0c;要采取很多编程措施&#xff0c;非常麻烦。很多人提出&#xff0c;能不能根本上解决问题&#xff0c;浏览器自动禁止外部注入恶意脚本&…

springboot跨域配置

From: https://www.cnblogs.com/nananana/p/8492185.html 前言&#xff1a; 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时&#xff0c;一个资源会发起一个跨域HTTP请求(Cross-site HTTP request)。 比如说&#xff0c;域名A ( http://domaina.example …

l2正则化

在机器学习中&#xff0c;无论是分类还是回归&#xff0c;都可能存在由于特征过多而导致的过拟合问题。当然解决的办法有 &#xff08;1&#xff09;减少特征&#xff0c;留取最重要的特征。 &#xff08;2&#xff09;惩罚不重要的特征的权重。 但是通常情况下&#xff0c;我们…