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

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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
开发项目时使用MySQL设计库表时的流程和注意事项如下: 1.需求分析 首先,需要进行需求分析,明确需求和业务流程。分析业务场景,确定需要存储哪些数据,以及数据之间的关系。在这一步骤中,需要与业务人员进行沟通,了解业务需求,梳理业务流程。 2.概念设计 在需求分析的基础上,进行概念设计。根据需求设计数据库的概念模型,确定各个实体和实体之间的关系,绘制E-R图。 3.逻辑设计 在概念设计的基础上,进行逻辑设计。将概念模型转换为数据库的逻辑模型,确定表的属性、主键、外键和索引等信息,绘制逻辑模型图。 4.物理设计 在逻辑设计的基础上,进行物理设计。确定数据表的存储引擎、分区方式、表空间等信息,进行表的创建、字段的定义、索引的创建等操作。 5.测试和优化 完成库表设计后,需要进行测试和优化。对表的结构、索引、SQL语句等进行优化,提高数据库的性能和稳定性。 注意事项: 1.数据库设计需要遵循范式化设计原则,避免数据冗余,提高数据的一致性和完整性。 2.需要选择合适的存储引擎,根据业务场景确定表的结构和索引。 3.尽量避免使用过多的索引,因为过多的索引会影响数据库的性能和稳定性。 4.需要对表的字段进行类型、大小、精度等方面的合理设置,避免数据类型转换和存储空间浪费。 5.需要对SQL语句进行优化,避免全表扫描和大量的临时表操作。 6.需要对数据库进行备份和恢复操作,保证数据的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白鸽呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值