#为什么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 中。一般而言这里的数据同步都是异步处理,不会影响正常流程。

关于低吸的一些思路分享

打板 趋势和低吸
熟悉我的都知道我最主要的操作就是做低吸
所以今天说下我的低吸思路
希望能有用

简单点
低吸需要每天做的功课最主要的有
研究龙虎榜
然后两市的涨停板和成交量排名需要天天维持观察

龙虎榜是判断介入资金的强弱
比如三峡能源很强
但龙虎榜都是东方财富西藏散户大军
那么后面即使技术面形态很好也只能放弃
再比如物产中大涨上去的逻辑不在了(重组)
龙虎榜里看到大佬止损出局了都
也没必再去低吸

看涨停板
尤其三板以上的 一定要加自选
大概率都会有回踩均线的反抽机会

至于按成交量去看
这里操作的低吸主要就是趋势股的低吸
也唯有爆成交量的趋势股才值得低吸

这些是简单的逻辑

然后低吸
趋势股的低吸正常在30日均线开始
60日均线上下可重仓

涨停高度板 或者龙头 妖股的低吸
正常在5日线就可以观察
10日线可低吸 20日均线可重仓
一旦击穿30日均线就要降低预期 做好止损出局的准备

最后叠加大盘说些
一只连续涨停的高位票开始打开涨停震荡
均线多头发散越厉害越好
遇到大盘很强势
不要怕高 果断可以追涨

同样
大票如果超级弱势
只要分时图还是维持很强

也是可以追涨

大概这些
有人可能会觉得有些玄或者“就这”


就是这么简单
再问
就是盘感

后面坐了对叔叔阿姨,大概意思就是买了站内中转,但是中转站台被占用进京二次安检,完后阿姨提出三条解决方案:1尝试站内中转,不行就退票去机场;2直接退票去机场;3进站再出站,时间实在不赶趟,不推荐
那个大叔吭吭唧唧不同意也不否认也不吱声,似乎还透露着一丝抵抗(老子就要出站再进,搭两张票也要哼)旁边的盆友都表示看不下去要替阿姨说话
我寻思阿姨这思路清晰逻辑分明言语恳切态度真诚,咋就摊上这个大叔[疑问]
大家还是简单点,有啥话都说出来,女人真难


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 法国队世界杯名单及号码门将:1-洛里、16-曼丹达、23-阿雷奥拉后卫:2-帕瓦尔、3-迪萨西、4-瓦拉内、5-孔德、17-萨利巴、18-乌帕梅卡诺、21-卢卡
  • ……终于,她害羞了,脸上颈上都烧起来,出声问他“你不是说要找谢师兄?”他仍然蹲着,抬眼问她“那你自己洗,可以吗?
  • 走进球场的时候我一身轻松,这才是大学真正要追求的事了吧,做自己热爱的事,做的越来越好,这很酷。这种一起努力的感觉很棒,一个眼神就会懂我要干啥,而不是还要废话,每
  • 今天早上起来用发蜡抓了头发,感觉一天都心情很好[可爱][可爱]部长早上被领导喊走了,所以小钟不用担心回头去合肥要跟他晚上睡一个房间了[允悲]…早上起来翻到一件衣
  • 这本该是她的夙愿,可不知为何,等他真正说出“好”的那一瞬间,母亲却像受了什么巨大刺激一样,高抬起干枯的手,抓住他的背,带着无限的留恋和不甘。她看到过好几次,李峋
  • “走不尽的山峦的起伏,河流和草原/数不尽的密密的村庄,鸡鸣和狗吠”先民们经过身体和精神的双重流亡,行至这有山有水的地方,继续了他们耕田读书、天足健步的日子……当
  • (大家别告诉我们的司猫糯米哦,我们和外面的小猫咪只是萍水相逢的关系诶)PAWKA泡咔这次在2楼展区设置了冬眠主题的「踩奶区」欢迎大家来踩哦~这个冬天,让我们一起
  • 好喜欢[羞嗒嗒]我:“今晚吃什么” :“烤肉吧 我去你楼下 坐小白去” 然后一直都在烤肉 都没空自己吃 人美心善的啊梓肯定是一直喂 等到他有空可以自己吃了 我让
  • 如果真能以人的意志为转移,那就不叫天命或天意了;而所谓人和神,自命和天命,创世和玩尿泥,也就没有根本的分别了。坐井说天阔,标签:宋体文化属性规律神话心理成本杂谈
  • ”老大娘说:“因为我见你身有光明,故而知道你心里在念佛。【白话解】海昌有一村民某人,村中有一老大娘死了,她的魂灵附在家人身上,向人谈起她平生所经历的事,以及阴府
  • 金玉满堂这道菜借鉴了粤式腊味煲仔饭的做法,结合了西班牙火腿、乌鱼子、櫻花虾等食材让其卖相变得更好看而有食欲,而米饭的出现也预示着品鉴会进入尾声。[威武]正官燕1
  • 其中,10月27日凌晨4时,由顺丰航空执飞的一架波音747货机从合肥新桥国际机场起飞,直飞美国亨茨维尔,标志着合肥—亨茨维尔国际货运航线开通。而10月24日开通
  • 其中,深秋和袁长标的观点一致,他们认为陈亚男不会和朱单伟复合,哪怕是道歉,这桩婚事也没希望,袁长标更是在直播间为朱单伟征婚,而那个时候,人家俩还没分!居然让我赶
  • 人生这一趟,无论是听音乐或玩音响,做你自己就好,不必管路人说三道四,不必勉强自己接受别人给你下指导棋。不管你遇到的是什么,都不必勉强自己,好好利用这段日子,深深
  • ”我是个喜欢依计划行事的人,计划被打乱就会很惶然。“ID卡”要求:“ID卡”需在各关键过程照中及最终完成时出现,以证实作品的真实性。
  • #星闻杂志##洪流#刚好看到几段话,汇集一起一位母亲说:我的孩子并不是自己要求出生的,而是我决定要生下孩子的。可见这最后的光阴,老人家每天都需要插着管子维持生命
  • 山上的风景很一般,但是三个人一起躺在山坡的一块大石头上,以天为被,地为席,手机放着音乐,然后睡午觉的经历却让我觉得很有意义,而且我还真的睡着了。#火华一周# 是
  • #极禹[超话]##极禹 临界暧昧##极禹 你是心中唯一##极禹 三代第一且唯一双主唱# “将心事寄托予风 等不到回音那就守候她” '
  • 个债方面,芯海转债、美联转债领涨,尚荣转债、美诺转债领跌,赚钱效应一般;市场今日小幅修复,前期超跌品种均迎来了一小波反弹,诸位持仓是否回血了呢?个债方面,尚荣转
  • 一边在脑中浮现上述情景,一边想:“可能我一辈子都要做个开拓者,走在人迹未至的险路上,这是我的使命。“年轻的士兵在卫国战争中立功之后,不求被授功,只求允许回乡探望