Mysql 分区表基本操作和注意事项

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Mysql分区优势1、存储更多的数据2、优化查询3、并行处理4、快速删除数据5、更大的数据吞吐量

1、Mysql分区优势

1、存储更多的数据
2、优化查询
3、并行处理
4、快速删除数据
5、更大的数据吞吐量

2、分区的类型

  • range分区:根据一个连续的区间范围,将数据分散存储与不同的分区,支持对字段名或表达式进行分区
  • list分区 :根据给定的值列表,将数据分散存储到不同的分区,支持对字段名或者表达式进行分区
  • hash分区:根据给定的分区个数,结合一定的hash算法,将数据分散存储到不同的分区,可以使用用户自定义的函数
  • key分区:与hash分区类似,但是只能使用mysql自带的hash函数
  • columns分区:为解决MySQL5.5版本之前RANGE分区和LIST分区支持整数分区而在MySQL5.5版本新引入的分区类型 子分区:对数据表中的每个分区再次进行分区

、Mysql分区注意事项

1、分区键必须作为主键的一部分,因此分区键建议与原来表id作为联合主键!!!!!!!!!。
2、、查询条件里需包含分区键(非必选)
3、分区不要提前建太多,总数不能超过1024
4、分区的字段,必须是表上所有的唯一索引(或者主键索引)包含的字段的子集
5、range分区:分区字段必须是整型或者转换为整型,或者时间类型
6、当月分区不可删除
7、分区只能在当前基础上增加,不能反向增加分区(删除的分区,直接增加那个分区是不行的)

分区使用

1、创建分区

-- 创建分区表
CREATE TABLE `application_invoke_log` (
  `ID` bigint(20)  not null COMMENT 'ID',
  `SOURCE_IP` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '源请求IP地址',
  `APPKEY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发起请求的应用',
  `METHOD` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求方法',
  `PATH` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求路径',
  `ARG` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求参数',
  `RESPONSE_TIME` bigint(20) DEFAULT NULL COMMENT '响应时间',
  `INVOKE_RESULT` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '调用结果',
  `INVOKE_TIME` datetime not null COMMENT '调用时间',
`IS_BLOCK` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `IS_EXP` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `EXP_MSG` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`ID`, `INVOKE_TIME`) USING BTREE
  INDEX `APPKEY`(`APPKEY`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 comment = '应用调用日志'
 PARTITION by range COLUMNS(INVOKE_TIME)(
    partition p202208 values less than('20220901')
)

2、查看分区信息

select * from information_schema.PARTITIONS where  table_name = 'application_invoke_log'

3、对存在的分区表修改

alter table application_invoke_log
PARTITION by range columns (INVOKE_TIME)(
PARTITION p202204 VALUES less than ('20220501'),
PARTITION p202205 VALUES less than ('20220601'),
PARTITION p202206 VALUES less than ('20220701')
)

4、查看分区数据

EXPLAIN select * from application_invoke_log where INVOKE_TIME = '2022-04-15 16:53:03' 

5、对存在的表新增分区,注意分区值只能递增

alter table application_invoke_log add partition 
(partition p202208 values less than('20220901'))

6、删除分区

alter table application_invoke_log drop partition p202101;

7、清空分区数据

alter table application_invoke_log truncate partition p202201;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
监控 关系型数据库 MySQL
MySQL创建索引的注意事项
在数据库设计和优化中,索引的合理使用是提高查询性能和加速数据检索的关键因素之一。通过选择适当的列、了解数据分布、定期维护和监控索引性能,我们能够最大程度地发挥索引的优势,提高数据库的效率和响应速度。
108 0
|
5月前
|
监控 关系型数据库 MySQL
MySQL创建索引的注意事项
在索引的世界中,权衡是关键。权衡读写性能,权衡索引的数量和类型,权衡查询的频率和数据分布。通过谨慎的设计、定期的维护和持续的监控,我们能够确保索引在数据库中的角色得到最大的发挥,为应用提供更加高效和可靠的数据访问服务。在数据库优化的旅途中,索引是我们的得力助手,正确使用它将使数据库系统更具竞争力和可维护性。
40 0
|
4月前
|
分布式计算 DataWorks 关系型数据库
实时数仓 Hologres产品使用合集之如何将MySQL数据初始化到分区表中
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
|
17天前
|
存储 关系型数据库 MySQL
MySQL 字符字段长度设置详解:语法、注意事项和示例
MySQL 字符字段长度设置详解:语法、注意事项和示例
84 0
|
3月前
|
存储 关系型数据库 数据库
MySQL设计规约问题之是否可以使用分区表
MySQL设计规约问题之是否可以使用分区表
|
4月前
|
存储 关系型数据库 MySQL
MySQL 分区表
MySQL 分区表
46 4
|
4月前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之当需要将数据从ODPS同步到RDS,且ODPS表是二级分区表时,如何同步所有二级分区的数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
52 7
|
3月前
|
关系型数据库 MySQL Java
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
|
3月前
|
存储 关系型数据库 MySQL
MySQL删除索引的方法与注意事项
MySQL删除索引的方法与注意事项
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL】DQL-分组查询-语法&where与having的区别&注意事项&可cv例题语句
【MySQL】DQL-分组查询-语法&where与having的区别&注意事项&可cv例题语句
【MySQL】DQL-分组查询-语法&where与having的区别&注意事项&可cv例题语句