数据库事务中脏读和不可重复读的悲观锁实现

  • 排他锁:对一行数据加上排他锁,其他事务不能对该行数据进行读取和修改操作.
  • 共享锁:对一行数据加上共享锁,其他事务不能修改该行数据,但是可以同时获取共享锁,读取该行数据.
  • 脏读
    • 一个事务中,数据修改的时候加上排他锁,修改完成,提交事务,然后释放排他锁.解决了事务1读取到事务2修改数据,但是未提交的数据.
    • 数据读取的时候加上共享锁,读取完释放共享锁.
  • 不可重复读
    • 数据修改和脏读相同,都是在一个事务中加上排他锁,事务结束的时候释放.
    • 数据读取,则改为了在事务开始的时候加上共享锁,在事务结束的时候释放共享锁.这样就避免了事务1在事务2修改数据成功前后,读取数据结果不一致的结果.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章