进阶教学——事务隔离级别和锁的关系"/>
数据库进阶教学——事务隔离级别和锁的关系
一、锁的概述
1、简介
- 锁是计算机协调多个进程或线程并发访问某一资源的机制。
- 在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
2、分类
- 根据锁的粒度,分为:
- 全局锁:锁定数据库中的所有表。
- 表级锁:每次操作锁住整张表。
- 行级锁:每次操作锁住对应的行数据。
- 根据锁的兼容性,分为:
- 共享锁(读锁):
- 允许多个事务同时对数据加读锁,实现并发读。
- 加了读锁之后,会阻塞其他事务对该数据加写锁,但不会阻塞加读锁的请求。
- 排他锁(写锁):
- 只允许加写锁的事务访问数据,其他事务都会被阻塞。
- 加写锁之后,不允许任何其他事务再对数据加任何锁,实现互斥写。
- 共享锁(读锁):
二、事务隔离级别和锁的关系
- 读未提交(Read Uncommitted)
- 没有加任何锁,存在脏读、不可重复读和幻读问题。
- 读提交(Read Committed)
- 对读取的数据加共享锁,可以避免脏读,但不可重复读和幻读仍可能存在。
- 可重复读(Repeatable Read)
- 对读取的数据加共享锁,对用到的查询条件加共享锁,可以避免脏读和不可重复读,但幻读仍可能存在。
- 串行化(Serializable)
- 对读取的数据和查询条件都加排他锁,可以防止脏读、不可重复读和幻读,但并发性最低。
- 具体了解事务隔离级别:数据库进阶教学——事务-CSDN博客
更多推荐
数据库进阶教学——事务隔离级别和锁的关系
发布评论