事务的特性和隔离级别

事务的特性:ACID

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

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

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

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

 

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

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

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

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

 

事务的隔离级别:

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

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

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

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

 

posted @ 2019-04-03 11:31  SasaL  Views(154)  Comments(0Edit  收藏  举报