MySQL按字符串hash分区_mysql分区理论「建议收藏」

MySQL按字符串hash分区_mysql分区理论「建议收藏」查看mysql安装的引擎mysql>showengines;查看mysql安装的插件(这里用于查看当前mysql是否支持partition)mysql>showplugins;不同分区对比分区类型优点缺点共性Range适合与日期类型,支持复合分区有限的分区一般只针对某一列List适合与有固定取值的列,支持复合分区有限的分区,插入记录在这…

大家好,又见面了,我是你们的朋友全栈君。

查看mysql安装的引擎

mysql>show engines;

查看mysql安装的插件(这里用于查看当前mysql是否支持partition)

mysql>show plugins;

不同分区对比

分区类型 优点 缺点 共性

Range 适合与日期类型,支持复合分区 有限的分区 一般只针对某一列

List 适合与有固定取值的列,支持复合分区 有限的分区,插入记录在这一列的值不在List中,则数据丢失 一般只针对某一列

Hash 线性Hash使得增加、删除和合并更快捷 线性Hash的数据分布不均匀,而一般Hash的数据分布较均匀 一般只针对某一列

Key 列可以为字符型等其他非Int类型 效率较之前低,因为函数复制的程度,(如。MD5或SHA函数) 一般只针对某一列

海量数据优化2种方法

1、大表拆小表,分表、分区,物理的操作

2、sql语句的优化,通过增加索引来调整,但是数据量增大将会导致索引的维护代价增大,逻辑层面提升

大表拆小表

垂直分表,拆列字段,缺点:破坏表关系,表关联

水平分表,拆数据行,缺点:php代码量维护,逻辑层面困难增加

mysql分区

有点类似水平分表,但是它是基于逻辑层面,而不是物理层面,对于程序而言分区表还是一张表

mysql5.1的4种分区类型

range分区:基于属于一个给点连续区间的列值,把多行分配给分区

list分区:类似按range分区,区别在于list分区是基于列值匹配一个离散值集合中的某个值来进行选择,列值是固定值的时候,例如枚举的时候

hash分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算,这个函数可以包含mysql中有效的,产生非负整数值得任何表达式,测试使用

key分区:类似按hash分区,区别在于key分区只支持计算一列或多列,且mysql服务器提供自身的哈希函数

range分区sql

create table emp(

int int not null,

fname varchar(30),

lname varchar(30),

hired date not null default ‘1970-01-01’,

separated date not null default ‘9999-12-31’,

job_code int not null,

store_id int not null 商店ID

)–根据商店ID时间来设置分区

partition by range(store_id)(

partition p0 values less than (6),

partition p1 values less than (11),

partition p2 values less than (16),

partition p3 values less than (21),

)

===========

create table emp(

int int not null,

fname varchar(30),

lname varchar(30),

hired date not null default ‘1970-01-01’, 入职时间

separated date not null default ‘9999-12-31’, 离职时间

job_code int not null,

store_id int not null

)–根据离职时间来设置分区

partition by range(YEAR(separated))(

partition p0 values less than (1991),

partition p1 values less than (1996),

partition p2 values less than (2001),

partition p3 values less than MAXVALUE,

)

emp.frm 表结构

emp.par 分区表(分了4个分区,每一个分区有一个分区数据文件和一个分区索引文件)

emp.#P#p0.MYD MYData分区数据文件

emp.#P#p0.MYI MYIndex分区索引文件

emp.#P#p1.MYD

emp.#P#p1.MYI

emp.#P#p2.MYD

emp.#P#p2.MYI

emp.#P#p3.MYD

emp.#P#p3.MYI

list分区sql

create table emp(

int int not null,

fname varchar(30),

lname varchar(30),

hired date not null default ‘1970-01-01’, 入职时间

separated date not null default ‘9999-12-31’, 离职时间

job_code int not null,

store_id int not null 商店ID

)–根据商店ID时间来设置分区,枚举类型,固定的值

partition by list(store_id)(

partition pNorth values in (3,5,6,9,17),

partition pEast values in (1,2,10,11,19,20),

partition pWest values in (4,12,13,14,18),

partition pCenter values l in (7,8,15,16)

)

emp.frm 表结构

emp.par 分区表(分了4个分区,每一个分区有一个分区数据文件和一个分区索引文件)

emp.#P#pCenteral.MYData分区数据文件

emp.#P#pCenteral.MYI MYIndex分区索引文件

emp.#P#pEast.MYD

emp.#P#pEast.MYI

emp.#P#North.MYD

emp.#P#North.MYI

emp.#P#pWest.MYD

emp.#P#pWest.MYI

hash分区sql

create table emp(

int int not null,

fname varchar(30),

lname varchar(30),

hired date not null default ‘1970-01-01’, 入职时间

separated date not null default ‘9999-12-31’, 离职时间

job_code int not null,

store_id int not null 商店ID

)–根据入职时间分区,入职时间不同, hash算法平均分配到不同的分区内

partition by hash(YEAH(hired))

partitions 4;

key分区

与hash分区类似,但它的key可以不是整数,如可以是字符串类型,mysql簇(Cluster)使用函数MD5(来)实现key分区;对于使用其他存储引擎的表,服务器使用其自己内部的哈希函数,这些函数与password()一样的运算法则

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136673.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js定时跳转网页_js 网页代码

    js定时跳转网页_js 网页代码效果如下:五秒跳完之后,转到百度的页面js代码如下:window.οnlοad=init;functioninit(){window.setTimeout(“tiaozhuan()”,5000);window.setInterval(“shijian()”,1000);//五秒后调用tiaozhuan}functiontiaozhuan(){location.replace(“http://www.baidu.com”);} functionshijian(){ var

    2022年8月12日
    10
  • 解决EXSi6.0没有WEB Client的问题

    解决EXSi6.0没有WEB Client的问题问题:安装好EXSi之后通过web访问,只有vSphere下载,没有openwebclient经过百度之后发现EXSi6.0不支持Web,但是支持安装Web,这就好办了。动手!!!思路:1、下载esxui-signed-7119706.vib2、通过SecureCRT连接EXSi服务器3、开启sftp连接4、转到EXSi的/tmp目录,这里仅仅是习惯,其他目录…

    2022年6月5日
    52
  • 使用多线程实现文件的下载_多线程写同一个文件

    使用多线程实现文件的下载_多线程写同一个文件首先,我们要下载一个文件,可以通过多线程的方式快速下载!!!多线程下载文件的步骤:1、首先要知道请求下载的服务器支持断点下载,即支持request头信息中的Range的设置2、然后通过对请求头设置httpRequest.setRequestProperty(“Range”,”bytes=”+startIndex+”-“+endIndex);3、然后获取整个文件的大小4、在……

    2025年10月21日
    3
  • pipeline和baseline是什么?

    pipeline和baseline是什么?昨天和刚来项目的机器学习小白解释了一边什么baseline和pipeline,今天在这里总结一下什么是baseline和pipeline。1.pipeline1.1从管道符到pipeline

    2022年8月2日
    10
  • STM32CubeMX介绍、下载与安装

    STM32CubeMX介绍、下载与安装推荐分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang本教程今年更新了部分内容:STM32CubeMX系列教程Ⅰ、写在前面相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32比较流行的一个工具。这个工具从两年…

    2022年6月12日
    44
  • dell服务器服务器数据丢失后,数据恢复

    dell服务器服务器数据丢失后,数据恢复dell服务器数据丢失后,一般情况下数据都是可以100%恢复的,因此切记勿对服务器硬盘调换顺序,强制上线,重组等任何危险操作,否则将有可能对原有数据造成二次破坏,永久性不可恢复。 DELL服务器主要有:塔式服务器,刀片式服务器,机架式服务器等几种产品系列。  一:戴尔DELL服务器数据恢复常见故障现象:  1:戴尔DELL服务器磁盘阵列信息丢失,造成整台服务器无法启动;  2:戴尔

    2022年6月29日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号