MySQL分区表的管理~1
一、如何管理RANGE和LIST分区
以该分区表为例
CREATE TABLE members (
id INT,
fname VARCHAR(25),
lname VARCHAR(25),
dob DATE
)
PARTITION BY RANGE( YEAR(dob) ) (
PARTITION p0 VALUES LESS THAN (1970),
PARTITION p1 VALUES LESS THAN (1980),
PARTITION p2 VALUES LESS THAN (1990)
);
1. 删除分区
ALTER TABLE members DROP PARTITION p1;
注意:如果删掉了某分区,则该分区内的数据将全部丢失,不仅如此,在用show create table members\G;命令查看该表的创建语句时将无法看到被删除分区的任何信息。
对于RANGE分区来说,如果删除了p1分区,在插入数据时,如果日期在1970到1980区间之内,则该数据将会被分配到下一个分区,即p2,。
对于LIST分区,如果删除了某一分区,在插入数据时,如果数据属于这一分区,则插入会报错。
如果只是删除数据而不删除该分区的信息,可使用truncate命令
ALTER TABLE members TRUNCATE PARTITION p1;
2. 添加分区
ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
注意:使用ADD命令来添加分区,只能在分区列表的末尾添加,具体到本例中,只能添加到1990年以后。
当然,在实际生产环境中,这样的局限性太大,譬如我想将p0分区之前添加一个分区,区间为1960,或者将p1之间再添加一个1975的分区,这时候,用ADD将无法满足此类需求,可使用ALTER TABLE ... REORGANIZE PARTITION命令。
譬如:
ALTER TABLE members REORGANIZE PARTITION p0 INTO (
PARTITION s0 VALUES LESS THAN (1960),
PARTITION s1 VALUES LESS THAN (1970)
);
REORGANIZE命令其实是相当灵活的,不仅能拆分分区,还可以用来合并分区,譬如:
ALTER TABLE members REORGANIZE PARTITION p0,p1,p2,p3 INTO (
PARTITION m0 VALUES LESS THAN (1980),
PARTITION m1 VALUES LESS THAN (2000)
);
注意:
1> 不能使用REORGANIZE PARTITION命令修改表的分区类型,只能通过ALTER TABLE ... PARTITION BY ....语句,譬如:
ALTER TABLE members
PARTITION BY HASH( YEAR(dob) )
PARTITIONS 8;
2> REORGANIZE PARTITION语法如下:
ALTER TABLE tbl_name
REORGANIZE PARTITION partition_list
INTO (partition_definitions);
partition_definitions中分区的范围必须要涵盖partition_list中的分区范围。
二、如何管理HASH和KEY分区
以该分区表为例
CREATE TABLE clients (
id INT,
fname VARCHAR(30),
lname VARCHAR(30),
signed DATE
)
PARTITION BY HASH( MONTH(signed) )
PARTITIONS 12;
对于HASH分区和KEY分区,并不支持上述RANGE和LIST分区的语法,譬如DROP,TRUNCATE,REORGANIZE分区。
事实上,它只支持一种类型的“分区调整”。
ALTER TABLE clients COALESCE PARTITION 4;
该命令的作用在于将clients表的分区剪裁4个,从12个剪裁到8个。
ALTER TABLE clients ADD PARTITION PARTITIONS 6;
同样,该命令为clients表增加了6个分区,从12个到18个。
MySQL分区表的管理~1的更多相关文章
- Mysql --分区表的管理与维护
改变一个表的分区方案只需使用alter table 加 partition_options 子句就可以了.和创建分区表时的create table语句很像 创建表 CREATE TABLE trb3 ...
- 数据切分——Mysql分区表的管理与维护
关于Mysql分区表的介绍可以参考: http://blog.csdn.net/jhq0113/article/details/44592865 关于Mysql分区表的创建可以参考: http://b ...
- MySQL分区表的管理~2
一.维护分区 对于表的维护,我们一般有如下几种方式: CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE和REPAIR TABLE. 而这几种方式,对于分区同样适用. ...
- MySQL 分区表
转载自MySQL 分区表 今天统计数据的时候发现一张表使用了表分区,借此机会记录一下. 1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分.从逻辑上看, ...
- MySQL 分区表原理及数据备份转移实战
MySQL 分区表原理及数据备份转移实战 1.分区表含义 分区表定义指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现 ...
- MYSQL分区表功能测试简析
1.查看Mysql版本是否支持分区 SHOW VARIABLES LIKE '%partition%'; +-------------------+-------+ | Variable_nam ...
- 详解MySQL分区表
当数据库数据量涨到一定数量时,性能就成为我们不能不关注的问题,如何优化呢? 常用的方式不外乎那么几种: 1.分表,即把一个很大的表达数据分到几个表中,这样每个表数据都不多. 优点:提高并发量,减小锁的 ...
- 第二章--MYSQL体系结构和管理
体系结构 MySQL C/S模型 Server : mysqld Client : socket:仅本地连接使用 tcp/ip:应用连接使用(远程和本地) #TCP/IP方式(远程.本地) mysql ...
- MySQL 分区表,为什么分区键必须是主键的一部分?
随着业务的不断发展,数据库中的数据会越来越多,相应地,单表的数据量也会越到越大,大到一个临界值,单表的查询性能就会下降. 这个临界值,并不能一概而论,它与硬件能力.具体业务有关. 虽然在很多 MySQ ...
随机推荐
- jqueryAjax在客户端发送请求的方式
get请求方式: $.get函数,发起一个get请求, //第一个参数是请求的url地址, //第二个参数是请求参数,可以是一个urlencode过的字符串,也可以是//一个对象,如果是对象jquer ...
- codeforces 360 E - The Values You Can Make
E - The Values You Can Make Description Pari wants to buy an expensive chocolate from Arya. She has ...
- dp入门--poj 1163数塔
...
- SectionIndexer示例
This small tutorial will show you how to create a ListView, enable fast scrolling, and create a alph ...
- apache+php 安装
Apache和PHP的版本分别为: httpd-2.4.9-win64-VC11.zip php-5.6.9-Win32-VC11-x64.zip 下载地址: php-5.6.9-Win32-VC11 ...
- Jenkins部署配置简介
前段时间研究了一下自动化测试,因而接触到了Jenkins,今天有时间进行一下Jenkins部署配置相关知识的总结分享 前言:由于本次只是实验性研究,采用Windows环境,因此Jenkins可以通过下 ...
- linux配置ftp高级权限
建一个用于管理的ftp高级账号,ftproot,定义它的目录,也就是我们存放项目的地址,所属组www, useradd -d /home/www -g www ftproot www里存放很多项目,我 ...
- MyEclipse部署到tomcat的问题
开发环境为MyEclipse2014,tomcat版本为8.0,部署tomcat时,出现以下问题: 这时,解决方法如下: 1.右击项目,选择export,弹出框后,在上方输入WAR file,下方会出 ...
- 使用Aspose.Cells读取Excel
最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...
- Mysql 行列转换
一.第一种 原数据表 转换后 DROP TABLE IF EXISTS tempdynamic; CREATE TEMPORARY TABLE tempdynamic ( SELECT p.fsPay ...