数据库并发控制的问题真是老生常谈了,尤其是多个事务一块儿操作同一份数据时,不注意就容易踩坑。丢失修改、不可重复读、脏读这些问题,听着就头疼。别急,我找到一个还挺靠谱的资源集合,讲得通俗还带例子,挺适合前端了解后端交互风险的时候看看。
数据的不一致性,主要是因为多个操作同时进行,没控制好顺序。比如一个典型的丢失修改场景:你查到 A=10,改成 A=20 同时别人也查到 A=10 改成 A=30,结果你提交完他再提交,数据库里变成 A=30,你的 20 就没了。
不可重复读就更常见了,尤其是你在一个事务里查了两次,结果不一样。原因?别人中途改了数据。还有脏读,就是你看到的数据其实根本没被别人正式提交,有点像你拿到了别人临时的草稿,结果他没保存你却信了。
这些问题说白了都是并发控制没做好。所以资源里提到了几种方式,比如加锁机制、事务隔离级别设置、甚至像SQL 封锁协议这样的策略,嗯,都蛮实用的。你不一定要完全实现它们,但至少得知道是咋回事。
想深入点?这几篇文章可以顺着看下去:数据库封锁机制详解、SQL 一级封锁协议,还有并发控制策略,逻辑清晰,也不啰嗦。
如果你经常要和后端接口打交道,或者自己搞点数据同步逻辑,强烈建议你多了解一下数据库的这些并发坑,至少下次出了错,不会一脸懵。