• MySQL四种分区类型


    RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。
    LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。  www.2cto.com  
    HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。
    KEY 分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
    一般用得多的是range分区和list分区。

    分区表的创建
    1、RANGE分区

    CREATE TABLE employees (
        id INT NOT NULL,
        fname VARCHAR(30),
        lname VARCHAR(30),
        hired DATE NOT NULL DEFAULT '1970-01-01',
        separated DATE NOT NULL DEFAULT '9999-12-31',
        job_code INT NOT NULL,
        store_id INT NOT NULL
    )
    PARTITION BY RANGE (store_id) (
        PARTITION p0 VALUES LESS THAN (6),
        PARTITION p1 VALUES LESS THAN (11),
        PARTITION p2 VALUES LESS THAN (16),
        PARTITION p3 VALUES LESS THAN MAXVALUE
    );

    2、 LIST分区

    CREATE TABLE employees (
        id INT NOT NULL,
        fname VARCHAR(30),
        lname VARCHAR(30),
        hired DATE NOT NULL DEFAULT '1970-01-01',
        separated DATE NOT NULL DEFAULT '9999-12-31',
        job_code INT,
        store_id INT
    )
    PARTITION BY LIST(store_id)
        PARTITION pNorth VALUES IN (3,5,6,9,17),
        PARTITION pEast VALUES IN (1,2,10,11,19,20),
        PARTITION pWest VALUES IN (4,12,13,14,18),
        PARTITION pCentral VALUES IN (7,8,15,16)
    );

    Note:LIST分区没有类似如“VALUES LESS THAN MAXVALUE”这样的包含其他值在内的定义。将要匹配的任何值都必须在值列表中找到。

    3、 HASH分区

    CREATE TABLE employees (
        id INT NOT NULL,
        fname VARCHAR(30),
        lname VARCHAR(30),
        hired DATE NOT NULL DEFAULT '1970-01-01',
        separated DATE NOT NULL DEFAULT '9999-12-31',
        job_code INT,
        store_id INT
    )
    PARTITION BY HASH(YEAR(hired))
    PARTITIONS 4;

    3.1、LINEAR HASH分区

    CREATE TABLE employees (
        id INT NOT NULL,
        fname VARCHAR(30),
        lname VARCHAR(30),
        hired DATE NOT NULL DEFAULT '1970-01-01',
        separated DATE NOT NULL DEFAULT '9999-12-31',
        job_code INT,
        store_id INT
    )
    PARTITION BY LINEAR HASH(YEAR(hired))
    PARTITIONS 4;

    Note:线性哈希功能使用的一个线性的2的幂(powers-of-two)运算法则,而常规哈希使用的是求哈希函数值的模数

    4、KEY分区

     
    CREATE TABLE tk (
        col1 INT NOT NULL,
        col2 CHAR(5),
        col3 DATE
    )
    PARTITION BY LINEAR KEY (col1)
    PARTITIONS 3;

    HASH和KEY分区的管理
    2.1)合并HASH或KEY分区
    ALTER TABLE … COALESCE PARTITION
    Note:对于LINEAR HASH和LINEAR KEY分区同样有效

    2.2)添加分区
    ALTER TABLE table_name ADD PARTITION PARTITIONS 18;–18比原来值大

    3、分区维护
    3.1) 重建分区
    ALTER TABLE table_name REBUILD PARTITION (p0, p1);

    3.2)优化分区
    ALTER TABLE table_name OPTIMIZE PARTITION (p0, p1);

    3.3)分析分区
    ALTER TABLE table_name ANALYZE PARTITION (p0, p1);

    3.4)检查分区
    ALTER TABLE table_name CHECK PARTITION (p0, p1);

  • 相关阅读:
    Java 三大主流 工作流 学习
    有限状态机(FSM)的Java 学习FSM
    OSWorkFlow 学习
    三种分布式对象主流技术——COM、Java和COBRA
    Java对象池技术的原理及其实现
    tomcat,很多时候,可以在服务server.xml中可以实现一些效果
    理解Scala
    CAP原理和BASE思想
    Java 在PDF文档中绘制图形
    Java 处理PDF图章(印章)——图片图章、动态图章
  • 原文地址:https://www.cnblogs.com/EasonSun/p/3186667.html
Copyright © 2020-2023  润新知