定义:
一组逻辑操作单元,使数据从一种状态变换到另一种状态。
原则:
保证所有事务都作为
一个工作单元
来执行,即使出现了故障,都不能改变这种执行方
式。
当在一个事务中执行多个操作时,要么所有的事务都被提交
,那么这些修改就永久
地保
存下来;
要么MySQL将
放弃
所作的所有
修改
,整个事务回滚
到最初状态。
特点:
原子性:
指事务是一个不可分割的工作单位,要么全部提交,要么全部失败回滚。
一致性:
指事务执行前后,数据从一个
合法性状态
变换到另外一个
合法性状态
隔离性:
事务的隔离性是指一个事务的执行
不能被其他事务干扰
注:通过锁机制和MVCC实现
持久性:
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是
永久性的,
接下来的其他操作
不应该对其有任何影响
事务的状态:
活跃:
事务对应的数据库操作正在执行过程中时,我们就说该事务处在
活动的
状态。
部分提交:
当事务中的最后一个操作执行完成,但由于操作都在内存中执行,所造成的影响并
没有刷新到磁盘
时,我们就说该事务处在
部分提交的
状态。
失败:
当事务处在
活动的
或者
部分提交的
状态时,可能遇到了某些错误
而无法继续执行,我们就说该事务处在
失
败的
状态
提交:
当一个处在
部分提交的
状态的事务将修改过的数据都
同步到磁盘
上之后,我们就可以说该事务处
在了
提交的
状态
终止:
如果事务执行了一部分而变为
失败的
状态,那么就需要把已经修改的事务中的操作还原到事务执
行前的状态。
当
回滚
操作执行完毕时,我们就说该事
务处在了
中止的
状态。
状态变化的流程图: