美文网首页
mysql分区

mysql分区

作者: 浅色夏末Summer_0c72 | 来源:发表于2021-01-21 09:12 被阅读0次

mysql分区

1、分区的字段,必须是表上所有的唯一索引(或者主键索引)包含的字段的子集
2、range分区:分区字段必须是整型或者转换为整型,
按照字段的区间划分数据的归属,典型的就是按照时间维度的月份分区
操作步骤:
一亿条数据

1、更改主键(757s)

ALTER TABLE `pm_hba_port` DROP PRIMARY KEY, ADD PRIMARY KEY (`id`, `insert_time`);

2、分27个区(2571s==42min)

ALTER TABLE pm_hba_port
PARTITION BY RANGE(TO_DAYS(insert_time))
(
PARTITION p19800101 VALUES LESS THAN (TO_DAYS('19800101')),

PARTITION p19850101 VALUES LESS THAN (TO_DAYS('19850101')),

PARTITION p19900101 VALUES LESS THAN (TO_DAYS('19900101')) ,

PARTITION p19950101 VALUES LESS THAN (TO_DAYS('19950101')) ,

 PARTITION p20000101 VALUES LESS THAN (TO_DAYS('20000101') ),

PARTITION p20050101 VALUES LESS THAN (TO_DAYS('20050101')) ,

PARTITION p20100101 VALUES LESS THAN (TO_DAYS('20100101')) ,

PARTITION p20150101 VALUES LESS THAN (TO_DAYS('20150101')) ,

PARTITION p20200101 VALUES LESS THAN (TO_DAYS('20200101')) ,

PARTITION p20250101 VALUES LESS THAN (TO_DAYS('20250101')) ,
PARTITION p20300101 VALUES LESS THAN (TO_DAYS('20300101')) ,
PARTITION p20350101 VALUES LESS THAN (TO_DAYS('20350101')) ,

PARTITION p20400101 VALUES LESS THAN (TO_DAYS('20400101')) ,

PARTITION p20450101 VALUES LESS THAN (TO_DAYS('20450101')) ,

PARTITION p20500101 VALUES LESS THAN (TO_DAYS('20500101')) ,
PARTITION p20550101 VALUES LESS THAN (TO_DAYS('20550101')) ,
PARTITION p20630101 VALUES LESS THAN (TO_DAYS('20630101')), 

PARTITION p20800101 VALUES LESS THAN (TO_DAYS('20800101')) ,

PARTITION p21000101 VALUES LESS THAN (TO_DAYS('21000101')) ,

PARTITION p21100101 VALUES LESS THAN (TO_DAYS('21100101')) ,
PARTITION p21200101 VALUES LESS THAN (TO_DAYS('21200101')) ,
PARTITION p21300101 VALUES LESS THAN (TO_DAYS('21300101')), 

PARTITION p21400101 VALUES LESS THAN (TO_DAYS('21400101')) ,

PARTITION p21500101 VALUES LESS THAN (TO_DAYS('21500101')) ,

PARTITION p21600101 VALUES LESS THAN (TO_DAYS('21600101')) ,
PARTITION p21700101 VALUES LESS THAN (TO_DAYS('21700101')) ,
PARTITION p21770101 VALUES LESS THAN (TO_DAYS('21770101'))
);

3、新增一个分区(17s)

采用存储过程
CREATE DEFINER=`root`@`%` PROCEDURE `pm_hba_port`()
BEGIN
/* 事务回滚,其实放这里没什么作用,ALTER TABLE是隐式提交,回滚不了的。*/
    DECLARE
        EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
    START TRANSACTION;
/* 到系统表查出这个表的最大分区,得到最大分区的日期。在创建分区的时候,名称就以日期格式存放,方便后面维护 */
    SELECT REPLACE
        ( partition_name, 'p', '' ) INTO @P12_Name 
    FROM
        INFORMATION_SCHEMA.PARTITIONS 
    WHERE
        table_name = 'pm_hba_port' 
    ORDER BY
        partition_ordinal_position DESC 
        LIMIT 1;
    SELECT
        date_format( NOW(), '%Y%m%d' ) INTO @now_time;
    IF
        unix_timestamp( @now_time )>= unix_timestamp( @P12_Name ) THEN
            
            SET @Max_date = DATE(
            DATE_ADD( @now_time + 0, INTERVAL 1 DAY ))+ 0;
        ELSE 
            SET @Max_date = DATE(
            DATE_ADD( @P12_Name + 0, INTERVAL 1 DAY ))+ 0;
        
    END IF;
    
    SET @s1 = CONCAT( 'ALTER TABLE pm_hba_port ADD PARTITION (PARTITION p', @Max_date, ' VALUES LESS THAN (TO_DAYS (''', DATE( @Max_date ), ''')))' );
/* 输出查看增加分区语句*/
    SELECT
        @s1;
    PREPARE stmt2 
    FROM
        @s1;
    EXECUTE stmt2;
    DEALLOCATE PREPARE stmt2;
    COMMIT;

END

相关文章

  • MySQL分区表

    确认mysql是否支持分区表 mysql分区表的特点 创建mysql数据表为hash表 常用mysql分区的类型 ...

  • mysql分库分表

    课程内容 mysql分区 水平切分 垂直切分 1. mysql分区 1.1 什么是分区? mysql数据库中的数据...

  • mysql表分区

    mysql表分区主要分为RANGE分区,LIST分区,HASH分区,LINEAR HASH分区,KEY分区 目前,...

  • 对MySQL交换分区的实践

    前言 在介绍交换分区之前,我们先了解一下 mysql 分区。 数据库的分区有两种:水平分区和垂直分区。而MySQL...

  • Mysql分区

    介绍 Mysql5.5只支持水平分区,还不支持垂直分区。MySQL分区不能与使用 MERGE,CSV或 FEDER...

  • mysql分区

    mysql分区 Mysql支持水平分区,并不支持垂直分区;水平分区:指将同一表中不同行的记录分配到不同的物理文件中...

  • Mysql分区分析

    关于什么是分区和分表,可以先参考下面前两篇文章。 MySQL 分库分表与分区的区别和思考搞懂MySQL分区MySQ...

  • MySQL分区表介绍

    最近一直在复习MySQL分区表相关的知识,就简单整理下读书笔记。下面我们先来对mysql分区简单介绍下。 分区的概...

  • MySQL的分区、分表、集群、优化

    MySQL的分区 MySQL分区表是在数据库层面,MySQL自己实现的分表功能,在很大程度上简化了分表的难度。物理...

  • MySQL分区-Range分区

    在阐述MySQL分区时,我们需要先来了解一下分区的概念是什么,它的优势在哪里,是如何区分类型的。 1.分区概述 在...

网友评论

      本文标题:mysql分区

      本文链接:https://www.haomeiwen.com/subject/nmakzktx.html