--  mysql建立表分区,使用range方法建立;

create table t_range(
id int(11),
money int(11) unsigned not null,
date datetime
)partition by range(year(date))
(
partition p2007 values less than (2008),
partition p2008 values less than (2009),
partition p2009 values less than (2010),
partition p2010 values less than maxvalue
);

--  mysql建立分区,使用list方法建立分区。

--  对于innodb和myisam引擎,一条语句插入多条记录的时候,如果中间有值不能插入,innodb会全部回滚,myisam在错误值之前的数据可以插入到表中。

create table cms_list(
a int(11),
b int(11)
)
partition by list (b)(
partition p0 values in (1,3,5,7,9),
partition p1 values in (2,4,6,8,0)
);

-- hash分区的目的是将数据均匀的分布到预先定义的各个分区中,保证各分区的数据量大致一致。

create table t_hash(
a int(11),
b datetime
)partition by hash
(YEAR(b) partitions 4);

-- hash的分区函数页需要返回一个整数值。partitions子句中的值是一个非负整数,不加的partitions子句的话,默认为分区数为1。

--  key分区和hash分区相似,不同在于hash分区是用户自定义函数进行分区,key分区使用mysql数据库提供的函数进行分区,NDB cluster使用MD5函数来分区,对于其他存储引擎mysql使用内部的hash函数,这些函数基于password()一样的算法。

create table cms_key(
a int(11),
b datetime
)
partition by key (b)
partitions 4;

上面的RANGE、LIST、HASH、KEY四种分区中,分区的条件必须是整形,如果不是整形需要通过函数将其转换为整形。

  mysql-5.5开始支持COLUMNS分区,可视为RANGE和LIST分区的进化,COLUMNS分区可以直接使用非整形数据进行分区。COLUMNS分区支持以下数据类型:

  所有整形,如INT SMALLINT TINYINT BIGINT。FLOAT和DECIMAL则不支持。

  日期类型,如DATE和DATETIME。其余日期类型不支持。

  字符串类型,如CHAR、VARCHAR、BINARY和VARBINARY。BLOB和TEXT类型不支持。

  COLUMNS可以使用多个列进行分区。

新增分区

mysql> ALTER TABLE sale_data

->   ADD PARTITION (PARTITION p201010 VALUES LESS THAN (201011));

Query OK, 0 rows affected (0.36 sec)

Records: 0  Duplicates: 0  Warnings: 0

删除分区

--当删除了一个分区,也同时删除了该分区中所有的数据。

mysql> ALTER TABLE sale_data DROP PARTITION p201010;

Query OK, 0 rows affected (0.22 sec)

Records: 0  Duplicates: 0  Warnings: 0

分区的合并

下面的SQL,将p201001 - p201009 合并为3个分区p2010Q1 - p2010Q3

mysql> ALTER TABLE sale_data

->   REORGANIZE PARTITION p201001,p201002,p201003,

->                        p201004,p201005,p201006,

->                        p201007,p201008,p201009 INTO

-> (

->   PARTITION p2010Q1 VALUES LESS THAN (201004),

->   PARTITION p2010Q2 VALUES LESS THAN (201007),

->   PARTITION p2010Q3 VALUES LESS THAN (201010)

-> );

Query OK, 0 rows affected (1.14 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql的分区技术(建立分区)的更多相关文章

  1. MySQL表分区技术

    MySQL表分区技术 MySQL有4种分区类型: 1.RANGE 分区 - 连续区间的分区 - 基于属于一个给定连续区间的列值,把多行分配给分区: 2.LIST 分区 - 离散区间的分区 - 类似于按 ...

  2. MySQL分区技术 (一)

    4:MySQL 分区技术(是mysql 5.1以版本号后開始用->是甲骨文mysql技术团队维护人员以插件形式插入到mysql里面的技术) 眼下,针对海量数据的优化主要有2中方法: 1:大表拆成 ...

  3. MYSQL优化_MYSQL分区技术[转载]

    MySQL分区技术是用来减轻海量数据带来的负担,解决数据库性能下降问题的一种方式,其他的方式还有建立索引,大表拆小表等等.MySQL分区按照分区的参考方式来分有RANGE分区.LIST分区.HASH分 ...

  4. mysql 表分区技术

    表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分.从逻辑上看,只有一张表,但是底层却是由多个物理分区组成. 表分区有什么好处: a.分区表的数据可以分布在不同的物理设备上, ...

  5. (转)mysql分区技术2

    转:http://database.51cto.com/art/201002/184392.htm 非整数列分区 任何使用过分区的人应该都遇到过不少问题,特别是面对非整数列分区时,MySQL 5.1只 ...

  6. Mysql数据分片技术(一)——初识表分区

    1. 为什么需要数据分片技术 2. 3种数据分片方式简述 3. 分片技术原理概述 4. 对单表分区的时机 1为什么需要数据分片技术 数据库产品的市场 在互联网行业内,绝大部分开发人员都会遇到数据表的性 ...

  7. mysql的分区技术

    一.概述 当 MySQL的总记录数超过了100万后,会出现性能的大幅度下降吗?答案是肯定的,但是,性 能下降>的比率不一而同,要看系统的架构.应用程序.还有>包括索引.服务器硬件等多种因素 ...

  8. (转) mysql的分区技术 .

    转:http://blog.csdn.net/feihong247/article/details/8100960 一.概述 当 MySQL的总记录数超过了100万后,会出现性能的大幅度下降吗?答案是 ...

  9. mysql分表和表分区详解

    为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...

随机推荐

  1. PV,UV,IP

    参加了DTCC归来之后,各大电商技术大牛都会自豪的分享一下自己公司网站的PV,流量等等.当时也是一知半解,回来之后赶紧查了查,也算是扫扫盲. 以下摘自网络中,自己稍稍做了整理,对于PV,流量和带宽的理 ...

  2. LoadRunner 参数化详解

    可能稍微对LR 有些了解的人都知道LR 参数化的功能,今天请跟我来一起好好理一下. 首先,咱们先说一下为啥要用参数化?假如您录制了一个登录的脚本,如下所示, web_submit_form(" ...

  3. JDK1.5新特性(四)……Autoboxing/Unboxing

    援引 Autoboxing/Unboxing - This facility eliminates the drudgery of manual conversion between primitiv ...

  4. ERROR hdfs.DFSClient: Failed to close file解决方法

    14/04/11 17:59:44 ERROR hdfs.DFSClient: Failed to close file /wlan_out/_temporary/_attempt_local_000 ...

  5. CentOS 6.4 安装 Transmission 2.76

    1.安装Transmission 首先打开Transmission下载页:http://www.transmissionbt.com/download/ ,点击CentOS下载项,会跳转到一个叫&qu ...

  6. [五]JFreeChart实践四之直线图

    重点: 1.时间序列集合作为dataset,一个时间序列为一条折线 2.时间序列可以是月:年,小时:天 3.准备好时间序列要放入时间序列集合中 4.将时间序列集合作为dataset传入ChartFac ...

  7. pycharm的使用技巧

    本文将持续更新一些关于在使用pycharm的过程中的小技巧: 多行缩进/取消缩进 选中需要更改的代码,按 shift + tab 多行注释/取消注释 选中需要更改的代码,按 ctrl  +  / 滚轮 ...

  8. 根据日期累加金额的mysql

    今天遇到了一个语句,想了一会觉得有必要记录一下 问题描述 id  money date 1 10 2015-01-012 20 2015-01-023 30 2015-01-034 40 2015-0 ...

  9. FormMove

    private    { Private declarations }    procedure WMMOVE(var Msg: TMessage); message WM_MOVE;  proced ...

  10. 导出项目为jar包