Mysql 表分区

时间:2022-02-28 18:37:33

是否支持分区:
mysql> show variables like '%partition%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| have_partition_engine | YES |
+-----------------------+-------+
1 row in set (0.00 sec)

如果没有看到变量have_partition_engine的值为YES,那么MySQL的版本就不支持分区。

创建分区表:

 DELIMITER // 

create table VMMoniterData (
id_ bigint not null AUTO_INCREMENT,
vmid varchar(75) null,
cpu varchar(75) null,
memory varchar(75) null,
bpsRead varchar(75) null,
bpsWrite varchar(75) null,
intranetRX0 varchar(75) null,
intranetRX1 varchar(75) null,
intranetWX0 varchar(75) null,
intranetWX1 varchar(75) null,
timeStamp datetime null,
PRIMARY KEY (id_,timeStamp)
) engine InnoDB PARTITION BY RANGE (TO_DAYS(timeStamp) ) (
PARTITION p1 VALUES LESS THAN ( TO_DAYS('20161101') ),
PARTITION p2 VALUES LESS THAN ( TO_DAYS('20161102') ),
PARTITION p3 VALUES LESS THAN ( TO_DAYS('20161103') ),
PARTITION p4 VALUES LESS THAN ( TO_DAYS('20161104') ),
PARTITION p5 VALUES LESS THAN ( TO_DAYS('20161105') ),
PARTITION p6 VALUES LESS THAN ( TO_DAYS('20161106') ),
PARTITION p7 VALUES LESS THAN ( TO_DAYS('20161107') ),
PARTITION p8 VALUES LESS THAN ( TO_DAYS('20161108') ),
PARTITION p9 VALUES LESS THAN ( TO_DAYS('20161109') ),
PARTITION p10 VALUES LESS THAN ( TO_DAYS('20161110') )
); //
DELIMITER ;

添加分区表:

ALTER TABLE VMMoniterData ADD PARTITION(PARTITION p315 VALUES LESS THAN (TO_DAYS('22190527')));

查看表分区情况:

SELECT
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
FROM
INFORMATION_SCHEMA.partitions
WHERE
TABLE_SCHEMA = schema()
AND TABLE_NAME='VMMoniterData';

添加分区最大值

ALTER TABLE VMMoniterData ADD PARTITION (PARTITION p11 VALUES LESS THAN maxvalue);

删除分区

alter table VMMoniterData drop partition p0;

每天自动添加分区

合并分区:

ALTER TABLE test REORGANIZE PARTITION p20161101,p20161102 INTO (
PARTITION p20161102 VALUES LESS THAN (TO_DAYS('20161102') )
);

拆分分区

ALTER TABLE test REORGANIZE PARTITION p20161102 INTO (
PARTITION p20161101 VALUES LESS THAN (TO_DAYS('20161101')),
PARTITION p20161102 VALUES LESS THAN (TO_DAYS('20161102'))
);

合并、拆分分区

http://www.kubiji.cn/topic-id1558.html

mysql 碎片产生、mysql innodb碎片整理

注:随着数据库数据量的变大,如果要清除某个月的数据,用delete命令删除,mysql不会释放空间,必须整理碎片或者用修改引擎来重建表,才会释放空间,但是由于数据量很大,每次重建都得10-12小时的时间,太长了,想到了用mysql分区来解决这种弊病,通过删除分区,可以直接删除数据文件,那当然也可以释放空间。

分区的相关知识我就先不讲了,就说两点

  1. 分区字段不要有空值,因为空值会默认到无用分区中,这样查询会多扫描分区。

  2. 查询条件最好要带着分区字段,不然性能会很低,需要在所有分区里扫一遍。

Mysql 表分区的更多相关文章

  1. MySQL表分区技术

    MySQL表分区技术 MySQL有4种分区类型: 1.RANGE 分区 - 连续区间的分区 - 基于属于一个给定连续区间的列值,把多行分配给分区: 2.LIST 分区 - 离散区间的分区 - 类似于按 ...

  2. Mysql 表分区和性能

    以下内容节选自<Mysql技术内幕InnoDB存储引擎> mysql表分区: 分区功能并不是所有存储引擎都支持的,如CSV.MERGE等就不支持.mysql数据库支持的分区类型为水平分区( ...

  3. Mysql表分区的选择与实践小结

    在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快.这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈. 一. 选择合适的解决方法 1. 分库分表. 分库 ...

  4. MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

    一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

  5. mysql表分区(摘自 MySQL表的四种分区类型)

    一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

  6. MySQL表分区

    MySQL的表分区 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以 ...

  7. mysql表分区、查看分区

    原文地址:http://blog.csdn.net/feihong247/article/details/7885199 一.       mysql分区简介 数据库分区 数据库分区是一种物理数据库设 ...

  8. MYSQL 表分区的 3 方法

    背景知识: 表分区是把逻辑上同一范围的数据保存到同一个文件中,就和超市一样,把同类商品放在同一个区域,把不同的商品放在不同的地方.不同的是超市中 是根据用途分类的,表分区是根据它的取值区间来分的. 分 ...

  9. mysql表分区简述

    一. 简介 数据库分区 数据库分区是一种物理数据库设计技术.虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用来说分区完全是 ...

随机推荐

  1. MesaSQLite数据库的简单使用方法

    前言部分 本文非原创 文章摘自:http://m.blog.csdn.net/blog/wsxzk123/17282325 数据库工具:MesaSQLite 一.创建数据库 1.创建数据库 MesaS ...

  2. RCP:美化基于eclipse3&period;7&period;2的RCP界面

    从e4开始,eclipse rcp界面具备了深度自定义的能力. 但是在eclipse3.7.2上,几乎没有提供能够用于修改界面的外部接口. 这里介绍一种方式来自定义你自己的eclipse rcp. 先 ...

  3. 邻接矩阵无向图&lpar;一&rpar;之 C语言详解

    本章介绍邻接矩阵无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

  4. 清北暑假模拟day2 之

    /* 现场代码,枚举每条边删除 */ #include<iostream> #include<cstdio> #include<string> #include&l ...

  5. postgresql大批量数据导入方法

    一直没有好好关注这个功能,昨天看了一下,数据库插入有瓶颈,今天研究了一下: 主要有以下方案: 1.使用copy从文件导入: copy table_001(a, b, "f", d, ...

  6. linux&lpar;3&rpar;磁盘与文件系统管理&sol;查看硬盘、内存空间&sol;文件系统的操作&sol; 文件的压缩和打包

    一.磁盘与文件系统管理 1.分区与文件系统分区:记录每一个分区的开始柱面和结束柱面主引导区(master boot recorder):记录分区的数据,记录硬盘里所有的分区信息分区划分好后,要将分区格 ...

  7. json属性名必须加引号的讨论

    优质参考资料: 1.https://blog.csdn.net/Goskalrie/article/details/52151175 2.https://blog.csdn.net/weixin_42 ...

  8. BitAdminCore框架更新日志20180522

    20180522更新内容 本次更新增加了excel导入导出示例,QuerySuite组件实现导出导出,用最少代码,做最多的事,代码就是如此简单. 计划修改内容 1.人脸登录功能需要重构,目前功能不完善 ...

  9. 将禅道部署到腾讯云linux 上

    部署环境 :linux(腾讯云),用到了 xshell   FileZilla 使用禅道集成环境lampp直接部署 1.首先下载 lampp j集成环境包.https://sourceforge.ne ...

  10. android高速上手(三)经常使用控件使用

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangpeifeng669/article/details/26288387 完毕了android的 ...