回答
在 MySQL 中,乐观锁和悲观锁是数据库的并发控制策略。不同于库锁、表锁、行锁等数据库具体的锁结构,它更多是一种设计思想。实际上,乐观锁和悲观锁的思想应用广泛,不局限于某种编程语言和数据库。
乐观锁
乐观锁(Optimistic Locking)的核心思想是假设数据在大多数时间内不会发生冲突,因此乐观锁不会上锁。只是在事务提交时才会检查是否有冲突:如果有人修改了数据则放弃操作,否则执行操作。通常,乐观锁通过数据版本(Version)或者时间戳(Timestamp)来实现。很明显,乐观锁是通过在表中冗余额外字段来避免加锁,提升数据库并发能力。
悲观锁
悲观锁(Pessimistic Locking)的核心思想是假设数据很可能会发生冲突,因此在事务开始时就对数据进行加锁,防止其他事务修改。通常,悲观锁通过数据库的锁机制来实现,如共享锁(Shared Lock)和排他锁(Exclusive Lock)。
扩展
一、实现方式
1、建表及初始化语句