专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

面试官分库分表,真的有必要吗?

  关于数据库分库分表的面试题已经是烂大街了,面经小册各路神仙的经验分享也是不绝于耳。当然现有的技术解决方案已经是很成熟了。
  但是想要使用的得心应手,首先应该搞清楚三个问题?为什么使用分库分表?何时使用分库分表?如何分库分表?为什么使用分库分表?
  答案很简单:当数据库出现性能瓶颈。顾名思义就是数据库扛不住了。
  数据库出现瓶颈,对外表现有以下几个方面?高并发场景下,大量请求阻塞,大量请求都需要操作数据库,导致连接数不够了,请求处于阻塞状态。SQL操作变慢(慢SQL增多)如果数据库中存在一张上亿数据量的表,一条SQL没有命中索引会全表扫描,这个查询耗时会非常久。随着业务流量变大存储出现问题,单库数据量越来越大,给存储造成巨大压力。
  从机器角度,性能瓶颈不外乎就是CPU、磁盘、内存、网络这些,要解决性能瓶颈最简单粗暴的方式就是提升机器性能,但是通过这种方式投入产出比往往不高,也不划算,所以重点还是要从软件层面去解决问题。
  数据库相关优化方案
  数据库优化方案很多,主要分为两大类:软件层面、硬件层面。软件层面包括:SQL调优、表结构优化、读写分离、数据库集群、分库分表等;硬件层面主要是增加机器性能。
  分库分表其实不是数据库优化方案的最终解决办法,一般来说说能用优化SQL、表结构优化、读写分离等手段解决问题,就不要分库分表,因为分库分表会带来更多需要解决的问题,比如说分布式事务,查询难度增大等。何时使用分库分表?
  什么时候我们才会选择分库分表?前面已经说了,除了分库分表以外那些软件手段搞不定的时候,我们才会选择分库分表。
  我们心中可能会有这些疑问?使用分库分表,我们的评判依据是什么?一张表存储了多少数据的时候,才需要考虑分库分表?数据增长速度很快,每天产生多少数据,才需要考虑做分库分表?
  阿里巴巴开发手册有推荐的思路:单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。
  注意:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。如何分库分表?
  当前针对分库分表有很多解决方案。这里分两个方面来展开说说:分库和分表。分库
  很多项目前期为了快速迭代,多个应用公用一套数据库,随着业务量增加,系统访问压力增大,系统拆分就势在必行。
  为了保证业务平滑,系统架构重构也是分了几个阶段进行。多应用单数据库
  第一个阶段将商城系统单体架构按照功能模块拆分为子服务,比如:Portal服务、用户服务、订单服务、库存服务等。
  多应用单数据库如上图,多个服务共享一个数据库,这样做的目的是底层数据库访问逻辑可以不用动,将影响降到最低。多应用多数据库
  随着业务推广力度加大,数据库终于成为了瓶颈,这个时候多个服务共享一个数据库基本不可行了。我们需要将每个服务相关的表拆出来单独建立一个数据库,这其实就是分库了。
  单数据库的能够支撑的并发量是有限的,拆成多个库可以使服务间不用竞争,提升服务的性能。
  从一个大的数据中分出多个小的数据库,每个服务都对应一个数据库,这就是系统发展到一定阶段必要要做的分库操作。分表
  说完了分库,那什么时候才会分表呢?
  如果系统处于高速发展阶段,拿商城系统来说,一天下单量可能几十万,那数据库中的订单表增长就特别快,增长到一定阶段数据库查询效率就会出现明显下降。
  因此当表数据增长过快,根据阿里巴巴开发规范中超过500w的数据就要考虑分表了,当然这只是一个经验值,具体要不要分表还要看业务考虑未来三年的一个业务增量。
  如何分表?
  分表有几个维度,一是水平切分和垂直切分,二是单库内分表和多库内分表。水平拆分和垂直拆分
  拿商品表来说,表中分为几类属性:一类是基础属性,例如:商品名称、通用名,商品编码等信息。二类是规格属性:尺寸、型号等信息。三类是拓展属性:描述商品特征的一些属性。我们可以将其拆分为基础信息表、拓展属性表、属性信息表等。这几张表结构不同并且相互独立。但是从这个角度没有解决因为数据量过大而带来的性能问题,因此我们还需要继续做水平拆分。
  水平拆分表的方法很多种,比如说1w条数据,我们拆分为两个表,id为基数的放在user1,id为偶数的放在user2中,这样的拆分方式就是水平拆分。
  其他水平拆分的方式也很多,除了上面按照id来拆分,还可以按照时间维度拆分,比如订单表,可以按照每日、每月等进行拆分。每日表:只存储当天你的数据。每月表:可以起一个定时任务将前一天的数据全部迁移到当月表。历史表:同样可以用定时任务把时间超过30天的数据迁移到history表。
  总结一下水平拆分和垂直拆分的特点:垂直切分:基于表或者字段划分,表结构不同。水平拆分:基于数据划分,表结构相同,数据不同。根据表中字段的某一列特性,分而治之。
  水平拆分也分两种拆分方式。单库内拆分和多库内拆分单库内拆分和多库内拆分
  拿针对用户表的拆分来举例,之前的单个用户表按照某种规则拆分为多个子表,多个子表存在于同一数据库中。比如下面用户表拆分为用户1表、用户2表。
  单库内拆分是在一个数据库中,将一张表拆分为多个子表,一定程度上可以解决单表查询的性能问题,但是也会遇到另外一个问题:但数据库的数据瓶颈。
  所以在行业内更多的将子表拆分到多个数据库中,如下图,用户表拆分为4个子表,4个子表分两批存在两个不同的数据库中,根据一定的规则进行路由。
  多库拆分用一句话概括:主要是为了减少单张表数据量大小,解决单表数据量过大带来的性能问题。
  但是分库分表也带来许多问题。分库分表带来的问题
  既然分库分表方案那么好,那我们是不是在项目初期就应该采用这种方案呢?莫慌,虽然分库分表解决了很多性能问题,但是同时也给系统带来了很多复杂性。下面我展开说说1。跨库关联查询
  之前单体项目,我们想查询一些数据,无脑join就好了,只要数据模型设计没啥问题,关联查询起来其实还是很简单的。现在不一样了,分库分表后的数据可能不在一个数据库,那我们如何关联查询呢?
  下面推荐几种方式去解决这个问题:字段冗余:把需要关联的字段放到主表中,避免join操作,但是关联字段更新,也会引发冗余字段的更新;数据抽象:通过ETL等将数据汇总聚合,生成新的表;全局表:一般是一些基础表可以在每个数据库都放一份;应用层组装:将基础数据查出来,通过应用程序计算组装;同特征的数据在一张表:举个例子:同一个用户的数据在同一个库中,比如说我们对订单按照用户id进行分表,订单主表、订单拓展信息表、跟订单有关联查询的表都按照用户id进行分表,那么同一个用户的订单数据肯定在同一个数据库中,订单维度的关联查询就不存在跨库的问题了。2。分布式事务
  单数据库我们可以用本地事务搞定,使用多数据库就只能通过分布式事务解决了。
  常用的解决方案有:基于可靠消息(MQ)的最终一致性方案、二段式提交(XA)、柔性事务。
  当然分布式事务相关开源项目推荐两个:Seata、TXLCN
  比较推荐Seata,阿里出品、大厂加持、如果需要企业级版本支持也是有的。3。排序、分表、函数计算问题
  使用SQL时,orderby、limit等关键字需要特殊处理,一般都是采用数据分片的思路:现在每个分片路由上执行函数、然后将每个分片路由的结果汇总再计算,然后得出最终结果。
  开源的解决方案当然也有不少,比较推荐shardingsphere,无论是基于client或者基于数据库proxy的都有支持。4。分布式ID
  既然分库分表了,主键id已经不能唯一确定我们的业务数据了,随之而来的就是分布式id,顾名思义就是在多个数据库多张表中唯一确定的ID。
  常见的分布式Id解决方案有:UUID基于全局数据库自增的ID表基于Redis缓存生成全局ID雪花算法(Snowflake)百度uidgenerator(雪花算法的变种)美团Leaf(雪花算法的变种)滴滴Tinyid
  这些解决方案后面有专门的文章去介绍,这里不过多展开。5。多数据源
  分库分表之后可能面临从多个数据库中获取数据,一般的解决方案有,基于client适配和基于proxy适配。
  比较成熟并且常用的中间件有:shardingsphere(apache顶级项目相当成熟,文档完善)MyCat(社区不太活跃、不推荐)总结
  如果遇到数据库问题,建议不要着急分库分表。原则是:能不分库分表就不要做。先看下能否通过常规优化手段解决问题。
  如上所述,引入分库分表虽然可以解决数据库瓶颈问题,但是也给系统带来巨大的复杂性,不是非必须不要使用。设计系统我们一向要本着高可拓展去设计,但是不要过度设计和超前设计。适合当前系统的设计才是最好的。
  作者:爪哇干货分享
  链接:https:juejin。cnpost7186448714779590711

白皮书是新时代党解决台湾问题总体方略的高度概括国务院台湾事务办公室国务院新闻办公室今日重磅发表台湾问题与新时代中国统一事业白皮书。为什么选在此时发布这样一个白皮书?学者方面有什么样的解读?厦门大学台湾研究院副院长张文生教授在接环台演习刚结束,英国外相就召见我国驻英大使,要求对军演做解释近日东部战区发言人施毅表示,东部战区近期在台岛周边海空域组织了联合军事行动,目前已经完成各项任务,接下来将转入战备警巡。这标志着这场从本月4日开始的大规模环台军演圆满结束,值得一提全新丰田威驰正式发布小号凯美瑞的既视感日前,丰田在海外市场正式发布了全新一代丰田威驰。新车基于DNGA架构打造,外观采用全新设计风格,未来将率先登陆东南亚市场。外观方面,新车外观采用全新的设计风格,梯形格栅的面积比现款布衣可动?Alphamax迪迦奥特曼来了Alphamax带来了一款小比例的迪迦奥特曼可动人偶,那么这款产品有什么卖点,我们一起来看看吧!官图鉴赏这款迪迦奥特曼全高约16。5cm尺寸方面比万代真骨雕那款要稍大一些外观造型方8万人见证!巴萨5000万巨星狂飙15分钟造3球,本泽马迎劲敌甘伯杯决赛,巴萨在诺坎普大开杀戒,60大胜墨西哥劲旅美洲狮,展现了强悍的进攻火力。莱万多夫斯基的表现更是出色,他在短短15分钟内就完成1球2助攻,直接参与了3个进球。论射术和组织能今年前7个月我国水利工程建设完成投资5675亿元创历史新高央视网消息水利部今天(8月10日)举行新闻发布会,有关负责人表示,今年前7个月,我国水利工程建设完成投资5675亿元,创历史新高。17月,我国共完成水利建设投资5675亿元,较去年当代大学生能有多离谱??会担心网友的精神状态要说现代生存的必需品有什么水食物手机空调当然也少不了万能的WiFi我每次去图书馆看这一个个起的名字也太好玩了不得不说有趣的灵魂图书馆一抓一大把为了不让别人连上也是够拼的秽乱后宫罪不艾小羊王菲的脸塌成这样,治好了多少中年女性的精神内耗昨天的一个大新闻是王菲终于营业了,合作的是同样很久没营业的墨镜王。王家卫与王菲合作的重庆森林,是无数70后80后的港片记忆。据说是给品牌拍一个广告,王菲的状态被网友评价为脸颊凹陷法买国产手机不要扣扣搜搜,目前这4部手机推荐入手,用五年没压力很多朋友都觉得旗舰机是智商税,但其实并不是,贵的手机当然有贵的手机过机之处,如今的市场也是非常透明,用户都能感觉的出来,如果在预算足够的情况下,选择配置相对较高的手机,其实总体来看1948年大战在即,毛主席为何下令枪决军区参谋长?他犯下了什么错1946年,解放战争正式打响。到了1948年,战局进入了白热化阶段。可是,大战在即时,毛主席做出了一个令人震惊的决定,要下令枪决一位军区参谋长。聂荣臻听到后,觉得很诧异。自从加入共山口百惠最红的年纪嫁给三浦友和,隐退40余年,63岁当奶奶了在这个偶像满天飞的时代,几乎每个人都有自己疯狂迷恋的爱豆,但追星并不是当今社会年轻人的专利。上世纪70年代曾是一个疯狂的造星时代,号称亚洲四小龙之一的日本,就曾涌现出一大批风靡东南
西安的大学排名是什么?你喜欢其中的哪一所大学?西安交通大学排名1西北工业大学排名2西安电子科技大学排名3第四军医大学排名4西北大学排名5陕西师范大学排名6长安大学排名7西北农林科技大学排名8西安理工大学排名9西安建筑科技大学排有人说不要看不起小摊贩,他们的收入你无法想象,是真的吗?三百六十行,行行出状元!我身边就有一个朋友摆摊不到一年时间买房买车!大概是13年4月份的样子,广州增城新塘镇,为什么我会记得那么清楚呢,因为清明放假前还跟他吃了个饭,当时在聊想摆摊现代人,生活压力大,还有解决的方法吗?首先非常感谢在这里能为你解答这个问题,我查阅有关资料,整理如下,让我带领你们一起走进这个问题,现在让我们一起探讨一下。学会豁达吧。人的生活经历不是永远顺畅和平坦无阻的。遇到阻碍困难又有好多药品进社保了,你有什么看法?为不是直接实行免费医疗?让全国人民享受社会主义制度的优越性!我看挺好的,有些困难,家庭没有钱看病,药品降价了,可以吃上药了,能约好他们的病,我赞同这是大好事,患者的福音,可以有效减住在县委住宿楼的外地县领导,要出房租水电费吗?干部异地交流如今已成常态。为了让异地交流过来的领导干部安心工作,各地机关事务部门都会储备一批周转房,用于解决异地干部住房问题。这些周转房大多建设于早期集资建房年代,以老房子居多,户为什么很多老年人深陷保健品骗局不能自拔,儿女劝告都听不进去?现在很多人还在认为老年人被保健品骗局频繁的欺骗得手,是因为老年人怕死,是因为老年人情感空虚寂寞,是因为缺少儿女的陪伴?这些都不是核心原因,最本质的真相就是老年人被洗脑!保健品会销模彩票中了一等奖可以不接受采访不捐款直接走人吗?您好!很高兴回答您的提问。彩票中了一等奖可以不受采访不捐款直接走人吗?题主所问的问题,也问出了很多人心中的疑惑。提问问题很有水评,此类问题一部分成功获得一等奖的彩友已亲身经历,也是有多少人在30岁之前,靠自己在二线以上城市买了房或者付首付?有多少人靠自己在二线城市买房或者首付?题主的问题太宏观了,比较宽泛难以统计,就讲讲我自己吧,我自己在中部二线城市靠自己的努力买了房子的,其实这个事情要说难确实很难,要说简单其实也没呼和浩特市区有多少人口?一全市常住人口全市常住人口为2866615人,同第五次全国人口普查2000年11月1日零时的2437898人相比,十年共增加428717人,增长17。59。年平均增长率为1。63。湛江的发展潜力有多大?湛江怎三十年间改革开放发展非常缓慢,可以说是滞后不前反而倒退了。相比八十九十年代的湛江是滞后不前反而倒退了。怎几年间,湛江发展可以说速度很快。只从宝钢落户后,发展前景一片光明。遂后徐州矿大的录取分数线是多少分?这个看你在哪个省份了,每年的录取分数线在网上都可以查到,不同专业的录取分数线也不同,矿大的安全工程,矿物加工这两个专业在全国都是第一的,另外矿大的电气专业也不错。另外矿大的硬件环境
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网