Mysql数据库事务四大特性、事务状态、事务使用、事务隔离级别
前言
每当被问到事务四大特性、事务状态、事务使用、事务隔离级别,你心里都有底吗?本文详细地介绍了这些内容,并通过举例来解释:它们解决了什么样的生产问题。
一、事务是什么?
事务是区别文件系统的重要特性之一,事务就是一组操作,要么都成功,要么回滚。
连接Mysql数据库后,用SHOW ENGINES
查看数据库引擎,我们可以发现只有InnoDB支持事务,MyISAM不支持事务。
二、事务四大特性ACID
1.原子性
一组操作是整体,不能再分,要么全部成功,要么全部失败回滚;
2.一致性
从一种合法状态变成另外一种合法状态。例如: 假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
3.隔离性
事务之间互不干扰。理想状态是:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
4.持久性
结果永久保存。即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。持久性是通过事务日志来保证的:重做日志、回滚日志。
二、事务的状态
1.活动的
事务对应的数据库操作正在执行。
2.部分提交的
事务中最后一个操作完成,但是还未写到磁盘。
3.失败的
当事务处于活动或部分提交,出错无法继续执行,或人为停止当前事务提交。
4.中止的
回滚后的状态;
5.提交的
部分提交状态的事务将修改的数据写到磁盘之后。
如图所示,提交的、终止的才是事务的最终状态。
对于已经提交的事务来说,该事务对数据库所做的修改是永久生效的;
对于处于中止的事务,该事务对数据库所做的修改都将被回滚到没执行该事务之前的状态。
三、事务的使用
1.显式事务
通过start transaction
或 begin
开启,其中start transaction
开启式可以指定只可读,还是读写,默