事务的特性和隔离级别

Posted sasal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务的特性和隔离级别相关的知识,希望对你有一定的参考价值。

事务的特性:ACID

原子性:事务是一个不可分割的工作单元,事务中的操作要么都发生,要么都不发生。

一致性:一个事务中,事务前后的数据完整性要保持一致。

隔离性:多个事务,多个用户并发访问数据库时,一个用户的事务不能被其他用户干扰。

持久性:事务一旦提交,数据永久保存在数据库。

 

并发访问引起的问题(由事务的隔离性引起的)

脏读:读取到用户还没提交的数据。(在事务commit之前,sql执行后会将数据存到日志。)

不可重复读取:一次事务中,两次读取同一个数据,数据内容不一致。

虚读/幻读:一次事务中,两次读取的数据量(简单理解为行数)不一致。

 

事务的隔离级别:

1/ read uncommitted 读取尚未提交的数据 (不能解决问题)

2/read committed 读取已经提交的数据 (解决脏读)----oracle默认

3/repeatable read 重读读取 (解决脏读 和 不可重复读) ----mysql默认

4/serializable 串行化 (解决脏读 不可重复读 和 虚读/幻读)----相当于锁表

 

以上是关于事务的特性和隔离级别的主要内容,如果未能解决你的问题,请参考以下文章

数据库四大特性和事务隔离级别

Spring框架默认事物隔离级别

事务的特性和隔离级别

数据库事务特性以及隔离级别

MySQL 事务四大特性和事务隔离级别

MYSQL的事务隔离级别,MVCC,readView和版本链小结