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 分区 less than_mysql分区相关推荐

  1. mysql 表分区 django_MySQL partition分区I

    Mysql5.1已经发行很久了,本文根据官方文档的翻译和自己的一些测试,对Mysql分区表的局限性做了一些总结,因为个人能力以及测试环境的原因,有可能有错误的地方,还请大家看到能及时指出,当然有兴趣的 ...

  2. MySQL数据库分表分区

    防伪码:当你终于沉默,成熟才刚刚开始. 为什么要分表和分区? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且 由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性 ...

  3. Mysql PARTITION 数据表分区技术日期

    参考:http://www.sunzhenghua.com/mysql-myisam-innodb-partition-range-list-hash 在这一章节里, 我们来了解下 Mysql 中的分 ...

  4. mysql 配置分区_Mysql的分区配置实验

    /** *mysql 数据分区实验 *@auther:luowen *@time:2013-07-26*/ //1.创建分区表 /*分区类型 1.range分区(按照一段区间分区) 2.list分区( ...

  5. mysql数据库建新分区_mysql数据库分区

    日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕.分表和表分 ...

  6. mysql使用Navicat创建分区

    mysql使用Navicat创建分区 打开Navicat,创建数据库,并点击创建表,选择选项 创建分区 注:在用字段时,需将字段设置为索引,且每个分区必须有取值  查看分区是否创建成功 先向表中插入数 ...

  7. MySQL调优(六):分区设计,分区优化案例

    上节课没讲完的一个案例 优化 limit 分页 在很多应用场景中我们需要将数据进行分页,一般会使用limit加上偏移量的方法实现,同时加上合适的orderby 的子句,如果这种方式有索引的帮助,效率通 ...

  8. Mysql大数据中表分区的应用

    一.支持Mysql表分区需要MYSQL版本为5.1以上,含5.1~ 二.表分区的作用:增加MYSQL的执行效率,可以在以下几点分析表分区是如何增加MYSQL的执行效率的. 1.与单个磁盘或文件系统分区 ...

  9. MySql,Sql Server分区技术浅析

    一.MySql MySql在5.1以后的版本中加入了分区技术,其不同于以往的分表技术,之前的分表技术是把一张大的表水平(按照一定的逻辑)分成多张表,比如如果我们的User表中有1000万条数据,那如果 ...

最新文章

  1. Android TabLayout添加自定义分割线并且可以修改分割线高度
  2. ways to improve your presentation by your own
  3. Jmeter中JDBC链接配置 JDBC Connection Configuration
  4. 查看当前机器.net 版本的方法
  5. JS 小知识点汇总
  6. js-document对象
  7. 深入探讨SDN拓扑发现机制:新的攻击及实践对策【SDN拓扑】(上)
  8. oracle8i+下载,oracle database 8i, 9i,10g, 11g正确下载地址
  9. Docker与虚拟机技术
  10. PAT甲级1012 (结构体,排序)
  11. P1052 过河 线性dp
  12. 【转】vista下SMB共享的解决办法
  13. python网易云歌词爬虫_用python爬取网易云音乐歌曲的歌词
  14. C++中的取地址符()
  15. 安卓手机使用VNET抓包京东wskey
  16. linux fedora 24 使用 ibus 智能拼音 输入 补全 英文
  17. vim 去掉黄色阴影
  18. VPN、IPSEC、AH、ESP、IKE、DSVPN
  19. html链接怎么恢复,Word文档中目录的超链接取消后怎么样恢复?
  20. 虚拟机booting from hard disk_一分钟带您快速了解虚拟机软件

热门文章

  1. APICloud平台常用技术点汇总详解
  2. 环境问题-无外接显示屏(虚拟显示屏)远程控制Ubuntu
  3. 身体指数bmi流程图_【新城校区】新生体检丨你了解你的身体吗?
  4. 手机连接电脑服务器未响应怎么解决办法,电脑DNS服务器未响应怎么处理呢?
  5. 穹顶之下,我们该何去何从?
  6. go语言工作目录都有什么?GOPATH下的目录结构
  7. 嵌入式软件开发为什么需要DevOps?
  8. Nginx安装配置及使用方法
  9. 不可重现的bug如何处理
  10. ubuntu16.04 64位和hi3519SDK安装记录