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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 防盗链referer详解和解决办法「建议收藏」

    防盗链referer详解和解决办法「建议收藏」防盗链原理:http标准协议中有专门的字段记录referer1、他可以追溯到请求时从哪个网站链接过来的。2、来对于资源文件,可以跟踪到包含显示他的网页地址是什么。因此所有防盗链方法都是基于这个Referer字段1.事情经过在一开始,我打算将其他网站(如:爱奇艺,腾讯)的图片放在自己的网站(http://localhost…)上显示.<imgsrc=”http://pic6…

    2022年7月23日
  • linux每日命令(1):which

    linux每日命令(1):which

    2021年6月17日
  • 什么是mdc_mdc网站

    什么是mdc_mdc网站MDC中包含的可以被同一线程中执行的代码所访问内容。当前线程的子线程会继承其父线程中的MDC的内容。记录日志时,只需要从MDC中获取所需的信息即可。简单来说就是日志的增强功能,如果配置了MDC,并添加了相应的keyvalue,就会在打日志的时候把key对应的value打印出来。内部是用ThreadLocal来实现的,可以携带当前线程的context信息。转载于…

    2022年10月28日
  • pycharm 激活码2022【最新永久激活】

    (pycharm 激活码2022)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
  • JVM调优工具

    JVM调优工具JVM调优工具Jconsole:jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。JProfiler:商业软件,需要付费。功能强大。VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放情况、集合类检查、对象树上面这些调优工具都提供了强大的功能,但是总的来说一般分为以下几类功能堆信息查…

    2022年6月1日
  • 微信小程序–获取已发布微信小游戏和小程序源码「建议收藏」

    最近一直在做微信小游戏的开发,发现了一个好玩的事,在这里记录一下。这段时间一直在做一些小游戏,小程序的开发,但有的时候会发现性能上总是不那么的尽如人意(毕竟我这小菜鸟水平有限),于是就想到,想要看看别的大神们是怎么处理这些问题的(其实就是想看一下大神们的代码怎么写!)。但是,有一个问题就是小游戏或者小程序和H5、网页不一样,不能直接F12看代码,要怎么才能拿他们的代码呢?  …

    2022年4月14日

发表回复

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

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