什么是事务?
事务就是一组mysql语句的组成,这些语句存在逻辑上的相关性,这一组语句要么全部成功,要么全部失败,是一个整体;mysql提供一种机制,保证达到这样的效果。这就是事务
为什么需要事务呢?
举个栗子:
就拿银行系统来讲,张三想要给李四转账三百;那么对于银行来讲,在扣除张三的三百之后,就得给李四的账户上加上三百。这就必须让这两个数据一起执行。这就引入了我们事务的应用。我们可以开启一个事务,然后提交这个事务,就可以保证这两个语句均执行掉。
好了,我们说了事务的概念和应用,那就让我们看看事务的操作把
1:开启一个事务
start transaction;
2:创建一个保存点
savepoint 保存点名;
3:回到保存点(根据具体情况)
rollback to 保存点名;
4:提交一个事务
commit 事务名
注意:innodb支持事务,myusam不支持事务
好了,接下来我们的重点来了,让我们看看事务的隔离级别
隔离级别 | 脏读 | 不可重复读 | 幻读 | 加读锁 |
读未提交 | √ | √ | √ | 不加锁 |
读已提交 | × | √ | √ | 不加锁 |
可重复读 | × | × | × | 不加锁 |
可串行化 | × | × | × | 加锁 |
√:会发生该问题
×:不会发生该问题
set session transaction isolation level read uncommitted;
查看当前的隔离级别:
select @@tx_isolation;
好了,介绍完了事务的隔离级别,接下来让我们看看事务的ACID特性;
原子性:事务是应用中最小的执行单位,就如原子是自然界的最小颗粒,具有不可在分的特征一样,事务是应用中不可再分的最小逻辑执行体
一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库只包含事务成功提交的结果时,数据库处于一致性状态。如果系统运行发送中断,某个事务尚未完成而被中断,而改未完成的事务对数据库所做的修改已经被写入数据库,此时数据库就处于一种不一致的状态。因此一致性是通过原子性来保证的
隔离性:各个事务的执行互补干扰,任意一个事务的内部操作对其它并发事务都是隔离的。也就是说,并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间不能相互影响。
持久性:持久性是指一个事务一旦被提交,它对数据库所做的更改都要永久记录到磁盘中。
好了,以上就是阿狸对数据库事务的学习分享了,希望可以帮助到大家;若有误,请慷慨指出