获得徽章 0
- jym,有件事我一直很纠结,不知道怎么办,就是我有一个女朋友,她真是温柔体贴。起初,我们就如普通情侣那样慢慢升温,从谨慎的微笑到轻轻的触碰,我发现自己已经非常喜欢她了。一天,她红着脸,眼神闪烁着羞涩与期待地对我说,今晚她想来我家过夜。我有些惊讶,没想到我们的关系会有这样的跨步,但我还是兴奋地答应了。
那晚,我们外出用餐后决定回家。到了我家,她感受到了住所中男性气息的吸引力,她去沐浴准备进入夜晚的私密时刻。我默默准备着,想要为她提供一个难忘的夜晚。
但出乎我意料的是,在她洗漱完毕后,我感觉整个宇宙好像都对我露出了了解的一笑,啊啊啊,我完全没有防备!
我中了女朋友的"温柔陷阱",我所有的防线、所有的机制都被她击穿了!
现实中的MySQL锁机制,是为了解决数据一致性和并发问题而设计的,与此情景相似。我们如何确保当两个请求同时请求同一份数据时,这份数据仍然是安全且准确的呢?
MySQL锁机制:
在MySQL中,我们可以使用行级锁(Row-Level Locking)或表级锁(Table-Level Locking)。这就像是家中有了一扇门,当一个访问者(请求)进入时,其他访问者必须等待门再次开启才能进入。行级锁可以做到细粒度的控制,而表级锁则是粗粒度的,适合不同的使用场景。
乐观锁(Optimistic Locking)和悲观锁(Pessimistic Locking)从策略上进行了分别。乐观锁象征着对未来充满希望,它通常在业务中通过版本号等来实现;悲观锁则是做好了准备迎接挑战,通常通过锁定数据实现。就如同我本可以对女友的想法持一个乐观态度,不过度解读,但事实上,一切的准备都彰显出我那份悲观的渴望——不想失去这份关系中任何一丝的和谐。
使用InnoDB引擎自带的MVCC(多版本并发控制)来提供不同隔离级别的事务支持,它允许读写操作在同一时间段内并行发生,而不互相影响。
对于击穿的问题,具体地,在MySQL中,我们可以采取如下措施:
锁定重要查询的行,直到事务完成,再释放对其他事务。
避免过多的长事务,以免造成锁等待。
对于常访问的数据,可以缓存起来,减少对数据库的直接压力。
爱就像数据库锁机制,既要保持一致性,又要经得住并发的考验。展开赞过42 - 救命!!男朋友太会了!!击穿了!!
刚在一起的时候,男朋友斯斯文文的,白白净净,显得很书生气,在亲亲抱抱的时候也很温柔我觉得对他的喜欢已经到了进一步的程度的时候,就红着脸害羞的跟他说今晚去他家过夜,他有点儿错愕,看起来好像有点儿不太想的样子但还是答应了下来,我心想这一次一定要好好体验单独相处的夜晚。
吃完饭逛了逛后,觉得有点累就提议先去他家了他家之前来过就是没有过夜,淡淡的男生香氛味真的很撩拨人心,我就先去洗澡了!
出来后啊啊啊啊家人们睡懂呀
我redis直接沦陷了,都被击穿了!!!
Redis击穿
击穿是指redis某个热点数据突然失效或被删除导致大量请求直接访问数据库。造成数据库压力剧增。这可能是由于恶意攻击,缓存服务器宕机或者缓存设置的过期时间不合理导致的。
解决办法
1使用互斥锁(Mutexlock)或者分布式锁。避免多个请求同时访问数据库,只有一个请求能够重新加载缓存。
2设置热点数据永不过期,或者设置较长的缓存过期时间,以防热点数据失效。展开等人赞过2824
![[流泪]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)