#为什么MySQL数据量大了要分库分表#
在文章开头先抛几个问题:
(1)什么时候才需要分库分表呢?我们的评判标准是什么?
(2)一张表存储了多少数据的时候,才需要考虑分库分表?
(3)数据增长速度很快,每天产生多少数据,才需要考虑做分库分表?这些问题你都搞清楚了吗?相信看完这篇文章会有答案。

为什么要分库分表?首先回答一下为什么要分库分表,答案很简单:数据库出现性能瓶颈。用大白话来说就是数据库快扛不住了。数据库出现性能瓶颈,对外表现有几个方面:大量请求阻塞在高并发场景下,大量请求都需要操作数据库,导致连接数不够了,请求处于阻塞状态。SQL 操作变慢如果数据库中存在一张上亿数据量的表,一条 SQL 没有命中索引会全表扫描,这个查询耗时会非常久。存储出现问题业务量剧增,单库数据量越来越大,给存储造成巨大压力。从机器的角度看,性能瓶颈无非就是CPU、内存、磁盘、网络这些,要解决性能瓶颈最简单粗暴的办法就是提升机器性能,但是通过这种方法成本和收益投入比往往又太高了,不划算,所以重点还是要从软件角度入手。

数据库相关优化方案数据库优化方案很多,主要分为两大类:软件层面、硬件层面。软件层面包括:SQL 调优、表结构优化、读写分离、数据库集群、分库分表等;硬件层面主要是增加机器性能。SQL 调优SQL 调优往往是解决数据库问题的第一步,往往投入少部分精力就能获得较大的收益。SQL 调优主要目的是尽可能的让那些慢 SQL 变快,手段其实也很简单就是让 SQL 执行尽量命中索引。开启慢 SQL 记录如果你使用的是 Mysql,需要在 Mysql 配置文件中配置几个参数即可。

调优的工具常常会用到 explain 这个命令来查看 SQL 语句的执行计划,通过观察执行结果很容易就知道该 SQL 语句是不是全表扫描、有没有命中索引。select id, age, gender from user where name = '爱笑的架构师';返回有一列叫“type”,常见取值有:ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)ALL 代表这条 SQL 语句全表扫描了,需要优化。一般来说需要达到range 级别及以上。表结构优化以一个场景举例说明:“user”表中有 user_id、nickname 等字段,“order”表中有order_id、user_id等字段,如果想拿到用户昵称怎么办?

一般情况是通过 join 关联表操作,在查询订单表时关联查询用户表,从而获取导用户昵称。但是随着业务量增加,订单表和用户表肯定也是暴增,这时候通过两个表关联数据就比较费力了,为了取一个昵称字段而不得不关联查询几十上百万的用户表,其速度可想而知。这个时候可以尝试将 nickname 这个字段加到 order 表中(order_id、user_id、nickname),这种做法通常叫做数据库表冗余字段。这样做的好处展示订单列表时不需要再关联查询用户表了。

冗余字段的做法也有一个弊端,如果这个字段更新会同时涉及到多个表的更新,因此在选择冗余字段时要尽量选择不经常更新的字段。架构优化当单台数据库实例扛不住,我们可以增加实例组成集群对外服务。当发现读请求明显多于写请求时,我们可以让主实例负责写,从实例对外提供读的能力;如果读实例压力依然很大,可以在数据库前面加入缓存如 redis,让请求优先从缓存取数据减少数据库访问。缓存分担了部分压力后,数据库依然是瓶颈,这个时候就可以考虑分库分表的方案了,后面会详细介绍。硬件优化硬件成本非常高,一般来说不可能遇到数据库性能瓶颈就去升级硬件。在前期业务量比较小的时候,升级硬件数据库性能可以得到较大提升;但是在后期,升级硬件得到的收益就不那么明显了。

分库分表详解
下面我们以一个商城系统为例逐步讲解数据库是如何一步步演进。
单应用单数据库
在早期创业阶段想做一个商城系统,基本就是一个系统包含多个基础功能模块,最后打包成一个 war 包部署,这就是典型的单体架构应用。如上图,商城系统包括主页 Portal 模板、用户模块、订单模块、库存模块等,所有的模块都共有一个数据库,通常数据库中有非常多的表。因为用户量不大,这样的架构在早期完全适用,开发者可以拿着 demo到处找(骗)投资人。一旦拿到投资人的钱,业务就要开始大规模推广,同时系统架构也要匹配业务的快速发展。多应用单数据库在前期为了抢占市场,这一套系统不停地迭代更新,代码量越来越大,架构也变得越来越臃肿,现在随着系统访问压力逐渐增加,系统拆分就势在必行了。

为了保证业务平滑,系统架构重构也是分了几个阶段进行。第一个阶段将商城系统单体架构按照功能模块拆分为子服务,比如:Portal 服务、用户服务、订单服务、库存服务等。如上图,多个服务共享一个数据库,这样做的目的是底层数据库访问逻辑可以不用动,将影响降到最低。多应用多数据库随着业务推广力度加大,数据库终于成为了瓶颈,这个时候多个服务共享一个数据库基本不可行了。我们需要将每个服务相关的表拆出来单独建立一个数据库,这其实就是“分库”了。单数据库的能够支撑的并发量是有限的,拆成多个库可以使服务间不用竞争,提升服务的性能。

如上图,从一个大的数据中分出多个小的数据库,每个服务都对应一个数据库,这就是系统发展到一定阶段必要要做的“分库”操作。现在非常火的微服务架构也是一样的,如果只拆分应用不拆分数据库,不能解决根本问题,整个系统也很容易达到瓶颈。分表说完了分库,那什么时候分表呢?如果系统处于高速发展阶段,拿商城系统来说,一天下单量可能几十万,那数据库中的订单表增长就特别快,增长到一定阶段数据库查询效率就会出现明显下降。因此,当单表数据增量过快,业界流传是超过500万的数据量就要考虑分表了。当然500万只是一个经验值,大家可以根据实际情况做出决策。

那如何分表呢?分表有几个维度,一是水平切分和垂直切分,二是单库内分表和多库内分表。水平拆分和垂直拆分就拿用户表(user)来说,表中有7个字段:id,name,age,sex,nickname,description,如果 nickname 和 description 不常用,我们可以将其拆分为另外一张表:用户详细信息表,这样就由一张用户表拆分为了用户基本信息表+用户详细信息表,两张表结构不一样相互独立。但是从这个角度来看垂直拆分并没有从根本上解决单表数据量过大的问题,因此我们还是需要做一次水平拆分。

还有一种拆分方法,比如表中有一万条数据,我们拆分为两张表,id 为奇数的:1,3,5,7……放在 user1, id 为偶数的:2,4,6,8……放在 user2中,这样的拆分办法就是水平拆分了。水平拆分的方式也很多,除了上面说的按照 id 拆表,还可以按照时间维度取拆分,比如订单表,可以按每日、每月等进行拆分。每日表:只存储当天的数据。每月表:可以起一个定时任务将前一天的数据全部迁移到当月表。历史表:同样可以用定时任务把时间超过 30 天的数据迁移到 history表。总结一下水平拆分和垂直拆分的特点:垂直切分:基于表或字段划分,表结构不同。水平切分:基于数据划分,表结构相同,数据不同。单库内拆分和多库拆分拿水平拆分为例,每张表都拆分为了多个子表,多个子表存在于同一数据库中。比如下面用户表拆分为用户1表、用户2表。

在一个数据库中将一张表拆分为几个子表在一定程度上可以解决单表查询性能的问题,但是也会遇到一个问题:单数据库存储瓶颈。所以在业界用的更多的还是将子表拆分到多个数据库中。比如下图中,用户表拆分为两个子表,两个子表分别存在于不同的数据库中。
一句话总结:分表主要是为了减少单张表的大小,解决单表数据量带来的性能问题。

#言情小说[超话]#
ⒹⓎ晋江独家先婚后爱小甜饼

ଲº侯府宠媳ºଲ

乔芝裴承赫
────✨──ℳ๓ℒℴѵℯღ᭄ꦿഒ──
꧔一句话简介:世子打脸日记
꧔女主有心机、目的性强、走钱不走心; 男主聪明纨绔是真的,渣男属性是装的;双洁,不洁的男主不值得被原谅。

简介
威远侯府的混世魔王世子裴承赫终于要娶妻了,娶的是门不当户不对的文官女儿乔芝。
皇城里有女儿的世家都松了一口气。
裴家有权有势,人人眼红是不错。可是裴承赫第一纨绔的威名让人害怕。
得知消息的狐朋狗友问他:“听说裴老大要娶乔修撰的女儿了?”
裴承赫满不在乎道:“这种弱鸡小娇娘,不出三天就要求着爷休了她。”
后来,乔芝嫁进裴家。文能说倒二三四五房,武能扇退作妖小通房。
裴承赫他娘爱到把管家权都给了她。
裴承赫他妹妹更是叛变到给她介绍外男做姘头?
威远侯府世子夫人颇受裴家人宠爱的消息越传越广,悔煞一众夫人小姐。
狐朋狗友再问裴世子:“娶妻感觉好不好?”
裴承赫:“娶妻不好能人人都要娶妻?”

扫描图中二维码获取资源

★349没预作交代,儿女成往生的障碍(案例1)——程晋林居士

我们助念团还有一个成员,由于她过去世造的恶业,到这一世都现前了,到老年以后有病,虽然一直念佛,但时常失去正念,出现业障。当时我们去看她,儿子媳妇感到很委屈,一个修行的人,确实不像话。怎么回事呢?儿子给他端饭,女儿给他端饭,不敢吃。他说:“你们的心不好哇,你们给我端的饭里面都有毒药,你们想药死我。”儿子女儿很委屈,儿媳妇给他端饭,也这么说。儿媳妇很委屈:“那以后我就不管了。”她这就是医学上讲的癔病,佛教上讲业障现前,冤亲债主在障碍她,使她出现这种状况。以后,你让她念佛他也不念,也不敢在家里面住,一个人呢做饭。自己买馍,自己吃。谁给他端东西,他都怕别人下药。最后没有办法,自己主动提出来,离开家到养老院去。在养老院,她也没有改变。清醒的时候说是非,让她念佛就不念,状况很恐惧。我们助念团的成员后来提出来“程团长你去看看她把。”平时修学这么好,老了出现障碍。我去养老院看她,她一见我很欢喜。“团长呀,你来了。”“你怎么搞的,平时修学功夫这么好?为什么现在不念佛?”“我怎么不念佛,我每天都念,你看我嘴上不念,我心里在念。”“今生我们一直修学佛法,最重要的是临终一定要了生死。你一定要求阿弥陀佛加持,帮你消除现在的障碍。发大心发大愿,往生西方极乐世界。”“你放心好了,我会念佛的。程团长呀,我求你。我临终的时候你一定要来送我。”“你放心,到时候我一定会来。但是最重要是你自己,一定要发愿求生西方极乐世界。正念不要失去”“行那。”当时我们交流很好,我也答应她。过了几天。我们听到消息,这个居士后来在养老院突然病重(养老院是民俗的,不会留她死在里面),养老院告诉他儿子人不行了,要求拉走。儿子为了尽孝心,把她送到医院进行医治。最后没有医治活,死在医院。

他的儿子表现出来世间的孝心,就跟医生交涉:“我妈妈学佛。她临终有遗嘱,一定要给她进行助念。我们遵照遗嘱,要把尸体拉到家里面去。”通过做工作,医生也同意了,尸体被拉回家了。我们听了以后很感动,这个儿子很孝顺。虽然说临终的时候在医院进行了医治,对亡者有所伤害,但他能想起来按照佛制给他妈妈助念,最起码说有很大的孝心,很感动。我很快就赶到了他们家。当我到他家以后,问他们:“你们家里面有什么安排呢。”“我妈妈临终的时候有遗嘱,按照佛制给他助念。我们作为儿女一定要满她老人家的愿。所以我们把她老人家尸体从医院拉回来,希望你慈悲带人来给妈妈助念。”“这个我们没有问题。”因为我们过去在这方面吃过亏,所以我们还是按照常规先和他们进行谈判。“你们要求助念,助念的规矩你们懂不懂。”“不懂。”“那好,你们有几个孩子,儿子女儿媳妇,有多少姑姑、舅舅。你们家属全部集合在一起,我把我们佛家的助念给你们一起做个介绍。”他同意了,把所有亲属召集在一起,我给他们介绍:“我们助念团有我们的规矩。不管助念现场在哪里,不管助念进行到什么时间,我们有非常严密的纪律。助念团成员不准收主家的一分钱。第二,我们不吃主家做的饭,第三不接受任何的馈赠,包括最小最小的东西,比如说护身符、小毛巾,都不接受。完全是尽义务。当然也要求主家供养助念团,供养什么呢?白开水,唯一的要求。因为我们跑那么远,没法带开水,而且助念中大家一直在念佛,喉咙也很干。这是对助念团的要求,对主家的要求是,从现在开始,所有的家属不准哭,不准烧纸,不准许做民俗的事情。比如扎纸人,吹唢呐。还有一点,我们送往生,由于每个人的业力不一样,每个人的善根福德也不一样,送往生西方极乐世界的时间会不一样。业障重的人,花的时间会长些,福报大业障轻的人,时间会短些。不管业障轻重,我们都百分之百的能把他们送到西方极乐世界。亲属不要在时间上给我们设障碍,比如要求三天五天火化,我们真的没有这个能力。一定要给我们时间,以什么为准呢?以这个老人家往生西方极乐世界为准,什么时候送走了,什么时候按照世间的民俗去做。在此期间,所有的民俗工作统统停止。”当我们讲完以后,他儿子一听,说:“哎呀,你们说的和我们想象的差距太大了。”“你想的助念是什么样子?”“我们认为助念就是,我们在外面接待客人,该哭就哭,该扎纸人扎纸人。你们在屋里面念经。我们在外面做完了,你们也要做完。然后我们把人抬出去,我们在前面哭,你们在后面念经,排成队伍跟着一起走。”

我们一听马上明白了,跟电影里面演的一样,很多大户人家,外面在做民俗的丧葬活动,里面请一帮和尚在里面念经,整个是一种形式,给活人看,不是为了把亡者送到西方极乐世界。我说:“你说的这个不行。不能把你妈妈送到西方极乐世界。”他儿子说了一句话更气人,“人都死了,上西方极乐世界无所谓,没有关系,主要让我们活着的人感到高兴就行。“你说的这个我们不做,为了让你们做的好看,给你们装面子,我们不能干。我们要做就送她到西方极乐世界。”他儿子一听:“程居士,那要不你们还是请回去?”就请我们走了,再也不讲满他妈妈的愿,给她助念了,搞的还是那些沽名钓誉的事情,没有真心。我们没有办法,只有离开了。

——《助念心得报告》——程晋林居士


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • steam商店页面:#黑暗笔录# #黑暗笔录[超话]# #夏日浪游计划#我可以忘记所有,将自己沉浸在那一片黑暗中,被它吞噬,却无法忘记你……谢命运让你我相遇,于
  • 【#官方回应重庆长江国际大量追星族聚集#:将督促物业管理】#重庆长江国际大量追星族聚集#近日,有网友通过人民网领导留言板反映,“长江国际写字楼下方经常有大量追星
  • ”第二天,弟子向庄子问道:“昨天山里的树因为不成材而得以终其天年,现在这位主人的鹅却因为不成材而被杀死,先生您将在成材与不成材这两者间处于哪一边呢?”在山腰上,
  • 现在貌似雨停了,继续逛)2020无锡 太原临汾美食探店‖有拈头成都市井火锅太原地址Ⅰ小店区体育路与亲贤街交口南行20米路西临汾地址Ⅰ尧都区中大街西关花苑117号
  • ”人生没有快慢之分,每个人都有着属于自己的时区,不必感到焦虑和慌张,不要看别人发光就觉得自己黯淡,就把眼前的每件小事都做好,你也正在慢慢靠近你想要的生活。#按个
  • □图片由和田地区博物馆提供   天山网-新疆日报记者 银璐   一个叫思略的官员,租用当地工匠汉卡的5棵桑树,租期1年,租金是3匹絺䌷(丝织品)有中间人见证画押
  • 太馋海南清补凉了,外面的我都觉得不正宗,所以自己动手,这才是我熟悉的味道[666]其实最初的清补凉是红糖水,后来演变出了椰子水还有椰奶的,我比较喜欢椰子水,夏天
  • 我身边一直有个朋友喜欢分享日常看到奇奇怪怪的新事物,沿途的风景,遇见的小猫和狗狗,还有每天妈妈做的菜那天我出去玩,下着雨,第一反应是拍下来分享给他直到有人问起,
  • 白羊男:改掉自己的坏脾气【十二星座会为爱情做出哪些改变】  白羊男本来是一个脾气非常差的人,正因为他们的脾气差,所以他们的人生总会经历很多阻扰。专注命理20余年
  • 这些俱乐部通常不会求购那些成名已久或当打之年的门将,而是以两种来源为主:一,花费大量精力内部培养;二,求购或免签一些不贵但已经展现出出色实力,并且还需要时间去进
  • 消肿速度依手术复杂程度、术后护理情况和个人体质等因素而略有不同- [x] 11. 多久才能涂疤克❓拆线五天后才能涂疤克- [x] 12. 多久才能眼部运动❓换药
  • 想我贾雨村也曾游历过名山宝刹,倒也没见过这如此有哲理的对联,想这寺庙里一定有一个大彻大悟之人,必定经历过繁华幻灭,所以,才能写下如此深奥的话语来,我倒要进去看个
  • (8)进行过的维修都将进行详细的备案,存放至我司自研的派单系统内;当您需要售后保修服务时,我们的师傅就能及时赶到现场。(8)进行过的维修都将进行详细的备案,存放
  • 走吧,总要去一次新疆吧!只有抓住当下,充实自己,才能站稳脚跟,拥抱未来,希望七月的晨风可以吹来更多夏天的好消息[抱拳]黎明脚步欢迎你的加入!
  •   二是鲁师高考复读学校教学环境很好,学校有独立的复读校区,校园面积大,教学设施多,多媒体教室、学生食堂、教室、宿舍等都配有空调。这样的环境方便了学生的吃、住、
  • 在吉林松花湖已经尽情滑雪一周的大连小伙王涵告诉第一财经,最近滑雪场人很多,玩得很开心,“我喜欢人多点儿,容易跟爱好者们交朋友。在吉林松花湖已经尽情滑雪一周的大连
  • 西服的花眼也称“俏皮眼”搭配不同的襟花或者装饰能够凸显个性与气质。#定制瞬间##面料灵感##男士穿搭[超话]# 手工米兰眼VS普通花眼 更加精致挺立显质感可个
  • 行业寒冬,女船王估计又要无限期推迟了……当年卡通王才是国漫的高光时刻啊,魔尘,邂逅,断翼,金人,女船王,badstory,随风而逝,莲姬,北国野蔷薇,小鸟与玫瑰
  • 天王嫂方媛晒出照片,参加朋友生日聚会,和朋友一起合影,几位美女表现力好强,都有一样的韵味,给人一种温柔可人的氛围感,而且都比较年轻漂亮。天王嫂晒出照片,参加朋友
  • 这样当我们在旅行还是在登山、探险,有了三星Galaxy S22Ultra,每一个我们不想错过的细节,每一处美好,都能轻松定格 在功能上,三星GalaxyS22