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


相关推荐

  • PS2手柄通讯协议解析—附资料和源码「建议收藏」

    PS2手柄通讯协议解析—附资料和源码「建议收藏」文章目录一.PS2介绍二.PS2通讯协议介绍一.PS2介绍今天就带大家来认识一下PS2的通讯协议,如果你需要用PS2无线手柄搭配单面机来DIY制作,那么千万别错过这篇文章。首先介绍一下我们今天的主角–PS2手柄。PS2手柄是日本SONY公司的PlayStation2游戏机的遥控手柄。索尼的PSX系列游戏主机在全球都很畅销。不知什么时候便有人打起PS2手柄的主意,破解了通讯协议,使…

    2022年4月27日
    128
  • mycat读写分离配置文件详解_mycat实现读写分离

    mycat读写分离配置文件详解_mycat实现读写分离环境准备mysql5.7mycat1.6.7.1-release一主一从master:10.0.60.8:3307slave:10.0.60.8:3308配置实现读写分离前需要实现主从复制但是mycat不负责任何的数据同步问题。所以得自己配置mysql主从复制只需要配置schema.xml即可方式1:<dataHostname=”localhost1″maxCon=”1000″minCon=”10″balance=”1″writeType=”0″dbType=

    2022年10月13日
    0
  • JDBC之ResultSet

    JDBC之ResultSet

    2021年9月13日
    62
  • Pytorch 安装

    Pytorch 安装Pytorch安装已有Cuda9.0,anaconda3,用conda命令安装pytorchcondainstallpytorchtorchvisioncuda90-cpytorch验证是否安装成功python然后依次输入from__future__importprint_functionimporttorchx=torch.rand(5,3)p…

    2022年6月24日
    29
  • Macbook OBS 录制系统声音

    Macbook OBS 录制系统声音安装好OBS软件下载并安装soundflower软件,也可以在GitHub中下载打开midi音频设置构建多输出设备例如,我现在是带着外置耳机,并且录制系统声音,那么多输出设备就勾选这两个配置完成后,我们可以右键选择该设备用于声音输出最后在OBS软件中选择桌面音频即可,点击Soundflower…

    2022年5月27日
    53
  • 360天擎忘记密码怎么卸载_天擎关闭密码

    360天擎忘记密码怎么卸载_天擎关闭密码360天擎卸载密码_如何卸载360企业版1、首先任务管理器,找到360,然后停用,2、然后找到服务,找到360服务,然后停用,3、再然后,进入控制面板卸载页面,卸载360天擎4、第2步成功后,在执行第三步,服务和任务管理器都停用以后,才能卸载;5、如果停用刷新不显示的话,重新启动;6、服务里面,看到的360服务,需要进入属性后才能编辑。…

    2022年9月25日
    0

发表回复

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

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