mysql分区举例---子分区

标签: mysql 分区 分区 | 发表时间:2012-10-03 20:47 | 作者:
出处:http://www.iteye.com

 

mysql允许RANGE和LIST分区上再进行HASH和KEY的子分区
mysql> create table ts(a int,b date)
    -> partition by range(year(b))
    -> subpartition by hash(TO_DAYS(b))
    -> subpartitions 2(
    -> partition p0 values less than (1990),
    -> partition p1 values less than (2000),
    -> partition p2 values less than maxvalue
    -> );
Query OK, 0 rows affected (0.89 sec)

产生6个分区,3*2=6

mysql> select * from information_schema.partitions
    -> where table_schema=database() and
    -> table_name='ts'\G;
*************************** 1. row ***************************
                TABLE_CATALOG: def
                 TABLE_SCHEMA: test
                   TABLE_NAME: ts
               PARTITION_NAME: p0
            SUBPARTITION_NAME: p0sp0
   PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: 1
             PARTITION_METHOD: RANGE
          SUBPARTITION_METHOD: HASH
         PARTITION_EXPRESSION: year(b)
      SUBPARTITION_EXPRESSION: TO_DAYS(b)
        PARTITION_DESCRIPTION: 1990
                   TABLE_ROWS: 0
               AVG_ROW_LENGTH: 0
                  DATA_LENGTH: 16384
              MAX_DATA_LENGTH: NULL
                 INDEX_LENGTH: 0
                    DATA_FREE: 0
                  CREATE_TIME: NULL
                  UPDATE_TIME: NULL
                   CHECK_TIME: NULL
                     CHECKSUM: NULL
            PARTITION_COMMENT:
                    NODEGROUP: default
              TABLESPACE_NAME: NULL
*************************** 2. row ***************************
                TABLE_CATALOG: def
                 TABLE_SCHEMA: test
                   TABLE_NAME: ts
               PARTITION_NAME: p0
            SUBPARTITION_NAME: p0sp1
   PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: 2
             PARTITION_METHOD: RANGE
          SUBPARTITION_METHOD: HASH
         PARTITION_EXPRESSION: year(b)
      SUBPARTITION_EXPRESSION: TO_DAYS(b)
        PARTITION_DESCRIPTION: 1990
                   TABLE_ROWS: 0
               AVG_ROW_LENGTH: 0
                  DATA_LENGTH: 16384
              MAX_DATA_LENGTH: NULL
                 INDEX_LENGTH: 0
                    DATA_FREE: 0
                  CREATE_TIME: NULL
                  UPDATE_TIME: NULL
                   CHECK_TIME: NULL
                     CHECKSUM: NULL
            PARTITION_COMMENT:
                    NODEGROUP: default
              TABLESPACE_NAME: NULL
*************************** 3. row ***************************
                TABLE_CATALOG: def
                 TABLE_SCHEMA: test
                   TABLE_NAME: ts
               PARTITION_NAME: p1
            SUBPARTITION_NAME: p1sp0
   PARTITION_ORDINAL_POSITION: 2
SUBPARTITION_ORDINAL_POSITION: 1
             PARTITION_METHOD: RANGE
          SUBPARTITION_METHOD: HASH
         PARTITION_EXPRESSION: year(b)
      SUBPARTITION_EXPRESSION: TO_DAYS(b)
        PARTITION_DESCRIPTION: 2000
                   TABLE_ROWS: 0
               AVG_ROW_LENGTH: 0
                  DATA_LENGTH: 16384
              MAX_DATA_LENGTH: NULL
                 INDEX_LENGTH: 0
                    DATA_FREE: 0
                  CREATE_TIME: NULL
                  UPDATE_TIME: NULL
                   CHECK_TIME: NULL
                     CHECKSUM: NULL
            PARTITION_COMMENT:
                    NODEGROUP: default
              TABLESPACE_NAME: NULL
*************************** 4. row ***************************
                TABLE_CATALOG: def
                 TABLE_SCHEMA: test
                   TABLE_NAME: ts
               PARTITION_NAME: p1
            SUBPARTITION_NAME: p1sp1
   PARTITION_ORDINAL_POSITION: 2
SUBPARTITION_ORDINAL_POSITION: 2
             PARTITION_METHOD: RANGE
          SUBPARTITION_METHOD: HASH
         PARTITION_EXPRESSION: year(b)
      SUBPARTITION_EXPRESSION: TO_DAYS(b)
        PARTITION_DESCRIPTION: 2000
                   TABLE_ROWS: 0
               AVG_ROW_LENGTH: 0
                  DATA_LENGTH: 16384
              MAX_DATA_LENGTH: NULL
                 INDEX_LENGTH: 0
                    DATA_FREE: 0
                  CREATE_TIME: NULL
                  UPDATE_TIME: NULL
                   CHECK_TIME: NULL
                     CHECKSUM: NULL
            PARTITION_COMMENT:
                    NODEGROUP: default
              TABLESPACE_NAME: NULL
*************************** 5. row ***************************
                TABLE_CATALOG: def
                 TABLE_SCHEMA: test
                   TABLE_NAME: ts
               PARTITION_NAME: p2
            SUBPARTITION_NAME: p2sp0
   PARTITION_ORDINAL_POSITION: 3
SUBPARTITION_ORDINAL_POSITION: 1
             PARTITION_METHOD: RANGE
          SUBPARTITION_METHOD: HASH
         PARTITION_EXPRESSION: year(b)
      SUBPARTITION_EXPRESSION: TO_DAYS(b)
        PARTITION_DESCRIPTION: MAXVALUE
                   TABLE_ROWS: 0
               AVG_ROW_LENGTH: 0
                  DATA_LENGTH: 16384
              MAX_DATA_LENGTH: NULL
                 INDEX_LENGTH: 0
                    DATA_FREE: 0
                  CREATE_TIME: NULL
                  UPDATE_TIME: NULL
                   CHECK_TIME: NULL
                     CHECKSUM: NULL
            PARTITION_COMMENT:
                    NODEGROUP: default
              TABLESPACE_NAME: NULL
*************************** 6. row ***************************
                TABLE_CATALOG: def
                 TABLE_SCHEMA: test
                   TABLE_NAME: ts
               PARTITION_NAME: p2
            SUBPARTITION_NAME: p2sp1
   PARTITION_ORDINAL_POSITION: 3
SUBPARTITION_ORDINAL_POSITION: 2
             PARTITION_METHOD: RANGE
          SUBPARTITION_METHOD: HASH
         PARTITION_EXPRESSION: year(b)
      SUBPARTITION_EXPRESSION: TO_DAYS(b)
        PARTITION_DESCRIPTION: MAXVALUE
                   TABLE_ROWS: 0
               AVG_ROW_LENGTH: 0
                  DATA_LENGTH: 16384
              MAX_DATA_LENGTH: NULL
                 INDEX_LENGTH: 0
                    DATA_FREE: 0
                  CREATE_TIME: NULL
                  UPDATE_TIME: NULL
                   CHECK_TIME: NULL
                     CHECKSUM: NULL
            PARTITION_COMMENT:
                    NODEGROUP: default
              TABLESPACE_NAME: NULL
6 rows in set (0.02 sec)

第二种方式:
 CREATE TABLE ts2 (
  a int(11) DEFAULT NULL,
  b date DEFAULT NULL
)
PARTITION BY RANGE (year(b))
SUBPARTITION BY HASH (to_days(b))
(PARTITION p0 VALUES LESS THAN (1990)
 (SUBPARTITION s0 ,
  SUBPARTITION s1 ),
 PARTITION p1 VALUES LESS THAN (2000)
 (SUBPARTITION s2 ,
  SUBPARTITION s3 ),
 PARTITION p2 VALUES LESS THAN MAXVAlUE
 (SUBPARTITION s4 ,
  SUBPARTITION s5 ));

几条SQL:
1.create table ts3 like ts2;
建立ts3表和ts2一模一样
2.alter table ts3 drop partition p0;
删除ts3表的p0分区


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [mysql 分区 分区] 推荐:

MySQL分区技术

- - 数据库 - ITeye博客
mysql分区技术是mysql5.1以后出现的新技术,能替代分库分表技术,它的优势在于只在物理层面来降低数据库压力. 常用的MySQL分区类型:. 1.RANGE分区:基于属于一个给定的连续区间的列值,把多行分配给分区(基于列). 2.LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合的某个值来进行选择(基于列值是固定值的).

mysql分区举例---子分区

- - ITeye博客
mysql允许RANGE和LIST分区上再进行HASH和KEY的子分区. 建立ts3表和ts2一模一样. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

mysql分区举例---HASH分区

- - ITeye博客
    hash分区的目的是将数据均匀的分布到预先定义的各个分区中,保证各分区的数据数量大致一致. 在RANGE和LIST分区中,必须明确指定一个给定的列值或列值集合应该保存在哪个分区中;而在HASH分区中,MYSQL自动完成这些工作,用户所要做的只是基于将要被散列的列值指定一个列值或者表达式,以及指定呗分区的表将要被分割成的分区数量.

MySQL如何避免使用Linux的swap分区而提升读写性能

- timo - 服务器运维与网站架构|Linux运维|互联网研究
Linux有很多很好的内存、IO调度机制,但是并不会适用于所有场景. 对于DBA来说Linux比较让人头疼的一个地方是,它不会因为MySQL很重要就避免将分配给MySQL的地址空间映射到swap上. 对于频繁进行读写操作的系统而言,数据看似在内存而实际上在磁盘是非常糟糕的,响应时间的增长很可能直接拖垮整个系统.

hiveQL分区表

- - CSDN博客云计算推荐文章
2、加载数据时显示指定分区值. 4、show partitions 可以查看表的分区. 注意:partitioned by 子句中定义的列,数据文件中并不包含这些列值. 5、select 使用分区列查询,hive会对输入做修剪;. 作者:u011984824 发表于2013-11-7 13:25:38 原文链接.

Oracle分区表及分区索引

- - Oracle - 数据库 - ITeye博客
分区表的几种分类:. 1、Range(范围)分区. 是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的. 比如按照时间划分,2012 年1 季度的数据放到a 分区,12年2 季度的数据放到b分区,. 因此在创建的时候呢,需要你指定基于的列,以及分区的范围值,如果某些记录暂无法预测范围,.

oracle分区详解

- - Oracle - 数据库 - ITeye博客
此文从以下几个方面来整理关于分区表的概念及操作:.         1.表空间及分区表的概念.         2.表分区的具体作用.         3.表分区的优缺点.         4.表分区的几种类型及操作方法.         5.对表分区的维护性操作. (1.) 表空间及分区表的概念.

GUID分区表的学习

- 蛋布丁 - 标点符
先说说目前广泛使用的磁盘分区表方案. 传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容.

Partitioner分区过程分析

- - CSDN博客架构设计推荐文章
            Partition的中文意思就是分区,分片的意思,这个阶段也是整个MapReduce过程的第三个阶段,就在Map任务的后面,他的作用就是使key分到通过一定的分区算法,分到固定的区域中,给不同的Reduce做处理,达到负载均衡的目的. 他的执行过程其实就是发生在上篇文章提到的collect的过程阶段,当输入的key调用了用户的map函数时,中间结果就会被分区了.

oracle表分区详解

- - 博客园_首页
此文从以下几个方面来整理关于分区表的概念及操作:.         1.表空间及分区表的概念.         2.表分区的具体作用.         3.表分区的优缺点.         4.表分区的几种类型及操作方法.         5.对表分区的维护性操作.. (1.) 表空间及分区表的概念.