游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

mysql表分区使用及详细介绍

  一、分区概念
  分区是将一个表分成多个区块进行操作和保存,从而降低每次操作的数据,提高性能。而对于应用来说则是透明的,从逻辑上看只有一张表,但在物理上这个表可能是由多个物理分区组成的,每个分区都是独立的对象,可以进行独立处理。
  二、分区作用
  1。可以逻辑数据分割,分割数据能够有多个不同的物理文件路径。
  2。可以存储更多的数据,突破系统单个文件最大限制。
  3。提升性能,提高每个分区的读写速度,提高分区范围查询的速度。
  4。可以通过删除相关分区来快速删除数据
  5。通过跨多个磁盘来分散数据查询,从而提高磁盘IO的性能。
  6。涉及到例如SUM()、COUNT()这样聚合函数的查询,可以很容易的进行并行处理。
  7。可以备份和恢复独立的分区,这对大数据量很有好处。
  三、分区能支持的引擎
  MySQL支持大部分引擎创建分区,入MyISAM、InnoDB等;不支持MERGE和CSV等来创建分区。同一个分区表中的所有分区必须是同一个存储引擎。值得注意的是,在MySQL8版本中,MyISAM表引擎不支持分区。
  四、确认MySQL支持分区
  从MySQL5。1开始引入分区功能,可以如下方式查看是否支持:
  老版本用:SHOWVARIABLESLIKEpartition;
  新版本用:showplugins;
  五、分区类型
  1。RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。
  例如,可以将一个表通过年份划分成两个分区,20012010年、20112020。
  2。LIST分区:类似于RANGE分区,LIST是列值匹配一个离散值集合中的某个值来进行选择。
  比如根据字段把值为1、3、5的放到一起,2、4、6的另外放到一起等等。。。
  3。HASH分区:基于用户定义的表达式的返回值来进行选择分区,该表达式使用将要插入到表中的这些行的列值来进行计算,这个函数必须产生非负整数值。
  通过HASH运算来进行分区,分布的比较均匀
  4。KEY分区:类似于按HASH分区,由MySQL服务器提供其自身的哈希函数。
  按照KEY进行分区类似于按照HASH分区
  六、分区创建注意事项
  1。如果表中存在primarykey或者uniquekey时,分区的列必须是paimarykey或者uniquekey的一个组成部分,也就是说,分区函数的列只能从pk或者uk这些key中取子集
  2。如果表中不存在任何的paimarykey或者uniquekey,则可以指定任何一个列作为分区列
  3。5。5版本前的RANGE、LIST、HASH分区要求分区键必须是int;MySQL5。5及以上,支持非整形的RANGE和LIST分区,即:rangecolumns和listcolumns(可以用字符串来进行分区)。
  七、分区命名
  1。分区的名字基本上遵循其他MySQL标识符应当遵循的原则,例如用于表和数据库名字的标识符。应当注意的是,分区的名字是不区分大小写的。
  2。无论使用何种类型的分区,分区总是在创建时就自动的顺序编号,且从0开始记录。
  八、创建分区
  1。RANGE分区:
  CREATETABLEtest01(
  dayidint(11)DEFAULTNULL,
  macvarchar(32)NOTNULLDEFAULT,
  dtypevarchar(50)NOTNULLDEFAULT
  )ENGINEInnoDBDEFAULTCHARSETutf8
  !50100PARTITIONBYLIST(dayid)
  (PARTITIONp20171205VALUESIN(20171205)ENGINEInnoDB,
  PARTITIONp20171204VALUESIN(20171204)ENGINEInnoDB,
  PARTITIONp20171206VALUESIN(20171206)ENGINEInnoDB,
  PARTITIONp20171207VALUESIN(20171207)ENGINEInnoDB)
  解读:以上为uuid小于5时放到p0分区下,uuid大于5且小于10放到p1分区下,uuid大于10且小于15放到p2分区下,uuid大于15一直到最大值的存在p3分区下
  2。LIST分区:
  CREATETABLEtbltest(
  uuidINTNOTNULL,
  titleVARCHAR(20)
  )
  )
  PARTITIONBYList(uuid)(
  PARTITIONp0VALUESin(1,2,3,5),
  PARTITIONp1VALUESin(7,9,10),
  PARTITIONp2VALUESin(11,15)
  )
  );
  解读:以上为uuid等于1235时放到p0分区,7910放到p1分区,1115放到p2分区。当时用insertinto时如果uuid的值不存在p0p1p2分区时,则会插入失败而报错。
  3。HASH分区:
  HASH分区主要用来确保数据在预先确定数目的分区中平均分布。在RANGE分区和LIST分区中必须明确指定一个指定的列值或列值集合以指定应该保存在哪个分区中。而在HASH分区中,MySQL会自动完成这些工作,要做的只是基于将要被哈希的列值指定一个表达式,以及指定被分区的表将要被分割成的分区数量,如:
  CREATETABLEtbltest(
  uuidINTNOTNULL,
  titleVARCHAR(20)
  ))
  PARTITIONBYHASH(uuid)(
  PARTITIONS3
  ));
  解读:MySQL自动创建3个分区,在执行insertinto时,根据插入的uuid通过算法来自动分配区间。
  注意:
  (1)由于每次插入、更新、删除一行,这个表达式都要计算一次,这意味着非常复杂的表达式可能会引起性能问题,尤其是在执行同时影响大量行的运算(例如批量插入)的时候。
  (2)最有效率的哈希函数是只对单个表列进行计算,并且它的值随列值进行一致的增大或减小,因为这考虑了在分区范围上的修剪。也就是说,表达式值和它所基于的列的值变化越接近,就越能有效地使用该表达式来进行HASH分区。
  3。1:线性HASH分区
  线性HASH分区在PARTITIONBY子句中添加LINEAR关键字。
  线性HASH分区的有点在于增加、删除、合并和拆分分区将变得更加快捷,有利于处理含有及其大量数据的表。它的缺点在于各个分区间数据的分布不大可能均衡。
  4。KEY分区
  类似于HASH分区,HASH分区允许用户自定义的表达式,而KEY分区则不允许使用用户自定义的表达式;HASH分区只支持整数分区,KEY分区支持除了blob和text类型之外的其他数据类型分区。
  与HASH分区不同,创建KEY分区表的时候,可以不指定分区键,默认会选择使用主键或唯一键作为分区键,没有主键或唯一键,就必须指定分区键。
  CREATETABLEtbltest(
  uuidINTNOTNULL,
  titleVARCHAR(20)
  ))
  PARTITIONBYLINEARKey(uuid)
  PARTITIONS3;
  解读:根据分区键来进行分区
  5。子分区
  子分区是分区表中,每个分区的再次分割,适合保存非常大量的数据。
  CREATETABLEtbltest(
  registerTimeDate
  ))
  PARTITIONBYGANGE(YEAR(registerTime))
  SUBPARTITIONBYHASH(TODAYS(registerTime))
  SUBPARTITIONS2
  (
  PARTITIONp0VALUESLESSTHAN(2017),
  PARTITIONp1VALUESLESSTHAN(2020),
  PARTITIONp2VALUESLESSTHANMAXVALUE
  );
  解读:主分区使用RANGE按照年来进行分区,有3个RANGE分区。这3个分区中又被进一步分成了2个子分区,实际上,整个表被分成了326个分区。每个子分区按照天进行HASH分区。小于2017的放在一起,20172020的放在一起,大于2020的放在一起。
  注意:
  (1)在MySQL5。1中,对于已经通过RANGE或LIST分区了的表在进行子分区是可能的。子分区既可以使用HASH分区,也可以使用KEY分区。这也被称为复合分区。
  (2)每个分区必须有相同数量的子分区。
  (3)如果在一个分区表上的任何分区上使用SUBPARTITION来明确定义任何子分区,那么就必须定义所有的子分区。
  (4)每个SUBPARTITION子句必须包含(至少)子分区的一个名字。
  (5)在每个子分区内,子分区的名字必须是惟一的,目前在整个表中,也要保持唯一。例如:
  PARTITIONBYRANGE(YEAR(registerTime))
  SUBPARTITIONBYHASH(TODAYS(registerTime))
  (
  PARTITIONp0VALUESLESSTHAN(2017)(
  SUBPARTITIONs0,
  SUBPARTITIONs1
  ),
  PARTITIONp1VALUESLESSTHAN(2020)(
  SUBPARTITIONs2,
  SUBPARTITIONs3
  ),
  PARTITIONp2VALUESLESSTHANMAXVALUE(
  SUBPARTITIONs4,
  SUBPARTITIONs5
  )
  )
  子分区可以用于特别大的表,可以在多个磁盘间分配数据和索引。例如:
  SUBPARTITIONs0
  DATADIRECTORYdisk0data
  INDEXDIRECTORYdisk0idx
  ,
  ,
  SUBPARTITIONs1
  DATADIRECTORYdisk1data
  INDEXDIRECTORYdisk1idx
  九、MySQL分区处理NULL值的方式
  MySQL中的分区禁止空值NULL上没有进行处理,无论它是一个列值还是一个用户定义表达式的值,一般而言,在这种情况下MySQL把NULL视为0。如果你希望回避这种做法,你应该在设计表时声明列NOTNULL。
  十、分区管理概述
  可以对分区进行添加、删除、重新定义、合并或拆分等管理操作。
  RANGE和LIST分区的管理
  1。删除分区语句如:altertabletbltestdroppartitionp0;
  注意:
  (1)当删除了一个分区,也同时删除了该分区中所有的数据。
  (2)可以通过showcreatetabletbltest;来查看新的创建表的语句。
  (3)如果是LIST分区的话,删除的数据不能新增进来,因为这些行的列值包含在已经删除了的分区的值列表中。
  2。添加分区语句如:altertabletbltestaddpartition(partitionp3valueslessthan(50));
  注意:
  (1)对于RANGE分区的表,只可以添加新的分区到分区列表的最高端。
  (2)对于LIST分区的表,不能添加已经包含在现有分区值列表中的任意值。
  3。如果希望能不丢失数据的条件下重新定义分区,可以使用如下语句:
  ALTERTABLEtblnameREORGANIZEPARTITIONpartitionlistINTO(partitiondefinitions)
  (1)拆分分区如:
  ALTERTABLEtblnameREORGANIZEPARTITIONpartitionlistINTO(partitions0valueslessthan(5),partitions1valueslessthan(10));
  或者如:
  ALTERTABLEtblnameREORGANIZEPARTITIONp0INTO(partitions0valuesin(1,2,3),partitions1valuesin(4,5));
  (2)合并分区如:ALTERTABLEtblnameREORGANIZEPARTITIONs0,s1INTO(partitionp0valuesin(1,2,3,4,5));
  4。删除所有分区,但保留数据,形式:ALTERTABLEtblnameremovepartitioning;
  HASH和KEY分区的管理
  1。减少分区数量语句如:ALTERTABLEtblnameCOALESCEPARTITION2;
  2。添加分区数量语句如:ALTERTABLEtblnameaddPARTITIONpartitions2;
  其他分区管理语句
  1。重建分区:类似于先删除保存在分区中的所有记录,然后重新插入它们,可用于整理分区碎片。如:ALTERtabletblnameREBUILDPARTITIONp2,p3;
  2。优化分区:如果从分区中删除了大量的行,或者对一个带有可变长度的行(也就是说,有VARCHAR,BLOB或TEXT类型的列)做了许多修改,可以使用ALTERTABLEtblnameOPTIMIZEPARTITION来收回没有使用的空间,并整理分区数据文件的碎片。如:ALTERTABLEtblnameOPTIMIZEPARTITIONp2,p3;
  3。分析分区:读取并保存分区的键分布,如:ALTERTABLEtblnameANALYZEPARTITIONp2,p3;
  4。检查分区:检查分区中的数据或索引是否已经被破坏,如:ALTERTABLEtblnameCHECKPARTITIONp2,p3;
  5。修补分区:修补被破坏的分区,如:ALTERTABLEtblnameREPAIRPARTITIONp2,p3;
  十、查看分区信息
  1。查看分区信息:selectfrominformationschema。partitionswheretableschemaarch1andtablenametbltestG;
  2。查看分区上的数据:selectfromtbltestpartition(p0);
  3。查看MySQL会操作的分区:explainpartitionsselectfromtbltestwhereuuid2;
  十一、局限性
  1。最大分区数目不能超过1024,一般建议对单表的分区数不要超过50个。
  2。如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内。
  3。不支持外键。
  4。不支持全文索引,对分区表的分区键创建索引,那么这个索引也将被分区。
  5。按日期进行分区很合适,因为很多日期函数可以用。但是对字符串来说合适的分区函数不太多。
  6。只有RANGE和LIST分区能进行子分区,HASH和KEY分区不能进行子分区。
  7。临时表不能被分区。
  8。分区表对于单条记录的查询没有优势。
  9。要注意选择分区的成本,没插入一行数据都需要按照表达式筛选插入的分区。
  10。分区字段尽量不要可以为null

维护公共场所卫生主题班会教案教学目标:让学生了解维护公共场所卫生与健康的关系,从小养成维护公共场所卫生的良好品德。教学重点:让学生了解公共场所卫生与健康的关系。教学难点:培养学生维护公共……用学而时习之怎么造句学而时习之〔拼音〕:xurshxzh学过的内容要经常复习它。造句:1、原来如此相当于学而时习之吧2、这信息量太大了,内涵太深了,学而时习之3、学而……四年级下册数学等量关系教学设计范文作为一名人民教师,很有必要精心设计一份教学设计,教学设计是一个系统化规划教学系统的过程。那么应当如何写教学设计呢?以下是小编精心整理的四年级下册数学《等量关系》教学设计范文,欢……鸿门宴教案人教版《鸿门宴》选自司马迁的《史记项羽本纪》,是中技语文文言文教学的经典名篇。通过文章可以看出《史记》的魅力,其中樊哙闯帐一节的语言描写更是整篇文章的重点,下面为大家分享了鸿门宴教案……咸阳值雨与宿城南亡友别墅古诗阅读练习答案及赏析咸阳值雨咸阳桥上雨如悬,万点空蒙隔鱼船。还似洞庭春水色,晓云将入岳阳天。宿城南亡友别墅水流花落叹浮生,又伴游人宿杜城。还似昔年残梦里,透帘斜月独闻……关于狐狸和乌鸦的教学设计教材说明:本文通过讲述一只狡猾的狐狸用奉承话,骗取乌鸦的一片肉的故事说明爱听奉承话容易上当受骗。教学目标:1、理解课文内容,懂得喜欢听奉承话,容易上当受骗。……计算机的组成教学目的和要求1、学生了解计算机组成各部分的名称和作用。2、学生知道什么是计算机软件,了解计算机软件的作用。3、学生了解计算机处理信息的过程。4、通过介……黄山奇石课文的教学设计【教材简析】这是一篇看图学文,由四幅图和一篇课文组成。课文讲的是闻名中外的黄山风景区景色秀丽神奇,其中无数的奇岩、怪石更是十分有趣。课文共六段。第一段总写黄山风景区的景色……Thisismyfather教学设计教材分析:本节课是Unit3第一课时的教学内容,主要学习句型Thisismyfathermotherbrothersister,并运用句型Thisismy介绍家庭成……50米快速跑教学反思范文50米快速跑是小学体育教学的主要内容之一彩茄生必须学习和掌握的主要体育技能。为了贯彻新课程标准的精神极探索有效、合理的教学方法谏杓平萄内容时我充分考虑学生已掌握的运动技能和身体……玩具进行曲教学反思本课是一年级上册第一单元的内容,包括歌曲《玩具进行曲》和听赏《玩具兵进行曲》两项具体教学内容。教材在此单元抓住了孩子们好玩、好动的心理特点和年龄特征,以儿童大多钟爱玩具为主线,……使命召唤中的汽车使用悍马商标侵权吗?网络游戏作为一个虚拟世界,可以使人们虚拟世界实现现实世界无法实现的梦想。游戏制作厂商在开发一款游戏时也会为了追求逼真,将现实世界中的实物直接搬到了网络世界中,那么,问题来了:网……
小学语文教学设计识字2小学语文教学设计:识字2一、观察认真观察每个字的间架结构,看清部件和笔画在田字格中的位置。二、比较差异比较:在比较中探究相同结构的字在写法上的差异。如,……特斯拉玩具车内置高端游戏PC,售价上万美元还能开IT之家4月28日消息油管博主MKBHD近日上传了一个视频,展示了一款内嵌在特斯拉模型车中的高端游戏PC,这款PC是由OriginPC公司打造。这款特斯拉汽车模型实际上是……中国制造全力以赴,为何呼吸机仍全球告急即使是欧美等医疗体系异常发达的国家,大概也没有想到,有一天口罩、防护服和呼吸机等医疗物资会成为它们抗疫的最短板。而在这些医疗物资中,呼吸机当仁不让的成为全球抗疫一线最金贵的医用……YouTube更改HD定义,1080p及以上才是高清IT之家5月17日消息YouTube现已停止将720p划分为HD之列,只有1080p及以上才是高清视频。如上图所示,在YouTube的画质选项中,720p已经没有了HD的……青少年编程能力等级标准正式发布,明年开放全国范围等级测试申报近日,《青少年编程能力等级》团体标准第1部分、第2部分由全国高等学校计算机教育研究会、全国高等院校计算机基础教育研究会、中国软件行业协会及中国青少年宫协会4个全国一级团体联合正……重要快递被签收致丢失,客户诉快递公司索赔被驳据海淀法院网消息,因主张快递公司将自己的一个重要快递丢失,程女士以财产损害赔偿纠纷为由,将该快递公司诉至法院,要求确认程女士没有收到案涉快递,并赔偿快递丢失造成的损失1万元。日……小学数学平面图形的拼组教学反思《平面图形的拼组》是在学生已经认识了平面图形长方形、正方形、三角形和圆的基础上,通过动手拼组,进一步认识平面图形的一些特征及图形之间的一些关系。这是一节操作性很强的课,主要是让……北京市市场监督管理局严禁双11促销价格先涨后降IT之家11月3日消息进入11月,各大电商平台已经开启双11促销活动,今日北京市市场监督管理局表示,要及时发现并制止虚构原价、先涨后降、不履行价格承诺等违法行为。据中新网……英特尔科技开放日回顾雅典娜计划加速推进,十代酷睿全面开花本月8日,英特尔在北京举行了英特尔科技开放日,在这场活动上,英特尔向用户展示了全新的十代酷睿移动处理器所带来各项提升,同时英特尔宣布雅典娜计划设备认证正在加速进行。此次活……尊重孩子的兴趣取向的学前班音乐教学反思音乐活动《小猫》,整节活动中幼儿的参与性很强,能跟着我积极模仿小花猫,并且快乐的学唱歌曲。活动中,我安排了许多表演内容,这样能满足幼儿的身心需要,在唱唱跳跳中熟悉歌曲旋律,在游……微软发布Chromium版Edge浏览器稳定版,替换内置Ed感谢IT之家网友WaterHome的线索投递!IT之家10月28日消息根据网友投稿,微软终于推出了Chromium版Edge浏览器的稳定版,新版本安装后将会直接替换Win……组歌说课稿精选一教材简析《组歌》是人教版八年级下册第二单元的一篇自读课文。这一单元所选课文全部是散文诗。本文是黎巴嫩诗人纪伯伦《组歌》中的两篇。这两首散文诗都采用拟人手法,其中海浪的形……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网