列表分区(List分区)

这里假设表中有一个sale_item_type 字段,数据类型为INT 型

当sale_item_type 为1,3,5的时候,作为一个分区

当sale_item_type 为2,4,6的时候,作为另一个分区

当sale_item_type 为7,8的时候,作为最后一个分区

初期分区定义

mysql> CREATE TABLE sale_data2 (

->   sale_date  DATETIME NOT NULL,

->   sale_item_type  INT NOT NULL ,

->   sale_money DECIMAL(10,2) NOT NULL

-> )

-> PARTITION BY LIST (sale_item_type) (

->   PARTITION pFoods VALUES IN (1,3,5),

->   PARTITION pSmoke VALUES IN (2,4,6),

->   PARTITION pDrink VALUES IN (7,8)

-> );

Query OK, 0 rows affected (0.11 sec)

 

核对结果

mysql> SHOW CREATE TABLE sale_data2\G

*************************** 1. row ********************

Table: sale_data2

Create Table: CREATE TABLE `sale_data2` (

`sale_date` datetime NOT NULL,

`sale_item_type` int(11) NOT NULL,

`sale_money` decimal(10,2) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!50100 PARTITION BY LIST (sale_item_type)

(PARTITION pFoods VALUES IN (1,3,5) ENGINE = InnoDB,

PARTITION pSmoke VALUES IN (2,4,6) ENGINE = InnoDB,

PARTITION pDrink VALUES IN (7,8) ENGINE = InnoDB) */

1 row in set (0.00 sec)

新增分区

mysql> ALTER TABLE sale_data2

->   ADD PARTITION (PARTITION pOther VALUES IN (9, 10));

Query OK, 0 rows affected (0.23 sec)

Records: 0  Duplicates: 0  Warnings: 0

核对结果

mysql> SHOW CREATE TABLE sale_data2\G

*************************** 1. row ***************************

Table: sale_data2

Create Table: CREATE TABLE `sale_data2` (

`sale_date` datetime NOT NULL,

`sale_item_type` int(11) NOT NULL,

`sale_money` decimal(10,2) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!50100 PARTITION BY LIST (sale_item_type)

(PARTITION pFoods VALUES IN (1,3,5) ENGINE = InnoDB,

PARTITION pSmoke VALUES IN (2,4,6) ENGINE = InnoDB,

PARTITION pDrink VALUES IN (7,8) ENGINE = InnoDB,

PARTITION pOther VALUES IN (9,10) ENGINE = InnoDB) */

1 row in set (0.00 sec)

删除分区

mysql> ALTER TABLE sale_data2

->   DROP PARTITION pOther;

Query OK, 0 rows affected (0.34 sec)

Records: 0  Duplicates: 0  Warnings: 0

核对结果

mysql> SHOW CREATE TABLE sale_data2\G

*************************** 1. row ***************************

Table: sale_data2

Create Table: CREATE TABLE `sale_data2` (

`sale_date` datetime NOT NULL,

`sale_item_type` int(11) NOT NULL,

`sale_money` decimal(10,2) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!50100 PARTITION BY LIST (sale_item_type)

(PARTITION pFoods VALUES IN (1,3,5) ENGINE = InnoDB,

PARTITION pSmoke VALUES IN (2,4,6) ENGINE = InnoDB,

PARTITION pDrink VALUES IN (7,8) ENGINE = InnoDB) */

1 row in set (0.00 sec)

分区的拆分

下面的SQL将pDrink 拆分为pBeer 与pCola

mysql> ALTER TABLE sale_data2 REORGANIZE PARTITION pDrink INTO (

->     PARTITION pBeer VALUES IN (7),

->     PARTITION pCola VALUES IN (8)

-> );

Query OK, 0 rows affected (0.39 sec)

Records: 0  Duplicates: 0  Warnings: 0

核对结果

mysql> SHOW CREATE TABLE sale_data2\G

*************************** 1. row ***************************

Table: sale_data2

Create Table: CREATE TABLE `sale_data2` (

`sale_date` datetime NOT NULL,

`sale_item_type` int(11) NOT NULL,

`sale_money` decimal(10,2) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!50100 PARTITION BY LIST (sale_item_type)

(PARTITION pFoods VALUES IN (1,3,5) ENGINE = InnoDB,

PARTITION pSmoke VALUES IN (2,4,6) ENGINE = InnoDB,

PARTITION pBeer VALUES IN (7) ENGINE = InnoDB,

PARTITION pCola VALUES IN (8) ENGINE = InnoDB) */

1 row in set (0.00 sec)

分区的合并

下面的SQL,将pBeer,pCola合并到pDrink

mysql> ALTER TABLE sale_data2

->   REORGANIZE PARTITION pBeer,pCola INTO (

->     PARTITION pDrink VALUES IN (7,8)

-> );

Query OK, 0 rows affected (0.36 sec)

Records: 0  Duplicates: 0  Warnings: 0

核对结果

mysql> SHOW CREATE TABLE sale_data2\G

*************************** 1. row ***********************

Table: sale_data2

Create Table: CREATE TABLE `sale_data2` (

`sale_date` datetime NOT NULL,

`sale_item_type` int(11) NOT NULL,

`sale_money` decimal(10,2) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!50100 PARTITION BY LIST (sale_item_type)

(PARTITION pFoods VALUES IN (1,3,5) ENGINE = InnoDB,

PARTITION pSmoke VALUES IN (2,4,6) ENGINE = InnoDB,

PARTITION pDrink VALUES IN (7,8) ENGINE = InnoDB) */

1 row in set (0.00 sec)

MySQL分区表例子——List分区的更多相关文章

  1. mysql分区表之一:分区原理和优缺点【转】

    1.分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分 ...

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

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

  3. Mysql --分区表(7)Key分区

    Key分区 按照Key进行分区非常类似于按照Hash进行分区,只不过Hash分区允许使用用户自定义的表达式,而Key分区不允许使用用户自定义的表达式,需要使用MySQL服务器提供的HASH函数;同时H ...

  4. Mysql --分区表(6)Hash分区

    HASH分区 HASH分区主要用来分散热点读,确保数据在预先确定个数的分区中尽可能平均分布.对一个表执行HASH分区时,MySQL会对分区键应用一个散列函数,以此确定数据应当放在N个分区中的哪个分区 ...

  5. Mysql --分区表(5)Columns分区

    COLUMNS分区 COLUMNS分区是RANGE和LIST分区的变种.COLUMNS分区支持多列作为分区键进行分区 RANGE COLUNMS分区和LIST COLUMNS都支持非INT型列作为分区 ...

  6. mysql分区表之二:MySQL的表的四种分区类型介绍

    一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

  7. MySQL 分区表

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

  8. Mysql分表和分区的区别、分库分表介绍与区别

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...

  9. MySQL分区表

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

随机推荐

  1. Eclipse 卸载插件

    直奔主题,不罗嗦! 1.help 2.about eclipse 3. 点击Installation Details 4.选中你安装的插件点击Uninstall... 5.从新启动,OK.

  2. C(n,k)在n个不重复数中获得k个数

    //比如在数组a[]={1,7,89,87} 中k=2的时候 组合为 C(4,2)=6 package 再次开始; import java.util.ArrayList; //本次实现的是在n个不重复 ...

  3. 五指cms标签说明汇总

    1.栏目列表标签 只有一级导航: {wz:content action="category" cid="0" pagesize="100" ...

  4. 使用Windows Azure创建Windows系统虚拟机-上

    创建虚拟机来运行Windows 本教程介绍了如何轻松创建运行Windows 的 Azure虚拟机(VM),用作来自Azure管理门户中映像图库的Windows 服务器映像.映像图库提供了多种图像,包括 ...

  5. LightOj 1282 Leading and Trailing

    求n^k的前三位数字和后三位数字. 范围: n (2 ≤ n < 231) and k (1 ≤ k ≤ 107). 前三位: 设 n^k = x ---> lg(n^k)=lg(x) - ...

  6. oc学习之路----scrollView的代理模式

    右图是OC里面scrollView的代理的描述,从这里可以开出来,任何对象都可以作为scorllView的代理对象只要实现了UIScrollViewDelegate这个协议,为什么呢,原因要追究到UI ...

  7. 在Visual Studio中使用Pseudovariables来帮助调试

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在Visual Studio中使用Pseudovariables来帮助调试.

  8. jpcap 配置方法,问题解决,模拟sniffer程序。(附JAVA程序,jar,dll包等环境)

    博文链接 http://www.cnblogs.com/xckk/p/4609444.html 一.   Eclipse环境下安装与配置Jpcap 相关源程序.jpcap jar包,dll包,帮助文档 ...

  9. IOS Label 自动换行 IOS6和IOS7

    IOS 6和ios7 不一样,所以,我们分开来: IOS6: //计算实际frame大小,并将label的frame变成实际大小     CGSize size01 = [ssizeWithFont: ...

  10. [学习笔记]--Jfinal 表单提交附件

    近期.项目里面用到了Jfinal 里面的上传附件. Jfinal 的Controller 里面提供了一个 getFile系列方法提供文件上传. 我这里呢,是文件上传和表单參数一起提交. 页面类似下图: ...