mysql分区表详解

Posted autofelix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql分区表详解相关的知识,希望对你有一定的参考价值。

〝 古人学问遗无力,少壮功夫老始成 〞

在公司业务发展到一定情况后,我们需要对mysql的海量数据进行分表存档,方便后期进行管理,而对于mysql的分表情况要试业务而定,大公司如果日志表一般会按照一天分一次,也会按照年分,阿里经过实战后表示,当表中数据超过500万条的时候,就需要分表,不然会影响到数据的读写性能。如果大家觉得文章有帮助,请给博主一波关注和评论。

目录

一、查看是否支持分区表

二、范围分区

三、 哈希分区

四、时间分区

五、删除分区

六、查看分区情况

七、 归档分区数据


一、查看是否支持分区表

show plugins;

二、范围分区

CREATE TABLE `表名`(
    -- 数据字段
)engine=INNODB
PARTITION BY RANGE(`字段名称`) (
    PARTITION 分表名称 VALUES LESS THAN(范围),
    PARTITION 分表名称 VALUES LESS THAN(范围)
);

三、 哈希分区

create table `表名`(
    -- 数据字段
)engine=INNODB
PARTITION BY HASH(UNIX TIMESTAMP(`字段名称`)) PATITIONS 4;

四、时间分区

create table `表名`(
    -- 数据字段
)engine=INNODB
PARTITION BY RANGE(YEAR(`字段名称`))(
    PARTITION p0 VALUES LESS THAN(2017),
    PARTITION p1 VALUES LESS THAN(2018),
    PARTITION p2 VALUES LESS THAN(2019)
);

五、删除分区

ALTER TABLE `表名` DROP PARTITION 分表名称;

六、查看分区情况

SELECT
    table_name,partition_name,partition_description,table_rows
FROM
    information_schema.`PARTITIONS`
WHERE table_name = '表名';

七、 归档分区数据

  • mysql数据库版本需要大于等于5.7
-- 分区归档操作步骤
-- 1.新建和分区表字段一致的数据表 归档表前缀为 arch_
CREATE TABLE `归档表表名`(

)engine=INNODB
-- 2.进行数据交换 p0为分区名
ALTER TABLE `原数据表表名` exchange PARTITION p0 WITH TABLE `归档表表名`;
-- 3.删除分区,避免对数据的再次写入
ALTER TABLE `原数据表表名` DROP PARTITION p0;
-- 4.将归档表引擎设置为 archive  在检表语句中mysql引擎必须和原数据表引擎一致,否则无法进行数据交换
ALTER TABLE `归档表表名` ENGINE=ARCHIVE;

以上是关于mysql分区表详解的主要内容,如果未能解决你的问题,请参考以下文章

mysql表分区详解

MYSQL分区表详解

mysql数据库分区功能及实例详解

MySQL进阶实战8,分区表详解

mysql分区表详解

mysql分区表详解