并发控制的核心就是给资源上锁。数据库的事务机制里,锁的作用就像地铁的闸门,谁先进谁用,避免“撞车”。事务提交回滚之前,锁都不会放,这一点在多个系统中都差不多,尤其是像Oracle这样的数据库,它还挺贴心,会自动检测死锁回滚一方事务,避免系统卡死。

锁的申顺序也蛮有讲究,最好统一点,不然多个事务交叉申不同资源,容易卡在彼此头上——也就是死锁。想要避免?一个小技巧是先申范围大一点的表级锁,再细化到行锁

如果你是用MySQL的,那推荐了解一下InnoDB引擎的锁机制和MVCC,多版本并发控制挺巧妙,不影响读操作还能保证数据一致,读写分离也方便。链接我也给你准备好了,懒得找的朋友可以直接点:

如果你经常排查死锁,不妨也看看这个:SQL 并发控制中的死锁诊断与解除,讲得还挺清楚。

,事务锁机制说难也难,说简单也不算太复杂,搞懂了读写的冲突点,再对照下业务逻辑,思路会清晰多。如果你经常和高并发打交道,建议把这些知识点吃透了再动手写逻辑。