事务
在 MySQL 中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。
在实际项目中,假设只有一条 SQL 语句执行成功,而另外一条执行失败了,就会出现数据前后不一致。
因此,在执行多条有关联 SQL 语句时,事务可能会要求这些 SQL 语句要么同时执行成功,要么就都执行失败。
在 MySQL 中,事务的自动提交状态默认是开启的。
查询事务的自动提交状态
SELECT @@AUTOCOMMIT
@@AUTOCOMMIT |
| 1 |
自动提交的作用:当我们执行一条 SQL 语句的时候,其产生的效果就会立即体现出来,且不能回滚。
关闭自动提交
SET AUTOCOMMIT = 0;
| @@AUTOCOMMIT |
| 0 |
当事务自动提交被关闭后,便可以手动控制事务,在提交事务后便不能回滚事务
| 提交事务 | COMMIT |
| 回滚事务 | ROLLBACK |
事务的ACID
A 原子性: 事务是最小的单位,不可以再分割;如果有多个事务,那么任意事务都可以看见其他事务的未提交数据。
C 一致性: 要求同一事务中的 SQL 语句,必须保证同时成功或者失败;只能读取到其他事务已经提交的数据。
I 隔离性: 事务a 和 事务b 之间是具有隔离性的;如果有多个连接都开启了事务,那么事务之间不能共享数据记录,否则只能共享已提交的记录。
D 持久性: 事务一旦结束 ( COMMIT ) ,就不可以再返回了 ( ROLLBACK ) 所有的事务都会按照固定顺序执行,执行完一个事务后再继续执行下一个事务的写入操作。
查询隔离级别:
SELECT @@GLOBAL.TRANSACTION_ISOLATION
| @@GLOBAL.TRANSACTION_ISOLATION |
| REPEATABLE-READ (默认级别) |
隔离级别越高,性能越差
READ-UNCOMMITTED (脏读问题)>
READ- COMMITTED (不可重复读问题)>
REPEATABLE- -READ (幻读问题)>
SERIALIZABLE(串行化问题)
文章转载自极南之地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




