在讲完并发事务的不一致问题后,我继续介绍解决的办法。
办法主要基于两类:
- 预防问题:加锁
- 撤销问题
- 时间戳
- 有效性检验
为增强互动效果,我邀请老妈选择一个类型开启。但她已经昏昏欲睡,没有兴致。我便自顾自按顺序讲来:
锁有多种类型:
- 排它锁 exclusive
- 共享锁 shared
- 更新锁 update
- 增量锁 increment
也给它们临时想了一些例子作为佐证:
x锁虽然解决了刚才购票的问题。但如果遇到了许多人只需要读取数据,比如很多人查看股市的情况,这就不需要更改数据,所以可以使用s锁
还有呢,虽然购票的修改数据需要排它锁避免出现问题,但是有一些情况并不会出错,比如:小区缴纳水电费,很多人在排队,但谁先交谁后交并没有什么区别。因为结果是向上累积增加的,这就可以用到增量锁:没有必要等待其他人都交完,所有人都可以把原数据增加新数据,提高效率。
之后,涉及概念更多的时间戳和有效性检验我没有讲太深入,大脑中结合图像,思考更多。
告一段落后,老妈迷迷糊糊醒来,我想逗逗她,故作严肃:
‘考考你啊,刚才讲了哪几种锁?’
‘emm,安全锁’ ‘嗯!接着说’我没有表现,想等最后再告诉她答案。
‘还有……’显然,她默认刚才说对了,/(ㄒoㄒ)/~~
沉默半晌,我催促她:’快说!‘
‘呃,正思考呢’我看向她,眼睛闭紧,眉头紧皱,确实是在用力思考的样子。‘刚才睡着了一会,听到有两种锁是呗,就记得你讲得那个例子,什么,什么来着?’
她的样子,活像一个犯了错的小学生,我的心中生出了一丝爱怜。‘嗯,那个分析股市的’……
不再戳破她第一个的错误了,这样还能得50分呢!