#为什么MySQL数据量大了要分库分表#
是这样的。随着用户量的激增和时间的堆砌,存在数据库里面的数据越来越多,此时的数据库就会产生瓶颈,出现资源报警、查询慢等场景。
首先单机数据库所能承载的连接数、I/O及网络的吞吐等都是有限的,所以当并发量上来了之后,数据库就渐渐顶不住了。再则,如果单表的数据量过大,查询的性能也会下降。因为数据越多 B+ 树就越高,树越高则查询 I/O 的次数就越多,那么性能也就越差。因为上述的原因,不得已就得上分库分表了。把以前存在一个数据库实例里的数据拆分成多个数据库实例,部署在不同的服务器中,这是分库。把以前存在一张表里面的数据拆分成多张表,这是分表。一般而言:分表:是为了解决由于单张表数据量多大,而导致查询慢的问题。大致三、四千万行数据就得拆分,不过具体还是得看每一行的数据量大小,有些字段都很小的可能支持更多行数,有些字段大的可能一千万就顶不住了。
分库:是为了解决服务器资源受单机限制,顶不住高并发访问的问题,把请求分配到多台服务器上,降低服务器压力。顺着这个思路,再接着追问几个常见面试题。你们一般怎么分库的?一般分库都是按照业务划分的,比如订单库、用户库等等。有时候会针对一些特殊的库再作切分,比如一些活动相关的库都做了拆分。因为做活动的时候并发可能会比较高,怕影响现有的核心业务,所以即使有关联,也会单独做拆分。
那你觉得分库会带来什么问题呢? 首先是事务的问题。我们使用关系型数据库,有很大一点在于它保证事务完整性。而分库之后单机事务就用不上了,必须使用分布式事务来解决,而分布式事务基本的都是残缺的(我之前文章把分布式事务汇总了一波,后台搜索分布式事务就有了)。这是很重要的一点需要考虑。 连表 JOIN 问题在一个库中的时候我们还可以利用 JOIN 来连表查询,而跨库了之后就无法使用 JOIN 了。此时的解决方案就是在业务代码中进行关联,也就是先把一个表的数据查出来,然后通过得到的结果再去查另一张表,然后利用代码来关联得到最终的结果。这种方式实现起来稍微比较复杂,不过也是可以接受的。还有可以适当的冗余一些字段。比如以前的表就存储一个关联 ID,但是业务时常要求返回对应的 Name 或者其他字段。这时候就可以把这些字段冗余到当前表中,来去除需要关联的操作。那你们怎么分表的?分表其实有两种:垂直分表水平分表垂直分表,来看个图,很直观:
垂直分表就是把一些不常用的大字段剥离出去。像上面的例子:用户名是很常见的搜索结果,性别和年龄占用的空间又不大,而地址和个人简介占用的空间相对而言就较大,我们都知道一个数据页的空间是有限的,把一些无用的数据拆分出去,一页就能存放更多行的数据。内存存放更多有用的数据,就减少了磁盘的访问次数,性能就得到提升。水平分表,则是因为一张表内的数据太多了,上文也提到了数据越多 B+ 树就越高,访问的性能就差,所以进行水平拆分。
其实不管这些,浅显的理解下,在一百个数据里面找一个数据快,还是在一万个数据里面找一个数据快?即使有索引,那厚的书目录多,翻目录也慢~那分表会有什么问题?垂直分表还好,就是需要关联一下,而水平分表就有点麻烦了。 排序、count、分页问题如果一个用户的数据被拆分到多个表中,那查询结果分页就不像以前单张表那样直接就能查出来了,像 count 操作也是一样的。只能由业务代码来实现或者用中间件将各表中的数据汇总、排序、分页然后返回。像 count 操作的结果其实可以缓存下来,然后每次数据增删都更新计数。
路由问题分表的路由可以分:Hash 路由范围路由路由表Hash 路由,其实就是选择表中的某一列,然后进行 Hash 运算,将 Hash 运算得到的结果再对子表数进行取模,这样就能均匀的将数据分到不同的子表上。这跟 HashMap 选哪个桶是一样的原理。优点就是数据分布均匀。缺点就是增加子表的时候麻烦,想想 HashMap的扩容,是不是得搬迁数据?这个分表也是一样的,我们可都知道,数据迁移一件麻烦事!范围路由,其实很简单,可以是时间,也可以是地址,表示一定的范围的即可。比如本来一张 User 表,我可以分 User_HZ、User_BJ、User_SH,按照地名来划分 User。再比如 log 表,我可以将表分为 log_202103、 log_202104,把日志按照年月来划分。优点就是相对而言比较容易扩展,比如现在来个 GZ,那就加个 User_GZ。如果到了 5 月,那就建个 log_202105。缺点就是数据可能分布不均匀,例如 BJ 的用户特别多或者某个月搞了促销,日志量特别大,等等。路由表,就是专门搞个表来记录路由信息,来看个图就很清楚了。
从图中我们就能得知,UserID 为 2 的用户数据在要去 User_3 这个用户表查询。优点就是灵活咯,如果要迁移数据,直接迁移然后路由表一改就完事儿了~缺点就是得多查一次,每次查询都需要访问路由表,不过这个一般会做缓存的。 全局主键问题以前单表的时候很简单,就是主键自增,现在分表了之后就有点尴尬了。所以需要一些手段来保证全局主键唯一。还是自增,只不过自增步长设置一下。比如现在有三张表,步长设置为3,三张表 ID 初始值分别是1、2、3。 这样第一张表的 ID 增长是 1、4、7。第二张表是2、5、8。第三张表是3、6、9,这样就不会重复了。UUID,这种最简单,但是不连续的主键插入会导致严重的页分裂,性能比较差。分布式 ID,比较出名的就是 Twitter 开源的 sonwflake 雪花算法,具体就不展开了,不然就又是一篇文章了,简单点利用 redis 来递增也行。
那上面说的路由问题的 Sharding-Key 如何设计呢?我们分表是按照某个列来拆分的,那个列就是 Sharding-Key,查询的时候必须带上这个列才行。例如上面提到的 log_202103,那表明查询条件一定得带上日期,这样才能找到正确的表。所以设计上得考虑查询的条件来作为 Sharding-Key。举个常常会被问的订单表 Sharding-Key 例子。你想着查找订单的时候会通过订单号去找,所以应该利用订单 ID 来作为 Sharding-Key。但是你想想,你打开外卖软件想查找你的历史订单的时候,你是没有订单 ID 的,你只有你的 UserID,那此时只能把所有子表都通过 UserID 遍历一遍,这样效率就很低了!所以你想着那用 UserID 来作为 Sharding-Key 吧!
但是,商家呢?商家肯定关心自己今天卖了多少单,所以他也要查找订单,但他只有自己的商家 ID,所以如果要查询订单,只能把所有子表都通过商家 ID 遍历一遍,这样效率就很低了!所以 Sharding-Key 是满足不了所有查询需求的,只能曲线救国。一般做法就是冗余数据。将订单同步到另一张表中给商家使用,这个表按商家 ID 来作为 Sharding-Key,也可以将数据同步到 ES 中。一般而言这里的数据同步都是异步处理,不会影响正常流程。

#甘望星[超话]#.#人间理想甘望星#
2月末,第一次认识甘望星
也是我第一次感受到,平淡乏味的生活里好像出现了一道光
在这段时间里,他的每一次成长都让我既骄傲又幸福,我无比渴望能继续见证他的进步
但很遗憾,明年我将迎来人生第一场大考
这次考验对我的未来至关重要,时间很紧迫,所以我不得不暂时舍弃一些热爱的东西
那么就先将一些回忆存放在这里吧!

p1~2 看着超话和抖音的粉丝一次次上涨,我真的超级超级荣幸!!
p3 第一次抢到第一,激动之情实在难以言喻
p4 见证了世界大团结的景象,有被震惊到!!
p5 看到出道名单直接义愤填膺地把腾讯视频卸了哈哈哈
p6 不知不觉,签到已经坚持小半年了,时间不算长,但突然中断确实挺可惜的
p7 加了很多很多的粉丝群,每天都有坚持做任务
p8 大家真的很友好!帮了我很多很多忙,这个头我先磕为敬!
p9 近期最喜欢的一张图

最后再偷偷许个愿:
希望明年能考上理想的高中
也希望曾经照耀着我的那束光,可以变得更加璀璨,更加鲜活
甘望星,即使在我看不到的地方,也要闪闪发光!
等我回来!!!

开奶茶店需配备哪些设备,进来了解一下❗

如今的奶茶店可谓生意火爆,吸引了许多创业者想开奶茶店了。那么,开一家奶茶店都需要什么设备你知道吗?主要分为这两大类:

1、制茶设备

净水设备:奶茶店里制作奶茶的必备,净水器通过接上自来水,制作奶茶直接接水。净水器的滤芯需要定期更换,才能保证奶茶的口感。

开水设备:奶茶做热饮必备,奶茶店的工作人员每天进店的第一件事就是开开水机,等水烧开,就要进行制作茶汤。此处建议使用全自动的开水机,可以自动进水,省时省力。

冲茶及保温设备:即用来冲茶水的容器,把茶叶和沸水按一定比例泡在冲茶容器里,静置,再将茶汤通过过滤网过滤到保温桶内;保温桶,用来保温茶汤,奶茶店可备3-4个保温桶,用来存放不同种类的茶汤,最常见的是绿茶、红茶和乌龙茶。这里需要提醒的是,当天用完的茶汤没有用完,需要倒掉,因为时间久了容易有茶垢,也会影响奶茶的口感。

制冰设备和冰沙设备:即做夏日冰凉饮品必备,制冰机的水要接净水器的水,才能制冰,不然会对制冰机有所损,影响制冰机的寿命;冰沙机是做冰沙饮品的时候用,用来打碎冰沙。有一些功能较多的榨汁机也能用来碎冰。

雪克杯:即你经常在奶茶店里看到工作人员拿在手里上下左右摇晃的杯子。雪克杯的作用是将奶和茶充分融合,这是制作饮料是必不可少的工具。

量杯和小型电子秤:带刻度的量杯,用来测量所需用料及容量,调制奶茶十分便利;小型电子秤,用来准确测量配料的比例,以克为单位,比如,茶叶、水果、珍珠、椰果等。

搅拌棒:一端是叉子,用来叉饮品中需要的水果配料;一端是汤匙,用来舀珍珠、布丁、椰果等原料,当然是选择不锈钢材质的了。

2、辅助设备

操作台:操作台可以做成上面是不锈钢操作台,下面是带冷藏或者冷冻功能的储藏室,可省去买冰柜的钱。操作台的尺寸通常是1.2M、1.5M、1.8M、2.0M,高0.8M,可根据店铺大小来定制。

电磁炉+平底锅:奶茶店煮配料必备,用来煮奶茶、芋圆、红豆等配料。

收银机及收银机周边:如小票机、标签打印机、钱箱,选择可以联网的收银系统,可以在后台看到店铺实际收银情况,这是非常方便的。

除了奶茶店里必备的设施外,还需要一些日常使用的消耗品,如奶茶杯、封口机、打包带、吸管等等。由此可见,开奶茶店并不是很容易,成本的投入主要有设备购买、人力和时间。#创业开店##奶茶店##奶茶设备#


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 夫妻俩早前一组国外写真照好腻歪,同穿咖色大衣出镜,养眼又般配!夫妻俩早前一组国外写真照好腻歪,同穿咖色大衣出镜,养眼又般配!
  • 李辉打开后边的车门,琼招呼颜冬冬先坐了进去,自己犹疑了一下,本想和李辉并排坐在副驾驶的位置,可是颜冬冬看自己的眼神分明在说:“琼,你重色轻友啊,我们是发小呢,把
  • 邵姑娘一句“生前该是怎样的一个人”端和平主义茶杯的一张脸就即刻出现在眼前;卢泊安问,谁能说自己坚持的东西就一定是对的,又不免微笑:如今他成了端水的人了;待到他说
  • (咸阳日报全媒体记者 高依)鹤法跑在前•营商优化年|共话金融审判 护航金融发展——富区法院召开金融审判座谈会为进一步优化司法服务,助推法治化营商环境建设,加强人
  • 光电速度传感器 型号:M148520库号:M148520联系人:史经理17310837169同微l 波形: 正弦波(>0.1Vp-p)l 测速范围: 0.
  • 关于美的本质和特征,在西方美学史上有各种不同的学说,从西方传统哲学到现当代哲学转向的角度,提出两种最具代表性的学说,即典型说与显隐说。①真理的场所:艺术品②中国
  • #任嘉伦[超话]# ⑦rjl#任嘉伦请君# rjl#任嘉伦陆炎# ┏━.•*¨*•.•*¨*•.¸¸━┓ 任嘉伦 ┗━.•*¨*•.•*¨*•.¸¸━┛
  • #帕佑佛陀[超话]#敢于去做自己,才能拥有自己想要的人生任何时候开始,都不会迟。在大环境改变的时候,要追随内心的声音,去做正确的事情,才能拥有正确的人生。
  • 3GNJ6,《牧浅歌顾夜恒》(全文阅读),《牧浅歌顾夜恒》(热门资源),《牧浅歌顾夜恒》(今日更新最新章节) 39423卧槽这是我看过最好看的小说清单了!1️⃣
  • 该市民估计,的哥是要将轮椅上的男子抱上车。得知他们的困难后,徐师傅主动将手机号留给了他们,让他们下次需要坐车时联系自己。
  • 在崂山烈士陵园纪念碑广场,参加仪式的烈属代表和工作人员默然肃立,全场人员向烈士默哀。8时30分,起灵仪式在市革命烈士纪念馆英名碑前举行。
  • 本人敷肩颈包一个月体验: 1.秘现反应:腰酸背痛、手脚发麻、后背发痒,时间持续了十天。 2.用后效果:一是颈项左侧淋巴结肿大发炎痛疼症状消失;二是乔本甲状腺炎
  • 针对以下几个问题,小投手也希望能给大家一个正面的回答:Q1:为什么变换/不提前通知话题?很抱歉引起了过分解读 之后小投手也会注意措辞 同样作为汽水,我们也非常珍
  • 再说我们在国内吃到的咖喱,不管是泰式还是日式,又好像都不是原本的模样,潜移默化之下,那些只写着咖喱鸡、咖喱牛肉、咖喱时蔬等等的便捷外卖,又都在努力迎合着国人的口
  • #每日一善# [彩虹屁] #阳光信用# 这个世界骗不骗我是它的事情我相不相信它是我的事情我相信世界是美好的哪怕它愿意骗我坚持的东西我相信总会实现的就像我骑着单
  • #肖战rio全球品牌代言人# 快乐周二❤️降温的最近 但好像今天比昨天稍微暖和点喜提临时大筛 突然觉得又要开始重视保阴 不过虽然但是 我们也拭目以待这种天气就喜
  • 虽然没能见到他但年少的欢喜却是丝毫不减反增,我想下一次变得更优秀就更有机会见面啦[心] #每日一善[超话]#[赢牛奶]#阳光信用#回头想想,我们的人生,年少时懵
  • Photo ©Instagram @ visitnorway/visithardangerfjord/Arctic Rein og Vilt/Aftenpost
  • 今天有只崽崽因为起床气在大门口冲奶奶发了一通脾气,来了也不进屋,就避在后门口倔强地红着眼眶,看他就在酝酿着委屈的情绪,丝毫没有眼泪掉下来,问他为啥哭了,他也不说
  • 颜色:1色码数:35-44飞跃·帆布鞋​NO·12 | VCNN 遇见小白鞋履VCNN 遇见小白家主要是做比较小众的情侣鞋,款式都非常多,也是很特别,他们家的每