实战mysql分区(PARTITION)

MyBatis的数据库分区与分表 1.背景介绍 MyBatis的数据库分区与分表 作者:禅与计算机程序设计艺术 背景介绍 1.1 为什么需要数据库分区与分表 在构建企业级应用时,数据库是一个关键组件,负责存储和管 阅读详情

前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)

这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。

 

数据太大,决定用分区来重构。


如果你发现是empty,说明你的mysql版本不够,分区至少要5.1

 

下面针对业务查询,决定用时间来做range分区(还有list,hash等类型),一个月一个区.

按照RANGE分区的表是通过如下一种方式进行分区的,每个分区包含那些分区表达式的值位于一个给定的连续区间内的行。这些区间要连续且不能相互重叠,使用VALUES LESS THAN操作符来进行定义。

新建一个表:

 

Sql代码  收藏代码
  1. CREATE TABLE `xxxxxxxx` (     
  2. `crttm` int(11) NOT NULL,     
  3. `srvid` int(11) NOT NULL,     
  4. `evtid` int(11) NOT NULL,     
  5. `aid` int(11) NOT NULL,     
  6. `rid` int(11) NOT NULL,     
  7. `itmid` int(11) NOT NULL,     
  8. `itmnum` int(11) NOT NULL,     
  9. `gdtype` int(11) NOT NULL,     
  10. `gdnum` int(11) NOT NULL,     
  11. `islmt` int(11) NOT NULL,  
  12. KEY `crttm` (`crttm`),  
  13.   KEY `itemid` (`itmid`),  
  14.   KEY `srvid` (`srvid`),  
  15.   KEY `gdtype` (`gdtype`)  
  16. ) ENGINE=myisam DEFAULT CHARSET=utf8  
  17. PARTITION BY RANGE (crttm)   
  18. (  
  19. PARTITION p201303 VALUES LESS THAN (unix_timestamp('2013-04-01')),  
  20. PARTITION p201304 VALUES LESS THAN (unix_timestamp('2013-05-01')),  
  21. PARTITION p201305 VALUES LESS THAN (unix_timestamp('2013-06-01')),  
  22. PARTITION p201306 VALUES LESS THAN (unix_timestamp('2013-07-01')),  
  23. PARTITION p201307 VALUES LESS THAN (unix_timestamp('2013-08-01')),  
  24. PARTITION p201308 VALUES LESS THAN (unix_timestamp('2013-09-01')),  
  25. PARTITION p201309 VALUES LESS THAN (unix_timestamp('2013-10-01')),  
  26. PARTITION p201310 VALUES LESS THAN (unix_timestamp('2013-11-01')),  
  27. PARTITION p201311 VALUES LESS THAN (unix_timestamp('2013-12-01')),  
  28. PARTITION p201312 VALUES LESS THAN (unix_timestamp('2014-01-01')),  
  29. PARTITION p201401 VALUES LESS THAN (unix_timestamp('2014-02-01'))  
  30. );  

 

注意: 

 

 

1. primary key和unique key必须包含在分区key的一部分,否则在创建primary key和unique index时会报”ERROR 1503 (HY000)“

mysql> create unique index idx_employees1_job_code on employees1(job_code);
ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the table's partitioning function
或
mysql> ALTER TABLE `skate`.`employees1` ADD PRIMARY KEY (`id`) ;
ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function

2. 范围分区添加分区只能在最大值后面追加分区
3. 所有分区的engine必须一样
4. 范围分区分区字段:integer、数值表达式、日期列,日期函数表达式(如year(),to_days(),to_seconds(),unix_timestamp())

 

将旧的表数据导入到新表后,看到新表的数据都分布到不同的区了!



 

维护命令:


添加分区

Sql代码  收藏代码
  1. alter table xxxxxxx add partition (partition p0 values less than(1991));  //只能添加大于分区键的分区  

 

 

删除分区

Sql代码  收藏代码
  1. alter table xxxxxxx drop partition p0; //可以删除任意分区  

 

 

删除分区数据

Sql代码  收藏代码
  1. alter table xxxxxx  truncate partition p1,p2;  
  2. alter table xxxxxx  truncate partition all;  
  3. 或  
  4. delete from xxxxxx where separated < '2006-01-01' or (separated >= '2006-01-01' and separated<'2011-01-01');  

 

 

重定义分区(包括重命名分区,伴随移动数据;合并分区)

Sql代码  收藏代码
  1. alter table xxxxx reorganize partition p1,p3,p4 into (partition pm1 values less than(2006),  
  2. partition pm2 values less than(2011));  

 
rebuild重建分区

Sql代码  收藏代码
  1. alter  table xxxxxx rebuild partition pm1/all; //相当于drop所有记录,然后再reinsert;可以解决磁盘碎片  

 

 

优化表

Sql代码  收藏代码
  1. alter  table tt2 optimize partition pm1; //在大量delete表数据后,可以回收空间和碎片整理。但在5.5.30后支持。在5.5.30之前可以通过recreate+analyze来替代,如果用rebuild+analyze速度慢  

 

analzye表

Sql代码  收藏代码
  1. alter  table xxxxxx analyze partition pm1/all;  

 

check表

Sql代码  收藏代码
  1. alter  table xxxxxx check partition pm1/all;  

 
 

Sql代码  收藏代码
  1. show create table employees2;  //查看分区表的定义  
  2. show table status like 'employees2'\G;    //查看表时候是分区表 如“Create_options: partitioned”  
  3. select * from information_schema.KEY_COLUMN_USAGE where table_name='employees2';   //查看索引  
  4. SELECT * FROM information_schema.partitions WHERE table_name='employees2'   //查看分区表  
  5. explain partitions select * from employees2 where separated < '1990-01-01' or separated > '2016-01-01';   //查看分区是否被select使用  
网络管理与维护综合实训2:基于AD证书服务构建企业内部HTTPS安全访问体系 本实训项目通过在Windows Server 2022环境下搭建AD域、DNS服务和Web服务器,实现安全的企业网站访问。主要内容包括:在两台服务器上安装操作系统并配置网络;在S1服务器上部署活动目录域、证书服务和Web服务;创建两个网站(HTTP和HTTPS);配置DNS记录和SSL证书;设置防火墙规则限制HTTP访问而允许HTTPS访问。通过实践掌握了AD证书管理、DNS配置、Web服务器设置及防火墙规则配置等关键技能,为网站管理工作奠定了基础,同时认识到证书管理在Web安全中的重要性。 阅读详情

相关推荐

MySQL数据库:分区Partition

分区就是将表的数据按照特定规则存放在不同的区域,也就是将表的数据文件分割成多个小块,在查询数据的时候,只要知道数据数据存储在哪些区域,然后直接在对应的区域进行查询,不需要对表数据进行全部的查询,提高查询的性能。同时,如果表数据特别大,一个磁盘磁盘放不下时,我们也可以将数据分配到不同的磁盘去,解决存储瓶颈的问题,利用多个磁盘,也能够提高磁盘的IO效率,提高数据库的性能 常见的分区类型有:Range分区、List分区、Hash分区、Key分区

张维鹏的博客 2万+

综合能源系统多时间尺度优化调度!诸多创新点让你抓住审稿人的心!

主要介绍综合能源系统的设备组成结构,并针对屋顶光伏系统、冷-热-电联供系统中的燃气轮机、燃气锅炉、光伏溴化锂制冷机、卡琳娜余热发电、中央空调系统,以及外网交互系统的配电网与天然气管网交互关系进行数学建模。1) 源-荷-储协同调度:研究屋顶光伏、燃气轮机、燃气锅炉等源侧设备,中央空调、电-热-冷负荷、可平移电负荷、可削减温控负荷等负荷侧资源,以及储能系统、电动汽车等储能侧设备的协同调度,以提高风光消纳能力,满足社会能源需求。通过电转热、电转冷、电转气等多能耦合方式,可进一步促进可再生能源的应用与发展。

weixin_48747334的博客 1488

spark的转换算子2

1)coalesce def coalesce(numPartitions: Int, shuffle: Boolean = false)(implicit ord: Ordering[T] = null): RDD[T] 该函数用于将RDD进行重分区,使用HashPartitioner。 第一个参数为重分区的数目,第二个为是否进行shuffle,默认为false; 作用 缩减分区数,用于大数据集过滤后,提高小数据集的执行效率。 val ListRDD: RDD[Int] = context.makeRDD

changshupx的博客 2093

【一张图系列】别再混淆了!5分钟搞懂ERP、MES、PLC的职责边界与数据流》

《ERP、MES、PLC系统边界与协作解析》一文清晰阐述了制造业三大核心系统的角色分工与数据流转。文章将ERP比作企业"大脑"负责战略规划,MES作为车间"指挥官"负责执行调度,PLC则是设备"士兵"执行具体操作。通过一张架构图展示了从计划层到控制层的完整信息流:蓝色箭头表示指令下行(ERP→MES→PLC),橙色箭头代表数据上行反馈(PLC→MES→ERP)。文章强调理清系统边界对数字化转型、部门协作和项目实施的关键作用,并预告下期将深入解析ME

「东哥说MES」 专注于MES制造执行系统,为你拆解核心架构、功能模块及与ERP/PLC的集成逻辑。提供从入门到精通的系列干货、精选行业报告与实用工具,构建你的数字化知识体系,关注我,用实战经验照亮你的数字化之路。 969

千兆以太网的接收和crc校验

解析该以太网帧,包括统计该以太网帧长度+过滤功能(端口号对不对,是否为udp协议)+CRC校验,将解析结果存入状态fifo,一旦状态fifo开始有数,就开始开启读过程,读过程开始时,首先读状态fifo,根据从状态fifo里面读出的以太网帧长度,来读数据fifo(这样能够防止跨帧读),然后在根据状态fifo里面读出的crc校验正确标志和过滤标志,来确定是否将数据fifo读出来的数据送给下一个模块。改掉之后在抓一下,可以看到抓出来的数据完全正确,从最后开始看,除去4个crc校验的尾巴,数据是到255结束的。

weixin_45284871的博客 2738

mysql表分区(partition)

一、为什么不用视图(view) 视图的优点: 1.第一个显著优点就是它简化了操作。此时我们完全不用关心视图是怎么处理数据的,我们只需要知道如何使用这个结果集即可,视图相当于一个中间层。 2.第二个显著优点就是它更加安全。比如我们可以让用户有权去访问某个视图,但是不能访问原表,这样就可以起到保护原表中某些数据的作用。 3.我们之后会接触到管理权限,权限是无法细致到某一个列的,通过视图,则很容易实现。 4.第三个显著优点就是降低耦合。假如我们以后要修改原表的结构,那么我们可以通过修改视图的定义即可,而

rakunjo的博客 8195

17|CI/CD 集成与质量门禁:让精准测试进入发布流水线

本文讲解精准测试如何接入 CI/CD 流水线,并通过质量门禁辅助发布决策。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 64

add partition mysql_实战mysql分区(PARTITION)

前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。数据太大,决定用分区来重构。如果你发现是empty,说明你的mysql版本不够,分区至少要5.1下面针对业务查询,决定用时间来做range分区(还有list,hash等...

weixin_39876592的博客 2950

喷涂机器人系列编程:ABB IRB 5500_(7).喷涂质量控制与优化

通过编程手段对ABB IRB 5500喷涂机器人进行质量控制和优化,可以显著提高喷涂的均匀性和附着力,减少涂层缺陷。具体的方法包括喷涂参数的调整、路径规划的优化、喷涂效果的检测与反馈,以及喷涂参数的动态调整。综合评估系统可以进一步确保喷涂质量的稳定性和一致性,帮助汽车制造企业提高产品质量和生产效率。

zhubeibei168的博客 851

芒果YOLO11改进21:检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 790

mysql truncate partition_实战mysql分区(PARTITION)

前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。数据太大,决定用分区来重构。如果你发现是empty,说明你的mysql版本不够,分区至少要5.1下面针对业务查询,决定用时间来做range分区(还有list,hash等...

weixin_39719127的博客 1834

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mysql 怎么按旬来进行分区_实战mysql分区(PARTITION)

前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。数据太大,决定用分区来重构。如果你发现是empty,说明你的mysql版本不够,分区至少要5.1下面针对业务查询,决定用时间来做range分区(还有list,hash等...

weixin_35276012的博客 389

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

mysql分区 seect_实战mysql分区(PARTITION)

前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。数据太大,决定用分区来重构。如果你发现是empty,说明你的mysql版本不够,分区至少要5.1下面针对业务查询,决定用时间来做range分区(还有list,hash等...

weixin_31159999的博客 205

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

from mysql partition select_【转载】实战mysql分区(PARTITION)

转载地址:http://lobert.iteye.com/blog/1955841前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。数据太大,决定用分区来重构。如果你发现是empty,说明你的mysql版本不够,分区至...

weixin_36176188的博客 406

mysql 怎么按旬来进行分区_【转载】实战mysql分区(PARTITION)

转载地址:http://lobert.iteye.com/blog/1955841前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。数据太大,决定用分区来重构。如果你发现是empty,说明你的mysql版本不够,分区至...

weixin_31085635的博客 361

MySQL分区(Partition)实战指南

大表必备:MySQL分区

m0_59465624的博客 231

【转载】实战mysql分区(PARTITION)

转载地址:http://lobert.iteye.com/blog/1955841 前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才) 这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。 数据太大,决定用分区来重构。 如果你发现是empty,说明你的mysql...

weixin_34384915的博客 80
上一篇: mysql的分区技术详细介绍
下一篇: MySQL的表分区详解 - 查看分区数据量,查看全库数据量
chenrui310
博客等级 码龄15年 165粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值