mysql 热块_MySQL分布式集群之MyCAT(三)rule的分析【转】

首先写在最前面,MyCAT1.4的alpha版本已经发布了,这里面修复了不少的bug,也完善了一细节,之前两篇博客已经做了一些修改

---------------------------------------------------------------------------------这才是本体~----------------------------------------------------------------------------------

之前已经介绍过了schema的作用了,这一篇会把rule和server一起介绍~

首先是rule,在这个文件里面会详细的制定多种分片的规则,这次只抽出一些使用率比较高的方法,先上配置文件的内容

29510932_1432984475w15j.png

可以简单看一下,在截图的上半部分描述的是rule的定义,在下半部分,是rule对应的实际切分规则,这里总工介绍下面四种切分方式~murmur已坑~

-------------------------------------------------------------------------------------------Hash-int---------------------------------------------------------------------------------

先看hash-int,在这一条切分规则的下面,有一个mapfile,这代表着,这个切分规则是根据partition-hash-int的内容来决定的,那么看一下这个文本文件

29510932_1432985106a7sl.png

很简单的内容,这代表着切分使用的基准列里面,值为10000的时候,放在第一个DN里面(dn1),值为10010的时候,放在第二个DN里面(dn2)

可以看一下实际效果

29510932_14329854949VNc.png

29510932_14329855628BTB.png

看一下MyCAT的Debug日志,这两条语句被分配到了dn1和dn2上面,数据库里面也插入了相对应的数据

29510932_1432985742JUub.png

那么~问题来了(挖掘机滚粗~),如果插入的数据中,基准列的取值不是这个文件里面写明的值,会是什么效果?

29510932_1432985865G6bG.png

直截了当的报错了~

好了,hash-int的这种切分规则,大体上可以理解为枚举分区,会比较适合于取值固定的场合,比如说性别(0,1),省份(固定值,短时间不会收复日本省吧~),渠道商 or 各种平台的ID

而且,用逗号分隔可以把多个值放在一个分区里面,所以可以根据实际的数据量/流量/访问量来综合制定切分策略;

缺点:毕竟不是全能战士╮(╯_╰)╭

-------------------------------------------------------------------------------------------range-long---------------------------------------------------------------------------------

第二种切分方式,range-long,仔细一看的话,和hash-int是比较像的,也是由特定的文件来决定切分策略,所以还是去看一下文件的内容

29510932_14329863945VMb.png

从文件内容可以看出,这是一种范围切分的方式,制定基准列的取值范围,然后把这一范围的所有数据都放到一个DN上面,这种方式和hash-int基本一致,就不截图了(懒癌晚期,时间不够了!)

这种切分策略,个人感觉在业务数据库里面的使用场景会少一些,因为这种切分方式需要预定好整体的数量,这就决定了那种无限增长的数据不能用这个,毕竟要改动这个切分策略会很麻烦

真要用起来,感觉也就对自增主键用,然后按照一定的数量来均匀切分,比如那种一天固定X条数据的业务(温度采集?数据采集?之类的情况),然后提前建好多个DN(库)。

当然,也存在一种潜在的问题,如果在短时间发生海量的顺序插入操作,而每一个DN(分库)设定的数量比较高(比如说一个DN设定的放1000W条数据),那么在这个时候,会出现某一个DN(分库)IO压力非常高,而其他几个DN(分库)完全没有IO操作,就会出现类似于DB中常见的热块/热盘的现象,而MySQL经常用自增主键,所以使得MySQL的表出现大量“顺序”插入的机会会多很多。

--------------------------------------------------------------------------------------------mod-long-----------------------------------------------------------------------------------

mod-long,从mod来看这应该是一种取余数的方法,来看一下具体配置的信息

29510932_1432987067mOiC.png

count=4,这是代表着总共把数据切分成四份,一般是和具体的DN数量对应,从而达到把数据均匀的分布在四个DN上(当然,count

看一下实际的效果

29510932_1432987521qFUz.png

看一下MyCAT的Debug日志,看看MyCAT是如何处理的

29510932_14329876323Fee.png

采用这种取余数的方式时,这四条数据分别插入了四个DN(库),而且可以看到,顺序插入时,数据是被均匀的分散在多个DN(库)上面

相比较于上面的range的方法,这种切分策略会更好的分散数据库写的压力,但是问题也很明显,一旦出现了范围查询,就需要MyCAT去合并结果,当数据量偏高的时候,这种跨库查询+合并结果消耗的时间有可能会增加很多,尤其是还出现了order by的时候。

所以这种切分策略会比较适合于单点查询的情景,比如说.....我也不知道......真的不知道,也许在银行,查询个人账户信息的时候,一些和用户信息的表可以做好冗余,然后利用这种方式来提供更为高效的查询(毕竟银行的用户数量多,恩恩~)

--------------------------------------------------------------------------------partition-by-long----------------------------------------------------------------------------------

partition-by-long,处于range-long和mod-long之间的一个略微折中的划分策略,具体切分形势依照如下描述:

以1024为一个单位,每个DN存放partitionLength数量的数据,且,partitionCount x partitionLength=1024

看起来有点难以理解,形象点描述的话,以partitionCount(4) x partitionLength(256)为例,sid%1024=0-255的放在DN1,256-511的放在DN2,以此类推

试着以128为偏移值插入了八条数据,直接看MyCAT的日志

29510932_1432989694hvEO.png

可以看到,八条数据均匀的分布在这四个DN里面~

值得一提的是,这种切分策略也支持非均匀分布~实在是测不动了,盗图两张~

29510932_1432989783kEdV.png

29510932_1432989833uzUU.png

这两张图基本上也说明白了这种非均匀分布的划分策略,重点还是在2x256+1x512=1024上面~

这种划分策略在range-long和mod-long之间取了一个折中点,同时,也还算是比较灵活,可以根据不同的情况进行非均匀划分,实际上能应用的场景会稍微多一点吧,或者说,不少场景都能用一用,相对减少了跨DN的情形,又把数据比较均匀的切分开来了,单点查询也不会太慢。

-----------------------------------------------------------------------------------写在最后-------------------------------------------------------------------------------------

其实MyCAT支持的切分方式还有不少,比如说按照时间的切分策略,可以按月,按天切分等,在这里也没办法把所有的策略都放上来,见谅了o( ̄ヘ ̄o#)

实际上从个人的观点来看,时间的切分依照数据库本身的分区策略来分也没什么问题,半年度,季度的数据也还是会需要查询的....PS:   _(:з」∠)_真不是懒...

可以说,MyCAT的分库分表的重点,基本全部在这个rule里面体现了,表要不要分,表的数据怎么切分,都是需要根据实际业务来决定,充分根据业务的特点去决定最合适的划分策略~

下一章预告>>server,对MyCAT调优的主要部分

第一篇http://blog.itpub.net/29510932/viewspace-1664499/

第二篇http://blog.itpub.net/29510932/viewspace-1667814/

转自

MySQL分布式集群之MyCAT(三)rule的分析-wangwenan6-ITPUB博客

http://blog.itpub.net/29510932/viewspace-1678591/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

glassfish发布应用_WildFly 8与GlassFish 4 –选择哪个应用服务器

glassfish发布应用自从我上一个博客以来已经有一段时间了。 我显然忙于其他事情,包括我的主要工作。 在对应用服务器的正确选择提出更多疑问之后,是时候再次讨论这个话题并分享我的想法。 该博客上最常阅读的文章之一是有关选择哪种Java EE 6应用程序服…

【渝粤教育】电大中专计算机职业素养 (5)作业 题库

1.曾经的一项调查发现一些企业业绩不好,客户流失的最重要的原因是( )。 A.企业管理问题 B.企业员工素养达不到要求 C.企业产品价格不好 D.企业产品质量问题 错误 正确答案:左边查询 学生答案:A 2.( &#x…

【渝粤教育】电大中专跨境电子商务理论与实务答案作业 题库

1.在按照服务类型中,( )服务平台主要是为境内外会员商户提供网络营销平台,传递供应商或采购商等商家的商品或服务信息,促成双方完成交易。 A.信息服务平台 B.在线交易平台 C.线上服务平台 D.线下交易平台 正确 正确答案…

工业交换机的四种安装方式图解

工业交换机的作用可以说是非常强大的,其应用十分广泛,在电力、轨道交通、市政、煤矿安全、工厂自动化、水处理系统、城市安防等都有它的身影,为现代生活智能化的发展提供了非常大的助力。但是由于使用环境的原因,在安装工业交换机…

hutool 获取某月最后一天_hutool定时任务

CronUtil通过一个全局的定时任务配置文件,实现统一的定时任务调度。1.1 pom文件cn.hutoolhutool-all4.1.01.2对于Maven项目,首先在src/main/resources/下创建config包,在包中放入cron.setting文件(默认是这个路径的这个文件),然后…

亚马逊Corretto 8

更新! 我已将在Docker中运行Corretto的选项更新为使用Docker Hub中可用的amazoncorretto Docker映像。 Amazon Corretto是OpenJDK的生产就绪发行版,具有长期支持,包括Amazon提供的性能和安全更新。 Amazon提供了适用于Linux,Win…

【渝粤题库】陕西师范大学400013 组织行为学 作业(专升本)

《组织行为学》作业 一、名词解释 1、组织行为学 2、组织文化 3、激励 4、需要 5、沟通 6、过程 7、 动机 8、社会知觉 9、角色 10、凝聚力 二、判断正误,并简述理由 1、管理思想史上对人的因素的重视自泰罗始。 2、社会人理论假设认为,人的行为是为了获…

SDH光端机市场应用及发展趋势介绍

由于SDH技术的众多特性,使其在广域网领域和专用网领域得到了巨大的发展。中国移动、电信、联通、广电等电信运营商都已经大规模建设了基于SDH的骨干光传输网络。利用大容量的SDH环路承载IP业务、ATM业务或直接以租用电路的方式出租给企、事业单位。而一些大型的专用…

rpm mysql 更改目录_rpm形式安装的MySQL服务 并 修改数据文件目录( red hat)_mysql...

rpm方式安装的mysql服务 并 修改数据文件目录( red hat)卸载mysql1、查找以前是否装有mysql命令:rpm -qa|grep -i mysql可以看到mysql的两个包:mysql-*..*.RHEL**mysqlclient*.RHEL**2、删除mysql删除命令:rpm -e --nodeps 包名( rpm -ev mys…

python参数化建模 书_Python 中如何实现参数化测试?

之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架。本文想针对测试中一种很常见的测试场景,即参数化测试,继续聊聊关于测试的话题,并尝试将这…

反模式设计_设计模式:模式或反模式,这就是问题

反模式设计我最近遇到了Wiki页面“ Anti-pattern” ,其中包含详尽的反模式列表。 其中一些对我来说很明显。 他们中的一些让我想了一下,其他的让我想了更多。 然后,我开始在页面上查找反模式“ singleton”,但找不到。 &#xff0…

光端机的几种物理接口类型

光端机,就是光信号传输的终端设备。光端机现在能传输的业务很多,如:视频,音频,数据,开关量,电话,以太网等。那么,你对光端机的几种物理接口了解吗,是否懂得光…

js中的数据类型分为两大类分别是什么_数据类型有这么重要吗?

一个没有得到重视的知识点, 数据类型 每种语言都有自己的数据类型,下面以javascript为例 类型的分类 js的数据类型可以分为 两大类: 1,值类型 (String,Number,undefined,Boolean,null) 2,引入类型(Object,Function,Array) 个人理解也可以把值类型和引入类型分为简单类型和复杂类…

监控系统几种常见的光端机传输方案拓扑图

近几年随着模拟摄像机被网络摄像机以及高清同轴摄像机取代,在光纤传输层,之前使用量比较大的视频光端机也逐渐被光纤收发器、POE交换机、网络交换机等网络光通信设备取代掉。目前市场上音频、数据、开关量、电话、对讲等信号依然可以通过光端机来进行传输…

在等待Jakarta EE时

自甲骨文在JavaOne 2017宣布将Java™EE转移到Eclipse Foundation以来已有一年多了。此后发生了很多事情: Java™EE 8 API和实现项目已在EE4J下建立 。 Eclipse GlassFish 5.1 版本即将发布 。 全新的Jakarta EE规范流程指日可待。 社区显示出有关Jakarta EE技术…

[渝粤教育] 中国地质大学 信息检索 复习题 (2)

信息检索-模拟题 一.选择题 1.在CNKI中以下哪一个对检索结果的排序能够体现最新的文献 A.按照主题排序 B.按照下载量排 C.按照被引量排序 D.按照发表时间排序(降序) 2.ISBN是什么的缩写? A.国际标准刊号 B.国际标准书号 C.连续出版物代码 D.国内统一刊号 3.一篇论文列出的参…

[渝粤教育] 中国地质大学 劳动与社会保障法 复习题

《劳动与社会保障法》模拟题 一单选题 1.对劳动合同的无效或者部分无效有争议的由()或者人民法院确认. A.劳动行政部门 B.劳动监察机构 C.劳动争议调解委员会 D.劳动争议仲裁机构 2.用人单位经济性裁员时应当优先留用(). A.订立固定期限劳动合同的人员 B.订立无固定期限劳动合…

mysql导出包_mysql导入导出包括函数或者存储过程

mysql导入导出包括函数或者存储过程1.mysql导出整个数据库mysqldump -h hostname -u username -p databasename > backupfile.sql如果root用户没用密码可以不写-p,当然导出的sql文件你可以制定一个路径,未指定则存放在mysql的bin目录下 www.2cto.co…

[渝粤教育] 中国地质大学 城镇规划 复习题 (2)

《城市规划》模拟题 一.单选题 1.城镇规划所需编制的文件按原国家建委1980年颁布的《城市规划编制审批暂行办法》规定分为(). A.规划图纸和说明书 B.规划文件和说明书 C.城镇现状图和说明书 D.规划说明书和城镇现状图 2.城镇是区域生产力结集中心首先是()的中心. A.区域农业生…

[渝粤教育] 中国地质大学 大学语文 复习题 (2)

《大学语文》模拟题 一.单选题 1.李商隐《无题》中借神化传说抒情的诗句是() A.相见时难别亦难东风无力百花残 B.春蚕到死丝方尽蜡炬成灰泪始干 C.晓镜但愁云鬓改夜吟应觉月光寒 D.蓬山此去无多路青鸟殷勤为探看 2.戴望舒《我用我残陨的手掌》中“只有那辽远的一角依然完整”…