行级锁 表级锁 乐观锁 悲观锁
区分锁,得先知道锁是什么干什么。就我的理解锁的意义就是为了确保数据库事务的特性(ACID)
A——原子性atomicity 事务的不可分割
C——一致性consistency 事务的执行的前后数据的完整性保持一致
I——隔离性isolation 一个事务执行的过程应不受到其他事务的干扰
D——持久性durability 事务一旦结束,数据就持久到数据库
锁主要解决多个用户同时对数据库的并发操作带来的数据不一致性:
丢失更新,脏读,不可重复读,幻读
1.行级锁
就是给某一行加上锁,也就是一条记录加上锁
2.表级锁
就是给这个表加上锁
3.乐观锁
(假设丢失更新不会发生)采用程序中添加版本字段解决丢失更新问题,在数据表添加版本字段。每次修改过记录后,版本字段都会更新,如果读取是版本字段,与修改时版本字段不一致,说明别人进行修改过数据 (重改) 。
4.悲观锁
(假设丢失更新一定会发生 )利用数据库内部锁机制,管理事务提供的锁机制。
锁机制: 1)共享锁 2)排他锁