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

MySQL分区支持两种HASH分区,常规HASH分区和线性HASH分区。

常规HASH使用的是取模算法,线性HASH使用的是线性2的幂运算。

CREATE TABLE emp2hash (id INT NOT NULL,

ename VARCHAR(30),

hired DATE NOT NULL DEFAULT '1970-01-01',

separated DATE NOT NULL DEFAULT '9999-12-31',

job VARCHAR(30) NOT NULL,store_id INT NOT NULL )

PARTITION BY HASH (store_id) PARTITIONS 4;

INSERT    INTO emp2hash VALUES (1,'Tom','2010-10-10','9999-12-31','Clerk',234);

EXPLAIN PARTITIONS SELECT * FROM emp2hash WHERE store_id = 234

如果要增加分区数量,取模算法是MOD(expr,X+1),原来分区中的数据几乎都要重新计算,所以常规分区在分区管理上代价太大,MySQL提供了线性HASH分区,来降低分区管理的代价。Linear hash在分区维护(增加,删除,合并,拆分分区)时,MySQL能够处理的更加迅速,但是和常规HASH各分区之间的数据分布不太均衡。

CREATE TABLE emp2linehash(id INT NOT NULL,

ename VARCHAR(20),

hired DATE NOT NULL DEFAULT '1970-01-01',

separated DATE NOT NULL DEFAULT '9999-12-31',

job VARCHAR(30) NOT NULL,

store_id INT NOT NULL)

PARTITION BY LINEAR HASH (store_id) PARTITIONS 4;

常规分区时,保存数值A所在的分区,N(A)=MOD(A,num)=A&(num-1)

线性分区时,找到大于等于num的幂V=Power(2,ceiling(Log(2,num)));N=A&(num-1),仅以A为非负整数为例。

mysql的hash分区_MySQL中的分区(五)HASH分区相关推荐

  1. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  2. mysql创建分区是否存在_mysql中如何判断是否支持分区

    mysql可以通过下面语句判断是否支持分区: SHOW VARIABLES LIKE '%partition%'; 如果输出: have_partitioning   YES 表示支持分区. 或者通过 ...

  3. mysql 字符列做日期分区_mysql 根据日期字段做表分区

    mysql 的表分区有几种类型, list, hash, range等, 今天我们介绍下日期分区, 假如与如下表: 新建mysql分区表CREATE TABLE core(   core_id INT ...

  4. centos 调整home分区xfs_Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)...

    前言 当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间.如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑 ...

  5. mysql btree检索策略_MySQL之Btree索引和HASH索引的区别以及索引优化策略

    索引是帮助mysql获取数据的数据结构.最常见的索引是Btree索引和Hash索引. 不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引:而Mermory默认的索引是 ...

  6. mysql普通索引命中_MySQL中因字段字符集不同导致索引不能命中的解决方法

    什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有 ...

  7. mysql日期格式化季度_mysql中常用日期比较与计算函数

    MySql中时间比较的实现 unix_timestamp() unix_timestamp 函数可以接受一个参数,也可以不使用参数. 它的返回值是一个无符号的整数.不使用参数,它返回自1970年1月1 ...

  8. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  9. mysql sql 时间比较_mysql中sql语句进行日期比较

    这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAY ...

最新文章

  1. C++ 11 中的POD
  2. 【译】 WebSocket 协议第六章——发送与接收消息(Sending and Receiving Data)
  3. android tv market,安卓市场TV版
  4. nginx+keepalived搭建主从负载均衡并迅速切换
  5. javascript模版引擎-tmpl的bug修复与性能优化
  6. 专业文化计算机艺考生,专业课和文化课都优秀?那艺考生的你不知道这个就损失大了...
  7. 你是否理解js的Object与Function与原型链
  8. 安装阿里Java代码规约插件
  9. 智能交通运输(包括TOCC)精华主题汇总
  10. openwrt ipv6上网配置过程
  11. win7下安装MQTT Paho客户端
  12. word打开文档很久很慢_Office软件打开速度慢怎么处理?Word打开很慢如何解决?...
  13. Chrome去除新标签页最近访问
  14. Notepad++ 7.6版本 安装hexeditor最新详细版本(小白版)
  15. switch条件语句与跳转语句(附分数分层案例)
  16. Bugku:杂项 小美的秘密part2
  17. CentOS7 系统安全加固实施方案介绍
  18. springcloudAlibaba设置allow-bean-definition-overriding=true不生效问题解决
  19. 个人网站开张两周年纪念
  20. 教你如何睡觉,一定要看!!!

热门文章

  1. 8 时间转指定时区的时间_Linux指定的时间运行自定义命令的两种方式
  2. mysql查询嵌套where_MySQL-10(where /from 嵌套查询)
  3. C#程序设计--入门到精通 学习记录(一) C# 与 .net平台
  4. Python操作excel文件根据某一字段将相同的类拆分
  5. Python中maketrans和translate方法
  6. Python面向对象之定制对象独有特征
  7. mysql 备库 hang住_mysql主键的缺少导致备库hang住
  8. C语言什么时候必须用到二级指针?(需要调用函数为一维空指针确定值的情况下,需要传入二维指针,也就是那个一维指针的指针)
  9. C语言malloc动态分配内存分配失败怎么办?exit(OVERFLOW);(include <cstdlib>)
  10. 图像处理中的“内插”是什么?插值、图像内插值、图像间插值、重取样(用已知数据来估计未知位置的数值的处理)(最近邻内插法、双线性内插)