mysql 取模分区_MySQL分区

mysql 取模分区_MySQL分区分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。而分区是将数据分段划分在多个位置存放,分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。分区类型主要有range、list、hash、key以常规hash举例说明分区是如何创建的常规hash是取模运算创建…

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

分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。而分区是将数据分段划分在多个位置存放,分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。

分区类型主要有range、list、hash、key

以常规hash举例说明分区是如何创建的

常规hash是取模运算

创建一个雇员表,根据id分成4个区,根据取模结果分别分成0,1,2,3四个区CREATE TABLE `partitions` (

`id` int(10) NOT NULL,

`ename` varchar(100) NOT NULL,

`hired` date NOT NULL DEFAULT ‘1992-03-03’,

`separated` date NOT NULL DEFAULT ‘1992-03-03’,

`job` varchar(100) NOT NULL,

`store_id` int(10) NOT NULL

)

partition by hash (id) partitions 4;

创建成功之后查看数据文件,数据文件和索引文件单独存放

858fb1695b00161b4bacaf894dd0b431.png

然后插入数据测试数据是否已经分区存在

a0e064ebf6155218e5f614cf4ffe246e.png

按照预定的结果,id为1应该放在分区1,2放在分区2,3放在分区3,4放在分区0

查看分区的分布情况SELECT PARTITION_NAME,PARTITION_METHOD,PARTITION_EXPRESSION,PARTITION_DESCRIPTION,TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD,SUBPARTITION_EXPRESSION

FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME=’partitions’;

584c154cb6081aa9e8e5da7824db7da8.png

可以看到情况如预期一样

hash分区由原来的四个合并成两个,然后查看数据如何存储

ALTER TABLE `partitions` COALESCE PARTITION 2

然后查看分布情况

3546ac48075d23fb353289c3fd82bfbb.png

发现数据重新取模存储到新的分区

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130616.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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