mysql事务四大特性介绍
2018/6/21 10:30:44

  数据库事务特性:acid

a:原子性,一次操作要么都成功,要么都失败回滚。(atomicity)

c:一致性,数据执行前和执行后要保持一致。(consistency)[转账来说:比如一个账户事务执行前和是500,执行后要必须确保和是500]

i:隔离性,并发的多个事务之间相互隔离,互不干扰。(isolation)[事务a要么在事务b执行前执行或者执行后执行]提供好几种隔离级别

d:永久性,事务执行之后对数据库的改变是永久性的。(durability) 

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

不可重复读:一个事务中多次读取同一个数据得到的结果不一致。(查询间隔中,其他事务改变数据提交了事务)

不可重复读和脏读的区别是,脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。

幻读(虚读):是事务非独立执行过程中发生的。

比如事务a修改数据库中所有数据的name都为张三,事务b这个时候插入了一条新的数据name是李四并且提交了,

事务a的用户再去查数据发现还有一条(事务b添加的)没有更新,就像产生幻觉一样,就是发生了幻读。

幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。

MySQL数据库为我们提供的四种隔离级别:

① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

② Repeatable read (可重复读):可避免脏读、不可重复读的发生。

③ Read committed (读已提交):可避免脏读的发生。

④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。 

以上四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。

像Serializable这样的级别,就是以锁表的方式(类似于Java多线程中的锁)使得其他的线程只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。在MySQL数据库中默认的隔离级别为Repeatable read (可重复读)。

在MySQL数据库中查看当前事务的隔离级别:

select @@tx_isolation;

在MySQL数据库中设置事务的隔离 级别:

set tx_isolation=’隔离级别名称;’

记住:设置数据库的隔离级别一定要是在开启事务之前!

    山西恩驰森迪软件开发有限公司作为运城地区少有的几家运城软件开发公司中的一家,无论是在运城手机APP开发运城微信二次开发运城网页制作等方面都有很好的技术水平,未来我们将发展的更大、更好,欢迎大家前来咨询!


(点击次数:

为什么选择我们?

Why Choose Us

15年软件开发服务,提供全方位互联网服务。公司成立以来发展迅速,业务不断发展壮大,致力于互联网品牌建设与网络营销,专业领域包括软件开发、网站建设、APP开发、微信开发、软件渠道代理、系统集成、电子商务、网站策划、电子产品等相关类别,我们拥有良好的社会声誉和对产品和专业技术的不断追求。

我们一直结合社会发展,紧跟时代,不断地创新,与其他网站建设及系统开发公司不同,我们的整合解决方案结合了我们网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供一体化全方位的互联网品牌整合方案,以最专业的精神为您提供安全、经济、专业、省心的服务。 我们将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴。

专业、高效、责任