“Robert Pattinson appears to be even more uncomfortable, exhausted and nauseous than he was in Twilight, his eyes half-closed and his voice a murmur, as if he is slowly recovering from a weekend of food poisoning. ”
“It's more a sombre, low-key serial-killer mystery in which one of the detectives is in fancy dress for no particular reason.”
作者嘴太损了[笑cry]

OKR重在践行,核心就是聚焦
文:乔峰
《OKR工作法》第一次阅读笔记

先认识什么是OKR,OKR的名词解释:O是Objectives,表示目标,就是指你想做什么事情,KR是Key Results,表示关键结果,关键结果就是指如何确认你做到了这件事,OKR就是Objectives and Key Results,即目标与关键结果法。

这是个人人都浮躁的时代。

一个人,如果处于焦虑,浮躁,懒惰的状态,那么他一定是效率低下的。

因为浮躁,焦虑,很难安定下来。

做事情就容易不分轻重缓解,眉毛胡子一把抓。

或者,整天看起来一天到晚很忙碌,实际上又没真正做出什么成果来,把时间都浪费掉了。

或者,一下子看个短视频刷个抖音,然后刷刷刷。。。不可自拔,一晃几个小时过去了。

颅内高潮迭起,放下手机,又回到现实。

其实,解决方案只有一个。

别这山看着那山高,这个想干那个也想做。

先确定O,再定KR。

把O确定了,这个其实不难,难的是如何实现?

底下就是围绕着O来制定KR。

制定KR有三点原则。

1.极致精简,2.可量化,3.有挑战。

极致精简就是把KR设置的数量越少越好,内容越简洁越容易记住越好。KR的关键点在于key而不是result。

可量化,那就举个栗子吧,想健身,KR1是每天慢跑或快走3km,KR2打一套八段锦。

有挑战,制定KR的时候,需要制定一个踮踮脚尖,伸伸手,努力一把才能完成的。

OKR是一个动态的可调整的。

根据项目进展和反馈,结合自身/团队实际情况来进行调整,优化,持续聚焦,行动。

OKR重在践行,核心就是聚焦,持续聚焦,应用于个人身上,就是踏踏实实做好手头上一件件小事,这才是普通人出人头地的唯一捷径。
https://t.cn/A66xrPlW

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


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 世间万物皆两面,换个角度试试看,很多事,当你想不通,过不去,出不来的时候,换个角度,思路和态度,效果就会好很多。都说:“失道者寡助”如果你要是把事情做绝、做尽了
  • #今日看盘[超话]# 周一A股上市公司重要公告精选:‌以下均是利好消息:1·汤姆猫:已与OpenAI、Google及国内西湖心辰等优秀企业的通识大模型开展合作2
  • 它们之间的对比不仅仅是外表和内心,还体现在不同的人面前,狮子座的状态也不一样。但通常外表上她们都很小的女人,毕竟狮子座的女孩对自己要求很高,穿着也很精致。
  • 所以不知道怎么的,我好像突然理解了最近老是刷到的一句话,你应该去找一个本身就很好的人,而不是只对你好的人。 #宇乐[超话]#虽然我知道他们应该不知道含义,只是觉
  • 那些嚷着要爱情的人,只有在被爱情伤害后才会明白,忍耐是一种深沉的爱,不是每个人都能懂得珍惜。 成年之后第一个认真喜欢的明星爱你的这一年是你的29岁我的20岁你十
  • #日常[超话]##北京[超话]# 来发点和pyq不一样的图,清清我低人四等的11内存[你好]和徐老板说走就走的北京特种兵之旅[你好]P1-3 一些很傻的环球图
  • 邵老师:13940076246「青协纳新」进入终试的小可爱们注意喽!运城学院青年志愿者协会终试安排如下:时间:2021年10月16日(本周六)候场教室:王通D4
  • 还有白象,他们悄咪咪给参加杭州残运会的每一位运动员都发了一万块,完全没想借此宣传一番,真悄咪咪……#淘宝上线国货超市# 反正好不好用,都应该给这样国货品牌一个试
  • 我知道太多人比我还更要爱他了总有人问我720那天为什么说要离开了 那么艰难的黑暗时刻都熬过来了 为什么在稍有功成名就的时候突然决定停下来了....我见过太多太
  • 接下来,就带着大家一起来欣赏这场赏心悦目的翡翠盛宴~本次拍卖会总共展示了49件翡翠拍品,成交了33件,诞生了1件千万级别的翡翠和8件百万级别的翡翠,整体表现依旧
  • #apple爆料#利物浦可能会后悔转会,6400万美元的“爆料”刚刚追平蒂亚戈的纪录【#足球##UB8FA##LFC#】据报道,在去年夏天转会窗口之前评估了可用
  • 今早我们还报道了另一款PS5独占作品《Stellar blade》(星刃)更新FAQ的消息,结合《漫威蜘蛛侠2》宣发的开始,这几款作品都很有可能在传闻中的这场S
  • -结节有什么好紧张的呢,害怕它也在,不害怕它也在,不用拧巴。两年前我刚开始接触文化的一年左右的时间里,一直是很拧巴很纠结的状态,就是明白一些道理却做不到,所以特
  • 嘻嘻,又拉着朋友刷了一次封神[爱你]一开始我和她说还算好看吧(其实想说特别好看,但是还是别抬高她的期待值。#电影封神第一部的珍贵镜头#姬发非常聪慧这是看过电影的
  • @TFBOYS-王源一眨眼就是一天,一回头就是一年,一转身就是一辈子,人生总有太多的来不及,请珍惜每一个对你好的人,请珍惜和你有缘的人,余生很贵请别浪费,但愿
  • #肖战[超话]##骄阳伴我##盛阳的工作便签# 我想将对你的思念,寄予散落的星子,但愿那点点的星光能照进你的窗前,伴你好眠。#肖战[超话]##盛阳的工作便签##
  • 向之所欣,俯仰之间,已为陈迹,犹不能不以之兴怀,况修短随化,终期于尽!虽趣舍万殊,静躁不同,当其欣于所遇,暂得于己,快然自足,不知老之将至;及其所之既倦,情随事
  • 天蝎座十二星座中,天蝎座面对感情是最绝情也是最痴情的星座,两个人在一起的时候,天蝎座愿意付出一切,但没有什么事情都是一帆风顺的,一旦出现问题,分手之后,傲娇的天
  • 那龙师为什么会有这样的感觉,我不得不怀疑景元是不是三天两头的去幽囚狱照拂丹恒,把人宠的见面一句“老朋友”就生气,非要景元亲口表示没把他当丹枫才能好,甚至完全没觉
  • 马蜂窝于今年5月发起的“循环宇宙计划”就是从用户需求出发,不仅引导旅行者们关心大自然、尊重目的地多元文化,还要带领他们探索更多目的地新线路、新玩法,在低碳旅行的