本站承诺永不接任何虚假欺骗、联盟广告、弹窗广告、病毒广告、诱导充值等影响用户体验的广告,广告屏蔽插件会影响本站部分功能,还请不要屏蔽本站广告,感谢支持!

当前位置:首页 / 正文

2019-10-29 | 编程技术 | 17120 次阅读 | 等你评论 | 9 次点赞 | 繁体

一、背景

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

ERROR 1659 (HY000): Field '**' 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 分区,只有指定分区数目为质数,才能保证每个分区都有数据。

小表测试分区 97 个,分布均匀。

附:100以内质数表

100以内质数表

三、其他

  1. KEY 分区和 HASH 分区的区别

KEY 分区和 HASH 分区相似,但是 KEY 分区支持除 text 和 BLOB 之外的所有数据类型的分区,而 HASH 分区只支持数字分区,KEY 分区不允许使用用户自定义的表达式进行分区,KEY 分区使用系统提供的 HASH 函数进行分区。

当表中存在主键或者唯一键时,如果创建 key 分区时没有指定字段系统默认会首选主键列作为分区字列,如果不存在主键列会选择非空唯一键列作为分区列,注意唯一列作为分区列唯一列不能为null。

  1. 查看已分区表的详情
SELECT *
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 'TABLE_NAME';

参考文章:
https://blog.csdn.net/echo_hello_world/article/details/80693224
https://bbs.csdn.net/topics/390857704
https://blog.csdn.net/jhq0113/article/details/44593511

标签: mysql数据库

猜你喜欢
如何定位Mysql中CPU占用高的查询语句
今天 mysql 服务器突然 CPU 告警,记录一下问题查找的过程第一步查看具体是哪个线程占用CPU最高1、在 Linux 中使用 top 命令找到 mysql 进程 PID2、指定进程 PID...
mysql8利用CTE特性实现递归查询
递归查询分为父子查询和子父查询。父子查询: 根据父 id 查询下面所有子节点数据;子父查询: 根据子 id 查询上面所有父节点数据;下边就利用 mysql8 新增语法实现递归查询,表结构及数...
mysql数据库删除重复的数据只保留一条
问题引入假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name。现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有...
Mysql 窗口函数学习
窗口函数是数据库查询中的一个经典场景,在解决某些特定问题时甚至是必须的。个人认为,在单纯的数据库查询语句层面【即不考虑 DML、SQL 调优、索引等进阶】,窗口函数可看作是考察求职者 SQL 功...
部署 Monit 来监控服务
Monit 是一个轻量的监控工具,大小不到 2M,可运行于 linux 之上。 ![图片alt](https://cdn.wangtwothree.com/imgur/KyUrIC8.png '
Python3还有哪些未Get的潜藏技能?
在 Python 3 推出后,人们开始逐步将基于 Python 2 的代码迁移至 Python 3 。但在迁移过程中,很多代码都未能使用到 Python 3 提供的新功能。本文作者介绍了相关功能的介绍
Win10锁屏壁纸怎么提取保存到本地
Win10 默认的锁屏方式变成了壁纸锁屏,而且每次锁屏的壁纸都会不一样,这些壁纸非常精美,看起来比 win10 本身自带的桌面壁纸还要出色,但是通常情况下我们很难找到这些锁屏壁纸的位置,如何保存这些高
Typecho纯代码生成sitemap站点地图
想要实现 Typecho 纯代码生成 sitemap 站点地图只需要 2 步就够了。 1、在博客主题目录新建 sitemap.php 页面,放入以下代码: ```
分享几个免费 IP 定位 api
在做定位的朋友,如果只是单纯的想获取地址而又不想集成高德等第三方 sdk,可以试试以下地址: ``` https://ip.seeip.org/geoip https://ip.seeip.or
(首次提交评论需审核通过才会显示,请勿重复提交)