百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql多字段分区
分享文章到:

mysql多字段分区

发布时间:08/01 来源:未知 浏览: 关键词:
columns分区支撑一个或者多个字段作为分区键,不支撑表达式作为分区键,这点区别于range和list分区。需要注意的是rangecolumns分区键的比拼是基于元组的比拼,也就是基于字段组的比拼,这和range分区有悬殊。 分区是依据一定的法则,数据库把一个表分解成多个更小的、更容易治理的局部。就拜访数据库利用而言,逻辑上就只要一个表或者一个索引,但现实上这个表可能有N个物理分区对象组成,每个分区都是一个独立的对象,可以独立处置,可以作为表的一局部进行处置。分区对利用来说是完全透亮的,不影相应用的业务逻辑。

举荐课程:MySQL教程。

分区有益于治理非常大的表,它采纳分而治之的逻辑,分区引入了分区键的概念,分区键用于依据某个区间值(或者范畴值)、特定值列表或者hash函数值施行数据的汇集,让数据依据法则散布在不一样的分区中,让一个大对象碧昂城一些小对象。

MySQL分区即可以对数据进行分区也可以对索引进行分区。

注意:不管哪种分区,要末你分区表上没有主键/独一键,要末分区表的主键/独一键都必需包括分区键,也就是说不克不及运用主键/独一键字段以外的其它字段分区。

MySQL分区的有限主要包含下列4个方面:

和单个磁盘或者文件系统分区比拟,可以存储更多数据

优化查询。在where子句中包括分区前提时,可以只扫描须要的一个或者多个分区来提高查询效率;同时在波及sum()和count()这类聚合函数的查询时,可以容易的在每个分区上并行处置,终究只需要汇总所有分区得到的效果

关于已经逾期或者不需要保留的数据,可以通过删除与这些数据有关的分区来迅速删除数据

跨多个磁盘来分散数据查询,以获得更大的查询吞吐量

分区和水平分表功能相似,将一个大表的数据分割到多张小表中去,因为查询不需要全表扫描了,只需要扫描某些分区,所以分区能提高查询速度。

水平分表需要会员预先手动显式新建出多张分表(如tbl_user0, tbl_user1, tbl_user2),在物理上实实在在的新建多张表,通过客户端代理(Sharding-JDBC等)或者中间件代理(Mycat等)来实现分表逻辑。

分区是MySQL的一个插件Plugin功能,将一张大表的数据在数据库底层分成多个分区文件(如tbl_user#P#p0.ibd, tbl_user#P#p1.ibd, tbl_user#P#p2.ibd),和水平分表不一样的是分区不需要显式的新建“分表”,数据库会主动新建分区文件的,会员看到的只是一张普通的表,其实是对应的是多个分区,这个是对会员是屏蔽的、透亮的,在运用上和运用一张表完全同样,不需要借助任何功能来实现。分区是一种逻辑上的水平分表,在物理层面还是一张表。

在mysql5.5以前range分区和list分区只支撑整数分区,可以通过额外的函数运算或者额外的转换从而得到一个整数。columns分区分为 range columns 和 list columns 两种,支撑整数(tinyint到bigint, 不支撑decimal 和float)、日期(date、datetime)、字符串(char、varchar、binary、varbinary)三大数据类型。

columns分区支撑一个或者多个字段作为分区键,不支撑表达式作为分区键,这点区别于range 和 list 分区。需要注意的是range columns 分区键的比拼是基于元组的比拼,也就是基于字段组的比拼,这和range分区有悬殊。

 create talbe rc3 (    
    a int,
    b int
)
partition by range columns(a, b) (
    partition p01 values less than (0, 10),
    partition p02 values less than (10, 10),
    partition p03 values less than (10, 20),
    partition p04 values less than (10, 35),
    partition p05 values less than (10, maxvalue),
    partition p06 values less than (maxvalue, maxvalue),
);

insert into rc3(a, b) values(1, 10);

select (1, 10) < (10, 10) from dual;

-- 根据结果存放到p02分区上了
select
    partition_name,
    partition_expression,
    partition_description,
    table_rows
from information_schema.partitions
where table_schema = schema() and table_name = 'rc3';

range columns分区键的比拼(元组的比拼)其实就是多列排序,先依据a字段排序再依据b字段排序,依据排序效果来分区寄存数据,和range单字段的分区排序的法则现实上是同样的。

以上就是mysql多字段分区的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板