zoukankan      html  css  js  c++  java
  • MySQL分区表(转)

    查看分区情况

    1. SELECT * FROM information_schema.PARTITIONS WHERE table_name='table_name';

    PARTITION_NAME:分区的名称

    PARTITION_METHOD:分区的类型

    TABLE_ROWS:分区数据条数

     

    RANGE分区:

    1. create table t (
    2. id int) engine=innodb
    3. partition by range (id) (
    4. partition p0 values less than (10), --id小于10的加入p0分区
    5. partition p1 values less than (20));--id大于等于10小于20的加入p1分区

    增加分区

    1. alter table r add partition (partition p2 values less than maxvalue); --所有大于等于20的加入p2分区

     

    1. CREATE TABLE `w` (
    2.   `money` INT(10) UNSIGNED NOT NULL,
    3.   `date` DATETIME DEFAULT NULL
    4. ) ENGINE=INNODB DEFAULT CHARSET=utf8
    5.  PARTITION BY RANGE (YEAR(DATE)) --定义的规则也可以是函数
    6. (PARTITION p2010 VALUES LESS THAN (2010),
    7.  PARTITION p2001 VALUES LESS THAN (2011),
    8.  PARTITION p2012 VALUES LESS THAN (2012));

      删除分区

    1. alter table w drop partition p2010;

    --删除分区,则分区的数据也删除

    ----------------------------------------------------------------------

     

     LIST分区

    1. CREATE TABLE m (
    2. a INT,
    3. b INT)ENGINE=innnodb
    4. PARTITION BY LIST (b)(
    5. PARTITION p0 VALUES IN (1,2,3,4,5),
    6. PARTITION p1 VALUES IN (6,7,8,9,10));
    7. insert into m values (1,6),(2,7),(3,11),(4,9)

    --插入的值(3,11)不符合,如果是innodb引擎,后面(4,9)符合条件不会插入表中,

       如果是myisam引擎,后面(4,9)符合条件则会插入表中

       

    ----------------------------------------------------------------------

      

    HASH分区

    1. CREATE TABLE m_hash (
    2. a INT,
    3. b DATETIME)ENGINE=innnodb
    4. PARTITION BY HASH (YEAR(b)) --"partition by hash (expr)" expr是一个返回整数的表达式
    5. PARTITIONS 4; --表示要被分割成分区的数量,没有则默认是1

     如:加入分区的算法mod(expr,分区数量4)=0 则加入p0

     

    1. PARTITION BY LINEAR HASH (YEAR(b))

    --与hash只是算法不同,返回是值是一样的

    ----------------------------------------------------------------------

     

    COLUMNS分区 

    mysql5.5开始支持,视为RANGE分区和LIST分区的一种进化,支持INT,SMALLINT,TINYINT,BIGINT.DATE,DATETIME.CHAR,VARCHAR,BINARY,VARBINARY类型

     

    1. CREATE TABLE t_columns_range(
    2. a INT,
    3. b DATETIME) ENGINE=INNODB
    4. PARTITION BY RANGE COLUMNS (b) --也可以PARTITION BY LESS COLUMNS (b)
    5. (PARTITION p0 VALUES LESS THAN('2009-01-01'),
    6. PARTITION p1 VALUES LESS THAN('2010-01-01'));
  • 相关阅读:
    线性回归模型练习
    《代码整洁之道》读书笔记五
    第八周总结
    第七周总结
    《代码整洁之道》读书笔记四
    《代码整洁之道》读书笔记三
    第六周总结
    《代码整洁之道》读书笔记二
    第五周总结
    HDFS的JavaAPI操作
  • 原文地址:https://www.cnblogs.com/sandea/p/3852801.html
Copyright © 2011-2022 走看看