mysql 已有大数据量表进行分区踩坑

本文讲述了在MySQL中面对4亿数据的表,为提升查询效率尝试使用HASH分区但因字段类型限制转而采用KEY分区。在实践中发现KEY分区数据分布不均,通过调整分区数量为质数(如97)解决了问题。文中还对比了KEY分区与HASH分区的区别,并提供了查看分区表详情的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

mysql 表中已有 4 亿数据,为提高查询效率,需创建分区,一开始计划是创建 HASH 分区,结果报错:

ERROR 1659 (HY000): Field 'partno' is of a not allowed type for this type of partitioning

在这里插入图片描述

查询得知报错原因,HASH 分区只支持数字分区,而我要分区的字段是 varchar 类型,故改用 KEY 分区

二、解决

  1. KEY 分区语句
alter table TABLENAME PARTITION BY key(COLUMN) PARTITIONS NUM;

TABLENAME :表名
COLUMN:列名
NUM:分区数量

  1. 检查分区是否创建成功
EXPLAIN PARTITIONS SELECT * FROM `cars`

若成功,结果如下:
在这里插入图片描述

  1. 踩坑

拿小表测试 100 个分区发现,分区不均匀,一半分区有数据,一半没有数据,网上查询得知:key 分区,只有指定分区数目为质数,才能保证

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值