1、Range(范围) – 这种模式允许DBA将数据划分不同范围。例如DBA可以将一个表通过年份划分成三个分区,80年代(1980’s)的数据,90年代(1990’s)的数据以及任何在2000年(包括2000年)后的数据。
2、Hash(哈希) – 这种模式允许DBA通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如DBA可以建立一个对表主键进行分区的表。
3、Key(键值) – Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
4、List(预定义列表) – 这种模式允许系统通过DBA定义的列表的值所对应的行数据进行分割。例如:DBA建立了一个横跨三个分区的表,分别根据2004年2005年和2006年值所对应的数据。
5、Composite(复合模式) – 很神秘吧,哈哈,其实是以上模式的组合使用而已,就不解释了。举例:在初始化已经进行了Range范围分区的表上,我们可以对其中一个分区再进行hash哈希分区。

结论

  • 分区和未分区占用文件空间大致相同 (数据和索引文件)
  • 如果查询语句中有未建立索引字段,分区时间远远优于未分区时间
  • 如果查询语句中字段建立了索引,分区和未分区的差别缩小,分区略优于未分区。
  • 对于大数据量,建议使用分区功能。
  • 去除不必要的字段
  • 根据手册, 增加myisam_max_sort_file_size 会增加分区性能( mysql重建索引时允许使用的临时文件最大大小)

一、HASH分区

1、要使用哈希分区对表进行分区,必须在CREATETABLE语句中附加PARTITION BY HASH(expr)子句,其中expr是返回整数的表达式。这可以是一个列的名称,其类型是MySQL的整数类型之一。此外,您很可能希望使用PARTITIONS num,其中num是一个正整数,表示要将表划分到的分区数。

2、在HASH分区中,使用表达式expr对分区数num求模MOD(expr,num)来计算数据行的分区号

3、LINEAR HASH与HASH的区别:线性散列,它与常规散列的不同之处在于,线性散列使用线性二次幂算法,而常规散列使用散列函数值的模数

1、创建分区

CREATE TABLE `tesc`.`hash_test`  (`id` int NULL,`name` varchar(255) NULL,`date` datetime NULL
)
PARTITION BY HASH(id)
PARTITIONS 4;#线性hash
CREATE TABLE `tesc`.`linear_hash_test`  (`id` int NULL,`name` varchar(255) NULL,`date` datetime NULL
)
PARTITION BY LINEAR HASH(id)
PARTITIONS 4;

插入测试数据

insert into hash_test(id,`name`,date) values(1,'zhangsan','1990-09-02'),(2,'lisi','2000-09-02'),(3,'wangwu','2011-09-02'),(4,'liuliu','2021-09-02');

2、删除分区

ALTER TABLE hash_test COALESCE PARTITION 2;

注意:通过这种删除分区的方式不会将分区中的数据删除

3、增加分区

添加3个分区,即从之前的2个分区变为5个分区

ALTER TABLE hash_test ADD PARTITION PARTITIONS 3;

Mysql分区 - Hash分区相关推荐

  1. mysql的hash分区_MySQL中hash和key分区值的计算方法

    MySQL中hash和key分区值的计算方法 mysql中有一种叫作key作为partition key的类型.来看看记录是怎么分布的 对于hash 分区,使用%操作符,每个partition key ...

  2. mysql的hash分区_MySQL中的分区(五)HASH分区

    HASH分区主要用来分散热点读,取保数据在预先确定个数的分区中尽可能的平均分布.对一个表执行HASH分区时,MySQL会对分区键应用一个散列函数,一次确定数据应该放在哪一个分区中. MySQL分区支持 ...

  3. mysql查询hash分区数据_mysql分区管理 - hash分区

    hash分区的目的是将数据按照某列进行hash计算后更加均匀的分散到各个分区,相比,range和list分区来说,hash分区不需要明确指定一个给定的列值或者列值集合 应该在保存在哪个分区,mysql ...

  4. mysql 删除hash分区_MySQL-如何删除hash表分区

    一个大表,之前是以hash分区表的形式存在的, MySQL> show create table history_uint; | history_uint | CREATE TABLE `his ...

  5. mysql hash分区 数目_MySQL 分区

    MySQL 分区 分区是指根据一定的规则,把一个表分解成多个更小更易管理的部分,逻辑上只有一个表或一个索引, 但是实际上该表可能由数个物理分区对象组成,每个分区都是一个独立的对象,每个分区可以独自处理 ...

  6. 理解MySQL——并行数据库与分区(Partition)

    1.并行数据库 1.1.并行数据库的体系结构 并行机的出现,催生了并行数据库的出现,不对,应该是关系运算本来就是高度可并行的.对数据库系统性能的度量主要有两种方式:(1)吞吐量(Throughput) ...

  7. mysql 字符串类型 分区_MySQL分区类型

    博文大纲: 1.RANGE分区 2.LIST分区 3.HASH分区 4.key分区 5.MySQL分表和分区的区别 6.附加:如何实现将分区放在不同的目录下进行存储 MySQL分区类型如下: RANF ...

  8. MySQL数据库表分区功能详解

    1.什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表 ...

  9. mysql数据库表分区_MySQL数据库之MySQL的分区和分表详解

    本文主要向大家介绍了MySQL数据库之MySQL的分区和分表详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1. 分区 MySQL中的分区是指将一个数据表按照某种规则(如时 ...

最新文章

  1. 快速沃尔什变换(FWT)及K进制异或卷积快速子集变换(FST)讲解
  2. 前端面试中常见的算法问题
  3. 论文总结(negFIN: An efficient algorithm for fast mining frequent itemsets)
  4. ECMAScript5.1的运算符、类型转换总结
  5. 回调java 简书_web3j函数回调使用详解
  6. Android view变形,android仿变形金刚效果实现MatchView
  7. 使用Dapper持久化IdentityServer4
  8. OpenJDK 源码阅读之 Java 字节流输入类的实现
  9. 项目总结 -谷粒学院
  10. 啦啦外卖独立版配送小程序(黑色UI风格)
  11. spreadJs拖放单元格值的解决方法
  12. 小组取什么名字好_学习小组起什么名字比较好
  13. 楼宇自控BACnet/IP协议网关功能特点
  14. 使用Jobs之创建jobs
  15. 智能手机的“退化”史,是巨头们利益野心的作祟
  16. BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡
  17. java 数组包含_灵魂拷问:如何检查 Java 数组中是否包含某个值?
  18. windows 安装Eclipse win7为例
  19. swapidc鸟云模板源码开源
  20. android 视频投屏,USB视频投屏

热门文章

  1. TNS:协议适配器错误
  2. macbookpro可以自学python吗_学习python,office等,是否推荐购买macbookpro?
  3. c 控制台 笔记本电池充电监控程式
  4. 摄像头录像软件哪款好用?这款就很不错
  5. 软件接口功能测试,自动化功能测试和接口测试工具整理(201101)
  6. Ceph学习之路---pg peered状态处理方法
  7. C语言-手写任务队列
  8. 判定表与判定树的画法_判定表,判定树是神魔
  9. 寓言故事《小松鼠的冒险与反思》
  10. 从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具