1.hash分区
PS::个人觉得HASH分区很好很强大,简单确分布极其均匀
创建实例:
CREATE TABLE HASH_EMP (
tid int,
tname char(255)
)
PARTITION BY HASH (tid) PARTITIONS 8;
将hash_emp进行的tid进行hash分区,并分为8个区 查询分区的数据分布情况:
select partition_name,partition_expression,partition_description,table_rows from information_schema.partitions where table_schema = schema() and table_name = 'hash_emp';
+----------------+----------------------+-----------------------+------------+
| partition_name | partition_expression | partition_description | table_rows |
+----------------+----------------------+-----------------------+------------+
| p0 | tid | NULL | 0 |
| p1 | tid | NULL | 0 |
| p2 | tid | NULL | 0 |
| p3 | tid | NULL | 0 |
| p4 | tid | NULL | 0 |
| p5 | tid | NULL | 0 |
| p6 | tid | NULL | 0 |
| p7 | tid | NULL | 0 |
+----------------+----------------------+-----------------------+------------+ 创建1个event,用来不间断写入数据,测试分布情况:
create event hash_emp_event on scheduler every 1 second do insert into hash_emp values (NULL,now());
set GLOBAL event_scheduler = 1; //开启调度器 再次查看分区数据分布情况:
+----------------+----------------------+-----------------------+------------+
| partition_name | partition_expression | partition_description | table_rows |
+----------------+----------------------+-----------------------+------------+
| p0 | tid | NULL | 41 |
| p1 | tid | NULL | 42 |
| p2 | tid | NULL | 42 |
| p3 | tid | NULL | 42 |
| p4 | tid | NULL | 42 |
| p5 | tid | NULL | 42 |
| p6 | tid | NULL | 42 |
| p7 | tid | NULL | 42 |
+----------------+----------------------+-----------------------+------------+ 可以看出来,hash分布极其均匀:; 2.Key分区
PS::所谓key分区则是指mysql默认使用表的主键或唯一建进行分区管理
创建实例:
CREATE TABLE KEY_EMP (
tid int,
tname char(255)
)
PARTITION BY KEY (tid) PARTITIONS 8;
PS::因为跟hash差不多,就不进行过多测试了!!! 3.子分区
PS::顾名思义就是在分区上再建分区
PS::支持子分区的分区模式有range || list ,它们2者都可以支持hash或list的子分区
创建实例::
CREATE TABLE ZI_EMP (
tid int,
tname char(255)
)
PARTITION BY RANGE (tid)
SUBPARTITION BY HASH (tid)
SUBPARTITIONS 2 (
PARTITION p0 values less than (1990),
PARTITION p1 values less than (2028),
PARTITION p2 values less than (MAXVALUE)
);
将zi_emp分成了3个range分区,每个分区在分为2个子分区,如是,有了下面的分区结构:
+----------------+----------------------+-----------------------+------------+
| partition_name | partition_expression | partition_description | table_rows |
+----------------+----------------------+-----------------------+------------+
| p0 | tid | 1990 | 0 |
| p0 | tid | 1990 | 0 |
| p1 | tid | 2028 | 0 |
| p1 | tid | 2028 | 0 |
| p2 | tid | MAXVALUE | 0 |
| p2 | tid | MAXVALUE | 0 |
+----------------+----------------------+-----------------------+------------+
也就是说,如果tid小于1990,那么数据会被hash分配到p0这2个子分区中

十四、mysql 分区之 HASH && KEY的更多相关文章

  1. Java基础学习笔记二十四 MySQL安装图解

    .MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Compl ...

  2. Python学习日记(三十四) Mysql数据库篇 二

    外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务 ...

  3. 三十四.MySQL主从同步 、主从同步模式

    mysql51:192.168.4.51 主 mysql52:192.168.4.52 从 mysql50:192.168.4.50 客户机   1.MySQL一主一从   1.1 51,52 安装m ...

  4. 十五、mysql 分区之 分区管理

    1.mysql分区处理分区字段NULL值的方式 1.range分区null被当作最小值处理 2.list分区null值必须被枚举出来,否则将出错 3.hash/key分区 null值当作0处理 2.R ...

  5. MySQL表的四种分区类型

    MySQL表的四种分区类型 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表 ...

  6. mysql表分区(摘自 MySQL表的四种分区类型)

    一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

  7. Mysql的四种分区

    mysql一共有四大分区分别为hash range list key 四个分区. 分区的字段需要时主键才可以成功 . 第一种 hash分区 第二张list分区 第三种 key分区 第四种 range分 ...

  8. Mysql 分区(range,list,hash)转载

    MySQL支持RANGE,LIST,HASH和KEY四种分区.其中,每个分区又都有一种特殊的类型.对于RANGE分区,有RANGE COLUMNS分区.对于LIST分区,有LIST COLUMNS分区 ...

  9. mysql分区表之二:MySQL的表的四种分区类型介绍

    一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

随机推荐

  1. spring mvc 使用Optional

    return Optional.ofNullable(brokerRepository.findOne(id)) .map(broker -> new ResponseEntity<> ...

  2. customerized convert from field type to DB field's type

    @LastModifiedDate @Convert(converter = LocalDateTime2TimestampConverter.class) @Slf4j public class L ...

  3. struts2拦截器源码分析

    前面博客我们介绍了开发struts2应用程序的基本流程(开发一个struts2的实例),通过前面我们知道了struts2实现请求转发和配置文件加载都是拦截器进行的操作,这也就是为什么我们要在web.x ...

  4. 1045 | error connecting to master 'slave_user@192.168.0.75:3306' - retry-time: 6

    mysql 主从复制问题整理   问题:      1045 | error connecting to master 'slave_user@192.168.0.75:3306' - retry-t ...

  5. Wing IDE 5 for Python 安装及破解方法

    安装Wing IDE 官网下载deb安装文件 开始安装程序 dpkg -i 文件名.deb 安装完成后打开注册界面,输入下面的License ID 后得到RequestCode,将RequestCod ...

  6. 【简单dp+模拟】hdu-5375(2015多校#7-1007)

    给你一个二进制数,,每一位有一个权值,让你转格雷码,求所对应格雷码位为1的权值的和:二进制位中的某些位为?,你需要给这些问号赋值使得到的和最大. 首先你得知道二进制转格雷码的规则,即格雷码位为[二进制 ...

  7. (转载)运行主机管理在openvswitch之上

    在这篇文章里介绍了如果运行主机管理在openvswitch之上,而不是单独配置一个物理网卡用于主机管理,并且所有的vm的流量还是通过openvswitch走的. Running Host Manage ...

  8. 谈谈JavaScript事件

    众所周知,web前端包含三个基本技术:html.css和javascript.三者融合,才让网页变得精彩纷呈!如今,web上的操作越来越趋于复杂,JavaScript事件在网页中也遍地开花,有时候也是 ...

  9. Java Concurrency - ThreadLocal, 本地线程变量

    共享数据是多线程应用最常见的问题之一,但有时我们需要为每个线程保存一份独立的变量.Java API 提供了 ThreadLocal 来解决这个问题. 一个 ThreadLocal 作用的例子: imp ...

  10. c++ 11 国标标准方面的异常处理与微软在Visual Studio 2012的异常处理的区别

    这段代码: __try { } __except(GetErrorCode()) { } 可以捕获空指针,但是包围在其中的代码不能有自带析构函数的对象.c++ 11 标准里面的auto_ptr关键字, ...