MySQL分区表的管理~2
一、维护分区
对于表的维护,我们一般有如下几种方式: CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE和REPAIR TABLE。
而这几种方式,对于分区同样适用。下面,我们一一阐述各种的作用。
1. Rebuilding partitions
重建分区,它相当于先删除分区中的数据,然后重新插入。这个主要是用于分区的碎片整理。
譬如:
ALTER TABLE t1 REBUILD PARTITION p0, p1;
2. Optimizing partitions
该命令主要是用于回收空闲空间和分区的碎片整理。对分区执行该命令,相当于依次对分区执行 CHECK PARTITION, ANALYZE PARTITION,REPAIR PARTITION命令。
譬如:
ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;
注意:
一些存储引擎,譬如InnoDB,并不支持基于分区的Optimizing。当你执行该命令时,会rebuild整张表,在 MySQL 5.6.9版本以上,执行该命令会导致整张表被rebuild和analyze。在这种情况下,建议直接使用 ALTER TABLE ... REBUILD PARTITION 或 ALTER TABLE ... ANALYZE PARTITION。
3. Analyzing partitions
读取和存储分区中值的分布情况
ALTER TABLE t1 ANALYZE PARTITION p3;
4. Repairing partitions
修复被破坏的分区
ALTER TABLE t1 REPAIR PARTITION p0,p1;
5. Checking partitions
检查分区是否存在错误
ALTER TABLE trb3 CHECK PARTITION p1;
注意:
1> mysqlcheck和myisamchk并不支持分区表
2> 上述分区名也可用all替代,指的是对所有分区进行操作。
3> ANALYZE, CHECK, OPTIMIZE, REBUILD, REPAIR和TRUNCATE命令并不适用于子分区。
二、如何获取分区的相关信息
1. 通过 SHOW CREATE TABLE 语句来查看分区表的分区子句
譬如:
mysql> show create table e\G
*************************** 1. row ***************************
Table: e
Create Table: CREATE TABLE `e` (
`id` int(11) NOT NULL,
`fname` varchar(30) DEFAULT NULL,
`lname` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (id)
(PARTITION p0 VALUES LESS THAN (50) ENGINE = InnoDB,
PARTITION p1 VALUES LESS THAN (100) ENGINE = InnoDB,
PARTITION p2 VALUES LESS THAN (150) ENGINE = InnoDB,
PARTITION p3 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
1 row in set (0.00 sec)
2. 通过 SHOW TABLE STATUS 语句来查看表是否分区
对应Create_options字段,譬如:
mysql> show table status\G
*************************** 1. row ***************************
Name: e
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 6
Avg_row_length: 10922
Data_length: 65536
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: 2015-12-07 22:26:06
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options: partitioned
Comment:
3. 查看 INFORMATION_SCHEMA.PARTITIONS表
4. 通过 EXPLAIN PARTITIONS SELECT 语句查看对于具体的SELECT语句,会访问哪个分区。
三、分区交换
分区交换的语法如下:
ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt
其中,pt是分区表,p是pt的分区(注:也可以是子分区),nt是目标表。
其实,分区交换的限制还是蛮多的:
1> nt不能为分区表
2> nt不能为临时表
3> nt和pt的结构必须一致
4> nt不存在任何外键约束,即既不能是主键,也不能是外键。
5> nt中的数据不能位于p分区的范围之外。
具体可参考MySQL的官方文档
http://dev.mysql.com/doc/refman/5.6/en/partitioning-management-exchange.html
MySQL分区表的管理~2的更多相关文章
- Mysql --分区表的管理与维护
改变一个表的分区方案只需使用alter table 加 partition_options 子句就可以了.和创建分区表时的create table语句很像 创建表 CREATE TABLE trb3 ...
- 数据切分——Mysql分区表的管理与维护
关于Mysql分区表的介绍可以参考: http://blog.csdn.net/jhq0113/article/details/44592865 关于Mysql分区表的创建可以参考: http://b ...
- MySQL分区表的管理~1
一.如何管理RANGE和LIST分区 以该分区表为例 CREATE TABLE members ( id INT, fname ), lname ), dob DATE ) PARTITION BY ...
- 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 ...
随机推荐
- 【Telerik】弹出对话框RadWindow,确认删除信息
要做一个删除功能,但是删除前正常都要弹出对话框确认一下是否删除信息,防止误删信息.
- C#中分割字符串输出字符数组
来自博客园 http://www.cnblogs.com/yugen/archive/2010/08/18/1802781.html 1.用字符串分隔: using System.Text.Reg ...
- #1094 : Lost in the City
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets lost in the city. He does not know where he is ...
- 2016/11/16 周三 <Web SQL Database基本使用方法(入门) >
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- 如何在arcmap中调试addin或者插件
1. 首先,在arcmap中,依次点击“自定义”->"加载项管理器",加载dll或者tlb文件 2. 其次,在vs中,依次点击“工具”->“附加到进程",在对 ...
- CoolPlist 帧动画自动生成工具
工具英文名称:CoolPlist作者: 陈前帆 thinkingMan | sonny 邮箱: 625936034@qq.com | chenqianfan1@163.com电话: 136704713 ...
- win7 64位下 mongodb安装及命令运行
有网友老催我把框架加上mongodb的支持,于是偶尔抽空看了看相关的文章. 今天有缘,就把mongodb安装了一下,中间遇到了小小的问题,So,把整个过程记录一下: 1:先上官网:http://www ...
- 浅谈Android应用保护(零):出发点和背景
近几年来,无线平台特别是Android平台的安全逐渐成为各厂商关注的重点.各种新的思路和玩法层出不穷.所以,笔者基于前一段时间的学习和整理,写了这系列关于Android应用安全和保护的文章. 这5篇文 ...
- 生活中的OO智慧——大话面向对象五大原则
世间万物,以俗眼观纷纷各异,以道眼观种种是常.面向对象思想不仅是编程的智慧,同样也是人生的智慧.通过生活去领悟面向对象的智慧,以面向对象的智慧来指导生活. (部分图片取自How I explained ...
- Entity Framework Code First数据库连接
1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...