mysql hash分区 子分区_mysql分区管理 - hash分区
hash分区的目的是将数据按照某列进行hash计算后更加均匀的分散到各个分区,相比,range和list分区来说,hash分区不需要明确指定一个给定的列值或者列值集合
应该在保存在哪个分区,mysql会自动按照hash计算后完成这些工作,我们只需要基于将要进行hash的列值指定一个列或者表达式,以及可选的指定要分区的表总的分区数量。
下面我们举一个例子来说,hash分区如何创建。首先我们创建如下的表格:hash_partition_tbl,并插入几条记录到表中,如下所示:
我们也同时看一下,对应的表空间文件是如何分布的(注意,我们已经设置了innodb_file_per_table=1,即每个表单独一个ibd文件),我们在对应的datadir目录下可以看到:
由于我们是分成4个hash区,因此可以看到四个表空间文件,分别是hash_partition_tab#p#pi.ibd,i=0,1,2,3。
这里的hash分区的确定按照如下规则:
mod(YEAR(‘2012-05-01’),4) = mod (2012,4) = 0, 在分区p0;
mod(YEAR(‘2016-05-01’),4) = mod (2016,4) = 0, 在分区p0;
mod(YEAR(‘2010-05-01’),4) = mod (2010,4) = 2, 在分区p2;
mod(YEAR(‘2011-05-01’),4) = mod (2011,4) = 3, 在分区p3;
因此,我们认为 p0有2个记录,p2和p3分别有1个记录,p1记录数为0,那么接下来我们通过查询information_schema.PARTITIONS表来验证。
之前我们知道range和list分区,如果表中存在primary key或者unique key,则对应分区的列必须是这些key的子集,那么对hash是否有同样的约束呢,字符类型的列是否可以作为hash分区?接下来我们立刻以实验为基础进行验证。
首先把之前的分区先删除掉,执行如下命令:
发现drop partition命令只能用在RANGE和LIST分区中。
现在我们把a设置为unique key,如果成功,则说明hash分区允许非unique key 作为hash的列,执行如下:
说明:如果将要分区的表有一个唯一的键,那么用来作为HASH用户函数的自变数或者主键的column_list的自变数的任意列都必须是那个键的一部分。
下面试一下,字符串列是否可以作为hash分区的列,按照上面的讨论和说明,我们认为是不行的,因为hash的计算本质是mod运算,必须是整数。实验如下:
实验证明:hash的分区必须是整数列。
可以通过下面的命令,进行重新分区:
alter table hash_partition_tbl partition by hash(a) partitions 4;
mysql hash分区 子分区_mysql分区管理 - hash分区相关推荐
- mysql range代表什么意思_MySQL数据表range分区例子
某些行业数据量的增长速度极快,随着数据库中数据量的急速膨胀,数据库的插入和查询效率越来越低.此时,除了程序代码和查询语句外,还得在数据库的结构上做点更改:在一个主读辅写的数据库中,当数据表数据超过10 ...
- linux 主分区转换 lvm,Linux磁盘管理,分区,格式化,lvm
df命令磁盘分区空间 du命令查看文件大小 磁盘分区 磁盘格式化 磁盘挂载mount 手动增加swap空间 lvm讲解 一.df命令磁盘分区空间 使用df可以查看文件系统的使用情况(即磁盘分区空间), ...
- linux逻辑分区最小值,linux 逻辑卷管理 调整分区大小
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 50 ...
- mysql code name作为字段_MySQL索引管理及执行计划
一.索引介绍 1.什么是索引  1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍 1)BTREE:B+树索 ...
- mysql 单表 子查询_MySQL基本SQL语句之单表查询、多表查询和子查询 | 旺旺知识库...
一.简单查询: 基本语法: SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * F ...
- mysql不支持子查询_MySQL不支持子查询优化一例
一创建表 create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);inser ...
- mysql连接代替子查询_MySQL优化之使用连接(join)代替子查询
使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询.这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询 ...
- mysql limit 后子查询_mysql 关于limit 子查询和获取某当天所有记录
今天写MYSQL 当有个需求用到limit 在子查询下使用.郁闷了竟然过不去.但只要转化就就可以.真是悲剧. update tbl set isoption=1 where userguid='ss ...
- mysql的where子查询_mysql子查询
原标题:mysql子查询 一.mysql子查询基本知识 子查询就是在原有的查询语句中,嵌入新的查询,来得到我们想要的结果集. 子查询一般分为:where型子查询.from型子查询和exists型子查询 ...
- mysql limit 后子查询_Mysql子查询用limit
执行带有Limit子查询是有问题的: SELECT * FROM task_and_device WHERE job_id IN (SELECT id FROM wx_device_task_job ...
最新文章
- [AVR]使用AVR单片机驱动舵机
- meteor从入门到精通_我已经大规模运行Meteor一年了。 这就是我所学到的。
- 理解单片机系统—汇编语言
- 家的味道,家的感觉!!!
- 配合OAuth2进行单设备登录拦截
- MIPS汇编实现冒泡排序法
- 大众考虑投资中国汽车零部件供应商 潜在目标包括国轩高科
- 2020 年的第一天,程序员鸭血粉丝又碰上生产事故
- 绩效考核及评估活动的实施步骤及疑难问题汇编
- python实现电脑自动开机_python自动循环定时开关机(非重启)测试
- HL-1208机器清零方法
- 大数据在人力资源管理当中的应用
- Tasker Android系统增强神器,Android系统增强神器 Tasker
- C语言程序找零问题怎么运行,C语言找零问题
- 机器学习相关问题与资源下载。
- latex如何更改某一段落的字体_LaTeX 设置字体
- 全国计算机等级考试与软考的区别,如何区分计算机等级考试和软考两者有何区别...
- python用stomp扩展连接activemq(千千万万要注意,默认端口是61613,不是62613)
- ora2pg 导出Oracle数据
- 用于图像识别的神经网络,以及5大应用场景
热门文章
- 【物理应用】基于matlab非序贯蒙特卡洛法评估风电系统【含matlab源码 766期】
- 自我监督学习和无监督学习_弱和自我监督的学习-第3部分
- php搜索功能代码实列,php记录搜索引擎关键词的代码示例
- C++赋值运算符重载函数(operator=)
- php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义
- cblas_sgemm cblas.h
- POJ3253-Fence Repair
- 内网使用 IPV6 之 TunnelBroker隧道(6in4)篇
- IIS 7 配置备份和还原
- 静态属性和静态方法 - C++快速入门21