事务的概念
大约 2 分钟
事务的概念
定义
InnoDB支持事务,而MyISAM不支持事务
一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元,只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库;如果有部分事务处理失败,那么事务就要回退到最初的状态,因此,事务要么全部执行成功,要么全部失败。
所以记住事务的几个基本概念,如下:
- 事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果。保证事务执行的原子性
- 事务的所有SQL语句全部执行成功,才能提交(commit) 事务,把结果写回磁盘
- 事务执行过程中,有SQL出现错误,那么事务必须要回滚(rollback) 到最初的状态
代码上的事务操作
比如转账业务需要多条SQL语句共同完成,只有这些SQL都执行成功才算业务成功了

如果这2句SQL都成功了,那么
如果其中任意一条SQL由于停电,或者服务器出错,导致SQL执行异常,那事务就没有提交,,数据将恢复到事务开始前的状态
这是存储引擎来保证的(redo log和undo log保证的)

查看当前数据库支持的存储引擎
show engines;

修改提交方式
数据库引擎可以通过命令临时修改,或者通过配置文件永久修改事务的提交方式
select @@autocommit;
set @@autocommit=0; #事务手动提交
set autocommit=0; #上面一样
- @@autocommit为
1
表示,为0
表示事 - 这种修改只对当前会话session有效

