数据库事务
Posted veryvalley
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库事务相关的知识,希望对你有一定的参考价值。
事务属性(ACID)
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
事件读现象
- 脏读
- 不可重复读
- 幻读
事务隔离级别
- 未提交读(READ UNCOMMITTED):脏读,不可重复读,幻读
- 已提交读(READ COMMITTED): 不可重复读,幻读 --> oracle,sqlServe 默认
- 可重复读(REPEATABLE READ):幻读 --> mysql 默认
- 序列化(SERIALIZABLE ):无
锁
- 共享锁:未释放前其它事务可以读,可以再加共享锁,但不能修改。
- 排它锁:未释放前其它事件,不可读,也不能修改。
- 行级共享锁
- 行级排它锁
- 表级(范围)共享锁
- 表级(范围)排他锁
隔离级别与锁的关系
- 在Read Uncommitted级别下,读操作不加 行级共享锁,写操作加 行级共享锁
- 在Read Committed级别下,读操作需要加行级共享锁,但是在语句执行完以后释放行级共享锁;
- 在Repeatable Read级别下,读操作需要加行级共享锁,但是在事务提交之前并不释放加行级共享锁,也就是必须等待事务执行完毕以后才释放加行级共享锁。
- 在Serialize级别下,会在Repeatable Read级别的基础上,添加一个范围锁。保证一个事务内的两次查询结果完全一样,而不会出现第一次查询结果是第二次查询结果的子集。
参考:
https://baijiahao.baidu.com/s?id=1572543485267773&wfr=spider&for=pc&isFailFlag=1
https://blog.csdn.net/baidu_37107022/article/details/77481670
Isolation
以上是关于数据库事务的主要内容,如果未能解决你的问题,请参考以下文章