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. Linux命令行下cp,rm,mv命令的使用

    以下的内容来源于<鸟哥的私房菜> Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制        cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件 ...

  2. 机器学习之AdaBoost

    Adaboost是一种组合学习的提升算法,能将多个弱学习算法(甚至只比随机猜测好一点)组合起来,构成一个足够强大的学习模型. 组合学习 组合学习是将多个假说组合起来,并集成它们的预测.比如对于一个问题 ...

  3. JVM 垃圾回收 Minor gc vs Major gc vs Full gc

    关于垃圾回收机制及比较请参见:http://colobu.com/2015/04/07/minor-gc-vs-major-gc-vs-full-gc/ http://colobu.com/2014/ ...

  4. saltstack实战3--配置管理之grains

    grains是什么 grains是minion服务启动后,采集的客户端的一些基本信息,硬件信息,软件信息,网络信息,软件版本等.你可以在minion上自定义一些grains信息. 它是静态的信息,mi ...

  5. Ehcache(2.9.x) - API Developer Guide, Cache Eviction Algorithms

    About Cache Eviction Algorithms A cache eviction algorithm is a way of deciding which element to evi ...

  6. C#编写windows服务程序

    Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...

  7. C#——字符操作

    题目要求:用户随机输入字母及数字组成的字符串,当用户连续输入字符串‘hello’时,程序结束用户输入,并分别显示用户输入的字母及数字的数目. 代码: using System; using Syste ...

  8. Bresenham算法画填充圆及SDL代码实现

    画圆是计算机图形操作中一个非常重要的需求.普通的画圆算法需要大量的浮点数参与运算,而众所周知,浮点数的运算速度远低于整形数.而最终屏幕上影射的像素的坐标均为整形,不可能是连续的线,所以浮点数运算其实纯 ...

  9. (转)Mysql数据库读写分离配置

    环境模拟 实现读写分离 减轻数据库的负荷 主服务器 master 10.0.0.12从服务器 slave 10.0.0.66 ------------------------------------- ...

  10. 【leetcode】9. Palindrome Number

    题目描述: Determine whether an integer is a palindrome. Do this without extra space. 解题分析: ^_^个人觉得这道题没有什 ...