MySQL

1.事务

事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。

2.事务的四个特性

① 原子性(atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

事务是一个原子操作, 由一系列动作组成。 组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有的操作执行成功,整个事务才提交。

事务中的任何一个数据库操作失败,已经执行的任何操作都必须被撤销,让数据库返回初始状态。

② 一致性(consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

一旦所有事务动作完成, 事务就被提交。数据和资源就处于一种满足业务规则的一致性状态,即数据不会被破坏。

③ 隔离性(isolation) 事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

在并发数据操作时,不同的事务拥有各自的数据空间,它们的操作不会对对方产生干扰。准确地说,并非要求做到完全无干扰。

数据库规定了多种事务隔离级别,不同的隔离级别对应不用的干扰程度。隔离级别越高,数据一致性越好,但并发行越弱。

④ 持久性(durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。

3.事务的隔离

数据库中读取数据存在的三大问题:

①脏读(dirty read):一个事务读到其它事务未提交的数据。

②不可重复读:在同一个事务当中,第一次和第二次读取的数据不一样。

③幻读:读到的数据是假的。

事务和事务之间的隔离级别有四个级别

①读未提交:read uncommitted(最低的隔离级别):事务A可以读取到其他事务未提交的数据

    存在的问题:存在脏读现

②读已提交:read committed:事务A 只能 读取到其他事务提交后的数据。

  存在的问题:解决了脏读的现象,但存在不可重读现象。

  这种隔离级别是比较真实的数据,每一次读到最真实的数据。

  oracle数据库默认的隔离级别是read committed。

③可重复读:repeatable read:事务A开启后,只要不提交事务A,每一次在事务A中读到的数据都是一致的,即使事务B将数据修改并且提交了,事务A读取到的数据还是之前的。

  存在的问题:每一次读取到的数据都是幻象,不够真实。

  是mysql中默认的事务隔离级别。

④序列化:serializable(最高的隔离级别):效率最低,解决了所有的问题,这种隔离级别表示事务排队,不能并发,每一次读到的数据都是最真实的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值