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

MySQL数据库性能优化之分区分表分库

  分表是分散数据库压力的好方法。
  分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库。
  当然,首先要知道什么情况下,才需要分表。个人觉得单表记录条数达到百万到千万级别时就要使用分表了。
  分表的分类
  1、纵向分表
  将本来可以在同一个表的内容,人为划分为多个表。(所谓的本来,是指按照关系型数据库的第三范式要求,是应该在同一个表的。)
  分表理由:根据数据的活跃度进行分离,(因为不同活跃的数据,处理方式是不同的)
  案例:
  对于一个博客系统,文章标题,作者,分类,创建时间等,是变化频率慢,查询次数多,而且最好有很好的实时性的数据,我们把它叫做冷数据。而博客的浏览量,回复数等,类似的统计信息,或者别的变化频率比较高的数据,我们把它叫做活跃数据。所以,在进行数据库结构设计的时候,就应该考虑分表,首先是纵向分表的处理。
  这样纵向分表后:
  首先存储引擎的使用不同,冷数据使用MyIsam可以有更好的查询数据。活跃数据,可以使用Innodb,可以有更好的更新速度。
  其次,对冷数据进行更多的从库配置,因为更多的操作时查询,这样来加快查询速度。对热数据,可以相对有更多的主库的横向分表处理。
  其实,对于一些特殊的活跃数据,也可以考虑使用memcache,redis之类的缓存,等累计到一定量再去更新数据库。或者mongodb一类的nosql数据库,这里只是举例,就先不说这个。
  2、横向分表
  字面意思,就可以看出来,是把大的表结构,横向切割为同样结构的不同表,如,用户信息表,user1,user2等。表结构是完全一样,但是,根据某些特定的规则来划分的表,如根据用户ID来取模划分。
  分表理由:根据数据量的规模来划分,保证单表的容量不会太大,从而来保证单表的查询等处理能力。
  案例:同上面的例子,博客系统。当博客的量达到很大时候,就应该采取横向分割来降低每个单表的压力,来提升性能。例如博客的冷数据表,假如分为100个表,当同时有100万个用户在浏览时,如果是单表的话,会进行100万次请求,而现在分表后,就可能是每个表进行1万个数据的请求(因为,不可能绝对的平均,只是假设),这样压力就降低了很多很多。
  延伸:为什么要分表和分区?
  日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。
  什么是分表?
  分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,。MYI索引文件,。frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。
  什么是分区?
  分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。
  MySQL分表和分区有什么联系呢?
  1、都能提高mysql的性高,在高并发状态下都有一个良好的表现。
  2、分表和分区不矛盾,可以相互配合的,对于那些大访问量,并且表数据比较多的表,我们可以采取分表和分区结合的方式(如果merge这种分表方式,不能和分区配合的话,可以用其他的分表试),访问量不大,但是表数据很多的表,我们可以采取分区的方式等。
  3、分表技术是比较麻烦的,需要手动去创建子表,app服务端读写时候需要计算子表名。采用merge好一些,但也要创建子表和配置子表间的union关系。
  4、表分区相对于分表,操作方便,不需要创建子表。
  我们知道对于大型的互联网应用,数据库单表的数据量可能达到千万甚至上亿级别,同时面临这高并发的压力。MasterSlave结构只能对数据库的读能力进行扩展,写操作还是集中在Master中,Master并不能无限制的挂接Slave库,如果需要对数据库的吞吐能力进行进一步的扩展,可以考虑采用分库分表的策略。
  1、分表
  在分表之前,首先要选中合适的分表策略(以哪个字典为分表字段,需要将数据分为多少张表),使数据能够均衡的分布在多张表中,并且不影响正常的查询。在企业级应用中,往往使用orgid(组织主键)做为分表字段,在互联网应用中往往是userid。在确定分表策略后,当数据进行存储及查询时,需要确定到哪张表里去查找数据,
  数据存放的数据表分表字段的内容分表数量
  2、分库
  分表能够解决单表数据量过大带来的查询效率下降的问题,但是不能给数据库的并发访问带来质的提升,面对高并发的写访问,当Master无法承担高并发的写入请求时,不管如何扩展Slave服务器,都没有意义了。我们通过对数据库进行拆分,来提高数据库的写入能力,即所谓的分库。分库采用对关键字取模的方式,对数据库进行路由。
  数据存放的数据库分库字段的内容数据库的数量
  3、即分表又分库
  数据库分表可以解决单表海量数据的查询性能问题,分库可以解决单台数据库的并发访问压力问题。
  当数据库同时面临海量数据存储和高并发访问的时候,需要同时采取分表和分库策略。一般分表分库策略如下:
  中间变量关键字(数据库数量单库数据表数量)
  库取整(中间变量单库数据表数量)
  表(中间变量单库数据表数量)
  实例:
  1、分库分表
  很明显,一个主表(也就是很重要的表,例如用户表)无限制的增长势必严重影响性能,分库与分表是一个很不错的解决途径,也就是性能优化途径,现在的案例是我们有一个1000多万条记录的用户表members,查询起来非常之慢,同事的做法是将其散列到100个表中,分别从members0到members99,然后根据mid分发记录到这些表中,牛逼的代码大概是这样子:
  复制代码代码如下:
  lt;?php
  for(i0;i100;i){
  echoCREATETABLEdb2。members{i}LIKEdb1。members
  ;
  echoINSERTINTOmembers{i}SELECTFROMmembersWHEREmid100{i}
  ;
  }
  ?
  2、不停机修改mysql表结构
  同样还是members表,前期设计的表结构不尽合理,随着数据库不断运行,其冗余数据也是增长巨大,同事使用了下面的方法来处理:
  先创建一个临时表:
  创建临时表
  CREATETABLEmemberstmpLIKEmembers
  然后修改memberstmp的表结构为新结构,接着使用上面那个for循环来导出数据,因为1000万的数据一次性导出是不对的,mid是主键,一个区间一个区间的导,基本是一次导出5万条吧,这里略去了
  接着重命名将新表替换上去:
  这是个颇为经典的语句哈
  RENAMETABLEmembersTOmembersbak,memberstmpTOmembers;
  就是这样,基本可以做到无损失,无需停机更新表结构,但实际上RENAME期间表是被锁死的,所以选择在线少的时候操作是一个技巧。经过这个操作,使得原先8G多的表,一下子变成了2G多。

初代人工智慧手机,华为荣耀Magic开箱体验如果一款手机,无需你给它下达指令,它就会想你所想,迷路了为你自动导航,去餐厅给你自动点餐,是不是很科幻?这确实是科幻电影里才有的场景,当电子产品拥有智慧,那该是多么美妙的一件事……工业设计软件创新峰会持续进行,中望自主CAx根技术赋能数字化10月22日,由广州中望龙腾软件股份有限公司(简称中望软件)主办的2021中国工业设计软件创新峰会在广州、宁波同时举行。峰会聚焦产业数字化转型,探讨工业软件公司、行业企业如何协……保险公司MAIF视觉形象升级MAIF成立于1934年,是法国最大的保险公司之一,提供汽车,人寿和家庭以及健康保险,公司大约有300万会员。今年早些时候,他们引入了由法国Wcie公司设计的新标识形象。……蓝牙线可以hifi了吗试横评五条蓝牙线和解码耳放线(上)一直认为有线要远优于无线蓝牙,主要原因是二年多前曾经试用过一根号称用当时最好芯片的蓝牙线,推自己的NS1,效果确实不理想,推力不足导致声音单薄,低频不理想,解析声场也完全不行,……宝骏KiWiEV我不只是代步车我更是你的个性标签说到新能源电动微型车,一定会让人想到五菱宏光MINIEV,毕竟这款车型全面带火了微型电动车乘用市场,其亲民的价格和满足人们最基本的出行需求,让它成为许多消费者竞相追逐的纯电微型……如何解决地面清洁终极难题?这次我不选择吸拖一体机,而选了TA洗碗、拖地一直是家庭任务中容易让人头疼的问题,目前我分配到就是这两项,可气的是清洁效果不佳还是会被媳妇打回重做。为了事半功倍,只能寻求清洁电器来帮我渡过难关。相比洗碗机的……Mybatis数据源模块Mybatis数据源模块本篇学习Mybatis的数据源模块org。apache。ibatis。datasource数据源模块要做什么数据源模块要实现的功能:常……华为再公开一项智能汽车行驶轨迹规划专利,提升自动驾驶安全性自从华为宣布入局汽车行业以来,自动驾驶就一直是其开发的重点。近日,华为又公开了一项轨迹规划的方法、装置、控制器和智能车的专利,这项技术可以通过结合多个传感器采集障碍物数据……中台实践数据中台构建五步法1hr数据中台构建五步法系统都是为应用而生的,数据中台也不例外。要构建一套数据中台服务于企业内部和外部运营,需要有成熟的数据中台建设方法论作为指导。企业建设数据中台遵循的……如此美丽三亚西岛三亚有一个非常幽静的小岛,叫做西岛,本来是三亚的旅游圣诞,却因为一部电影被蜈支洲岛盖过,所谓蜈支不无知,一念天下知,虽然西岛不如蜈支洲岛红火,却也被誉为海上桃源,动感天堂,令人……最便宜的自动挡旅行车,5。78万元起,除了空间大还是空间大虽然说旅行车并不是个大市场,但作为一种小众车型,它还是有很多拥趸的,因为它有着轿车般的舒适性,还有着轿车无法比拟的空间。不过,旅行车市场一直被中高级车所把持,那么有没有一款价格……全新大5座SUV,动力强劲,而百公里综合油耗仅为1。8L说到用车成本低,电动车无疑是首选,但电动车的续航里程和充电对于有些人来说是个问题。那有没有这样一款车,油耗低,(折合后)可以媲美电动车,续航里程长,而且没有充电的焦虑。从目前来……
保定打造氢能与燃料电池汽车示范应用全产业链近日,由保定市参与申报的京津冀燃料电池汽车示范城市群,被国家五部委(财政部、工业和信息化部、科技部、国家发展改革委、国家能源局)批准为首批示范试点城市群。结合前期已经披露……MIUI性能模式即将回归,骁龙888发热可自己掌握对于骁龙888机型的发热,如果不进行温控,就会存在发热量大(50度)、功耗大、游戏也不持久。做了温控,又有用户反应游戏帧数不够,对此MIUI先锋小组给出一个很MIUI的解决方案……和SHURE一起说得好听10月29日,上海声音小镇,Shure和媒体及用户朋友们一起,在全新设计的Shure体验中心和Shure创作中心,开启创意之旅,分享体验了全新MV7主播话筒的创作魅力。当……解析丨西部数据iNANDMCEU551闪存智能手机存储效能的随着芯片制程、架构和算力算法的精进,作为智能手机整个系统链条中的关键一环,存储器的性能和效能也在不断实现突破。新近推出的,专为智能手机定制的西部数据iNANDMCEU551嵌入……比亚迪唐EV搭载刀片电池日前,我们从外媒获悉,比亚迪已经通过当地经销商开始向挪威首批客户交付七座版唐(参数询价)EV车型。新车在挪威的起售价格为59。99万挪威克朗,约合人民币44。1万元,相比国内市……图虫相册批量下载的方法,批量保存图虫相册素材的方法图虫相册作为当下热门的影像传播平台,已经有超过两千万的摄影爱好者入驻了图虫,在这里,每天都有来自全球各地的摄影创作者在图虫发布摄影、视频作品。图虫相册里的作品涵盖多个细分领域,……特大虚开发票案!20000000000!200多人被抓近日!国家税务总局曝光8起虚开案,涉案总额超200亿,200多人被抓!法网恢恢疏而不漏,提醒购买或接收虚开发票的单位和个人一定不要心存侥幸!1hr总局曝光!虚开被查!……为虚开发票提供便利!又一地方税务局领导被判有期徒刑五年传统砂石行业普遍存在从业人员税法意识薄、税收征管基础弱、纳税遵从度低等问题,偷税漏税、虚开发票、虚假交易等违法现象时有发生。砂石电商平台已实现与国家税务系统的技术对接,为……加入即可服务1。83亿个家!海尔智家让开发者面向亿万家庭开发者获取用户资源有多难?非常难,因为开发者都在研发好产品,缺少与用户直接面对面的机会。但同时也很容易,只要加入正确的平台,就能轻松获取亿万资源。而海尔智家,就提供了这样的平台……形势逆转?关于华为5G,欧洲多国再次表态为了遏制华为的发展,重新夺回5G通信市场主导权,美国可谓是费劲了心思,不仅构陷华为设备存在安全后门,而且还实施所谓的网络清洁计划,通过游说以及胁迫的手段,拉拢其他国家一起来孤立……个人怎么开发APP?个人怎么开发APP?正常来说敲代码就好了,只是个人开发app和团队开发app在功能实现以及成品速度上有差别而已,说的好像也是这个道理。那么个人怎么开发APP?按照以往的经……iOS15首个测试版和Beta2版本一同发布,该升级哪一个?近日,苹果同时发布了iOS15第一个公测版本PublicBeta2以及第二个开发者版本Beta2,敢于尝鲜的果粉一时间不知道该如何升级哪一个版本。下面就各个版本的更新情况……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网