一、维护分区

对于表的维护,我们一般有如下几种方式: 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的更多相关文章

  1. Mysql --分区表的管理与维护

    改变一个表的分区方案只需使用alter table 加 partition_options 子句就可以了.和创建分区表时的create table语句很像 创建表 CREATE TABLE trb3 ...

  2. 数据切分——Mysql分区表的管理与维护

    关于Mysql分区表的介绍可以参考: http://blog.csdn.net/jhq0113/article/details/44592865 关于Mysql分区表的创建可以参考: http://b ...

  3. MySQL分区表的管理~1

    一.如何管理RANGE和LIST分区 以该分区表为例 CREATE TABLE members ( id INT, fname ), lname ), dob DATE ) PARTITION BY ...

  4. MySQL 分区表

    转载自MySQL 分区表 今天统计数据的时候发现一张表使用了表分区,借此机会记录一下. 1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分.从逻辑上看, ...

  5. MySQL 分区表原理及数据备份转移实战

    MySQL 分区表原理及数据备份转移实战 1.分区表含义 分区表定义指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现 ...

  6. MYSQL分区表功能测试简析

    1.查看Mysql版本是否支持分区  SHOW VARIABLES LIKE '%partition%';   +-------------------+-------+ | Variable_nam ...

  7. 详解MySQL分区表

    当数据库数据量涨到一定数量时,性能就成为我们不能不关注的问题,如何优化呢? 常用的方式不外乎那么几种: 1.分表,即把一个很大的表达数据分到几个表中,这样每个表数据都不多. 优点:提高并发量,减小锁的 ...

  8. 第二章--MYSQL体系结构和管理

    体系结构 MySQL C/S模型 Server : mysqld Client : socket:仅本地连接使用 tcp/ip:应用连接使用(远程和本地) #TCP/IP方式(远程.本地) mysql ...

  9. MySQL 分区表,为什么分区键必须是主键的一部分?

    随着业务的不断发展,数据库中的数据会越来越多,相应地,单表的数据量也会越到越大,大到一个临界值,单表的查询性能就会下降. 这个临界值,并不能一概而论,它与硬件能力.具体业务有关. 虽然在很多 MySQ ...

随机推荐

  1. 【Telerik】弹出对话框RadWindow,确认删除信息

    要做一个删除功能,但是删除前正常都要弹出对话框确认一下是否删除信息,防止误删信息.

  2. C#中分割字符串输出字符数组

    来自博客园 http://www.cnblogs.com/yugen/archive/2010/08/18/1802781.html   1.用字符串分隔: using System.Text.Reg ...

  3. #1094 : Lost in the City

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets lost in the city. He does not know where he is ...

  4. 2016/11/16 周三 <Web SQL Database基本使用方法(入门) >

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 如何在arcmap中调试addin或者插件

    1. 首先,在arcmap中,依次点击“自定义”->"加载项管理器",加载dll或者tlb文件 2. 其次,在vs中,依次点击“工具”->“附加到进程",在对 ...

  6. CoolPlist 帧动画自动生成工具

    工具英文名称:CoolPlist作者: 陈前帆 thinkingMan | sonny 邮箱: 625936034@qq.com | chenqianfan1@163.com电话: 136704713 ...

  7. win7 64位下 mongodb安装及命令运行

    有网友老催我把框架加上mongodb的支持,于是偶尔抽空看了看相关的文章. 今天有缘,就把mongodb安装了一下,中间遇到了小小的问题,So,把整个过程记录一下: 1:先上官网:http://www ...

  8. 浅谈Android应用保护(零):出发点和背景

    近几年来,无线平台特别是Android平台的安全逐渐成为各厂商关注的重点.各种新的思路和玩法层出不穷.所以,笔者基于前一段时间的学习和整理,写了这系列关于Android应用安全和保护的文章. 这5篇文 ...

  9. 生活中的OO智慧——大话面向对象五大原则

    世间万物,以俗眼观纷纷各异,以道眼观种种是常.面向对象思想不仅是编程的智慧,同样也是人生的智慧.通过生活去领悟面向对象的智慧,以面向对象的智慧来指导生活. (部分图片取自How I explained ...

  10. Entity Framework Code First数据库连接

    1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...