博客
关于我
mysql 分区-range分区(二)
阅读量:516 次
发布时间:2019-03-08

本文共 1952 字,大约阅读时间需要 6 分钟。

MySQL的Range分区是实用的数据组织方式,可有效提升查询性能。本文详细解析Range分区的使用方法。

Range分区的概念

Range分区主要按特定字段的取值范围划分数据。常见的用途是按时间维度(如月份、年份)或空间维度(如地区编码)对数据进行组织。

分区字段的要求

  • 字段类型:分区字段必须是整型或可以转换为整型。若为日期类型,需使用支持转换的函数,如year()、to_days、to_secondsunix_timestamp(),其他函数不支持。
  • 数据类型:将日期字段转为整型后才能进行分区。
  • Range分区使用注意事项

  • 函数转换:如果使用日期字段分区,必须使用上述特定函数进行转换。
  • MAXVALUE:表示最大可能整数值,可用于定义上限分区。
  • 分区文件:分区文件可通过Show_variables[连接名]获取。
  • Range分区的讲座

    示例1:门店分区

    创建员工表,按门店ID分区:

    CREATE TABLE employees (    id INT NOT NULL AUTO_INCREMENT,    ename VARCHAR(30) NOT NULL,    ecode VARCHAR(30) NOT NULL,    store_id INT NOT NULL DEFAULT 0,    create_time DATETIME DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工表'PARTITION BY RANGE (store_id) (    PARTITION p0 VALUES LESS THAN (11),    PARTITION p1 VALUES LESS THAN (21),    PARTITION p2 VALUES LESS THAN (31),    PARTITION p3 VALUES LESS THAN (41));

    使用MAXVALUE时,请勿遗漏。

    示例2:时间分区

    按创建时间的年份分区:

    CREATE TABLE employees (    id INT NOT NULL AUTO_INCREMENT,    ename VARCHAR(30) NOT NULL,    ecode VARCHAR(30) NOT NULL,    store_id INT NOT NULL DEFAULT 0,    create_time DATETIME NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工表'PARTITION BY RANGE (YEAR(create_time)) (    PARTITION p0 VALUES LESS THAN (2017),    PARTITION p1 VALUES LESS THAN (2018),    PARTITION p2 VALUES LESS THAN (2019),    PARTITION p3 VALUES LESS THAN (2020));

    分区操作示例

    新增分区

    当存在MAXVALUE时,必须重置分区。删除分区时可能会删除数据,请谨慎操作:

    ALTER TABLE employees    ADD PARTITION p4 VALUES LESS THAN (51),    ADD PARTITION p5 VALUES LESS THAN (61);

    合并分区

    合并多个分区:

    ALTER TABLE employees    REORGANIZE PARTITION p0,p1,p2,p3 INTO (        PARTITION p1 VALUES LESS THAN (21),        PARTITION p2 VALUES LESS THAN (31),        PARTITION p3 VALUES LESS THAN (41),        PARTITION p4 VALUES LESS THAN (51),        PARTITION p5 VALUES LESS THAN (61)    );

    合并后不再有p0分区。

    删除分区

    谨慎进行分区删除:

    ALTER TABLE employees    DROP PARTITION p4;

    移除分区

    彻底移除表的分区:

    ALTER TABLE employees    REMOVE PARTITIONing;

    Range分区为优化查询性能提供了权威工具,您的DBED专家乐于助惠,为您解决分区问题。

    转载地址:http://diqnz.baihongyu.com/

    你可能感兴趣的文章
    基于 HTML5 WebGL 的污水处理厂泵站自控系统
    查看>>
    [系列] Go gRPC 调试工具
    查看>>
    django-表单之模型表单渲染(六)
    查看>>
    c++之程序流程控制
    查看>>
    一位年轻而优秀的.NET开发者的成长点滴
    查看>>
    如何使用ABP进行软件开发(1) 基础概览
    查看>>
    Spark学习之SparkStreaming
    查看>>
    AlwaysOn配置时在连接步骤时报错(35250)
    查看>>
    排序算法之总结
    查看>>
    微软云Linux服务器 Mysql、tomcat远程连接错误解决办法
    查看>>
    Python数据分析(二): Numpy技巧 (2/4)
    查看>>
    09 . Python3之常用模块
    查看>>
    Python学习笔记-StatsModels 统计回归(3)模型数据的准备
    查看>>
    Velocity.js初步
    查看>>
    yarn出现“There are no scenarios ; must have at least one"
    查看>>
    nginx上配置phpmyadmin
    查看>>
    HustOJ二次开发之修改数据库连接池
    查看>>
    redis集群报错:(error) CLUSTERDOWN Hash slot not served
    查看>>
    一个JAVA应用启动缓慢问题排查 --来自jdk securerandom 的问候
    查看>>
    spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
    查看>>