1.事务的概念

事务把一组SQL语句(一条/多条)打包成为一个整体,在这组SQL的执行过程中,要么全部成功,要么全部失败

2.事务的ACID特性(面试题

原子性一个事务中的所有操作,要么全部成功,要么全部失败不会出现只执行了一半的情况。如果事务在执行过程中发生错误,会回滚( Rollback )到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之事务结束以数据库完整性不会被破坏。这表示写入的数据必须完全符合所有的预设规则,包括数据的精度、关联性以及关于事务执行过程中服务器崩溃后如何恢复。

隔离性:数据库允许多个并发事务同时数据进行读写和修改,隔离性可以防止多个事务并发执行由于交叉执行而导致数据的不一致。事务可以指定不同的隔离级别,以权衡在不同的应用场景下数据库性能和安全。

持久性:事务处理结束,对数据的修改永久的写入存储介质,即便系统故障也不会丢失

3.举例

转账的例子

4.使用事务

4.1 查看支持事务的存储引擎

4.2 语法


4.3 自动/手动提交事务

4.4 开启一个事务,执行修改后回滚

回滚( Rollback )会回到到事务开始前的状态

4.5 开启一个事务,执行修改后提交

事务提交前修改可能丢失,但提交修改永久生效数据已经安全地到达磁盘,不再依赖内存),且此时任何客户端查询该表能看已经持久化到磁盘的最新数据。

4.6 保存点

事务执行的过程中设置保存点存档回滚指定保存点可以把数据恢复保存点的状态

5.事务的隔离性和隔离级别

5.1 什么是隔离性

5.2 隔离级别(性能与安全)


未提交【正常情况下应该避免使用这种隔离级别】


已提交【在同一个事务中以相同的条件查询得到了不同的值


两次查询结果集不⼀致



5.3 查看和设置隔离级别

事务隔离级别分为全局作用域会话作用域查看不同作用域事务的隔离级别

# 查看全局作⽤域
SELECT @@GLOBAL.transaction_isolation;
# 查看会话作⽤域
SELECT @@SESSION.transaction_isolation;

【可以看到默认事务隔离级别是REPEATABLE-READ--可重复读

设置事务隔离级别访问模式

SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL level|access_mode;


示例


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐