码迷,mamicode.com
首页 > 其他好文 > 详细

事务-----四大特性

时间:2017-09-10 18:55:00      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:rac   结果   否则   影响   mysql   问题   幻读   查询   atomic   

事务的第一大特性:原子性(Atomicity)它指一个事务中的所有操作要么都发生,要么都不发生,举个例子,对于银行转账,收款方和发款方必须同时加减同样的money,要么同时加减,要么都不加不减;

 

事务的第二大特性:一致性(Consistency)指在事务中,所有的数据必须保持完整,对于上述的银行转账,不管怎么转账,总钱数是不会变的;

 

事务的第三大特性:隔离性(Isolation)指多个用户并发访问数据库时,用户之间的事务不可以互相干扰,而且多个并发事务之间的数据要相互隔离.否则会产生一些问题,如脏读:一个事务读到了另一个事务未提交的数据,A和B说给他转账成功了,但是A没有提交,这时A可以回滚然后就出现问题了.

 

事务的第四大特性:持久性(Durability)指一个事务一旦被提交,它的所有对数据库数据的操作是永久性变化的,接下来不管数据库本身有什么操作都不会对它由任何影响.

隔离级别:解决问题

脏读:一个事务读到了另一个事务未提交的数据

不可重复读:一个事务读到了另一个事务已经提交的数据,引发另一个事务,在事务中的多次查询结果不一致

虚读/幻读:一个事务读到了另一个事务已经提交的数据.导致另一个事务在事务中多次的查询结果不一致.

1.read uncommitted 读未提交,一个事务读到另一个事务没有提交的数据

存在:3个问题(脏读,不可重复读,虚读)

解决(0个问题)

2.read committed 读已提交,一个事务读到另一个事务已经提交的数据

存在:2个问题(不可重复读,虚读)

解决:1个问题(脏读)

3.repeatable read 可重复读,在一个事务中读到的数据始终保持一致,无论另一个事务是否提交

存在:1个问题(虚读)

解决:2个问题(脏读,不可重复读)

4.serializable 串行化  ,同时只能执行一个事务,相当于事务中的单线程

存在:0个问题

解决:3个问题((脏读,不可重复读,虚读)

 

常见数据库的默认隔离级别:

MySql: repeatable read

Oracle:read  committed

事务-----四大特性

标签:rac   结果   否则   影响   mysql   问题   幻读   查询   atomic   

原文地址:http://www.cnblogs.com/wqdyxnbd/p/7501632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!