目录
事务的特征(ACID)
- 原子性(A):要么全部执行,要么全部不执行
- 一致性(C):事务执行前后,数据库的完整性不会被破坏
- 隔离性(I) :事务之间互不干扰
- 持久性(D):事务提交后将永久保存,不能再被回滚
隔离级别
- 读未提交:read uncommitted
- 读已提交:read committed
- 可重复读:repeatable read
- 串行化:serializable
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
| 读未提交(read uncommitted) | 可能 | 可能 | 可能 |
| 读已提交(read committed) | 不可能 | 可能 | 可能 |
| 可重复读(repeatable read) | 不可能 | 不可能 | 可能(InnoDB例外) |
| 串行化 (serializable) | 不可能 | 不可能 | 不可能 |
设置事务隔离级别
方式一
可以在my.ini文件中使用transaction-isolation选项来设置服务器的缺省事务隔离级别。该选项值可以是:
– READ-UNCOMMITTED
– READ-COMMITTED
– REPEATABLE-READ
– SERIALIZABLE
例如:
[mysqld]
transaction-isolation = REPEATABLE-READ
方式二
通过命令动态设置隔离级别
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL <isolation-level>
其中的<isolation-level>可以是:
– READ UNCOMMITTED
– READ COMMITTED
– REPEATABLE READ
– SERIALIZABLE
例如:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
隔离级别的作用范围
会话级:只对当前的会话有效
设置会话级隔离级别为READ COMMITTED :
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
或:
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
全局级:对所有的会话有效
设置全局级隔离级别为READ COMMITTED :
SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
查看事务隔离级别
select @@global.tx_isolation, @@tx_isolation
或
show variables like '%isolation%'
事务的操作
- 开启事务:Start Transaction
- 回滚事务:Rollback Transaction
- 提交事务:Commit Transaction
本文围绕MySQL事务展开,介绍了事务的ACID特征,包括原子性、一致性、隔离性和持久性。阐述了四种隔离级别,如读未提交、读已提交等。还说明了设置和查看事务隔离级别的方式,以及事务的操作,如开启、回滚和提交事务。
2216

被折叠的 条评论
为什么被折叠?



