mysql全局隔离和会话隔离
时间: 2024-06-24 11:01:05 浏览: 162
Mysql事务的隔离性
MySQL支持两种主要的事务隔离级别:全局隔离(Global Isolation)和会话隔离(Session Isolation)。这些隔离级别用于控制不同事务之间的可见性和并发控制。
1. **全局隔离(Global Isolation, 其实指的是Repeatable Read)**:
在全局隔离级别下,每个事务在其整个生命周期内都只能看到已经提交的数据,不会受到其他并发事务的影响。这意味着在一个事务开始后,即使其他事务对数据进行了修改,该事务也会继续按原有的版本读取数据。这是默认的隔离级别,除非特别指定,否则所有事务都将使用此级别。
2. **会话隔离(Session Isolation, 包括Read Committed、Read Uncommitted、Serializable)**:
- **Read Committed(可重复读)**:在一次事务中,一旦数据被另一事务提交,后续的事务就能看到这个提交。如果一个事务读到某一时刻的数据,那么在同一事务中再次读取同一行时,将始终得到相同的结果,即使其他事务在之间进行了更新。
- **Read Uncommitted(读未提交)**:在这种模式下,事务可以读取其他事务未提交的数据,可能会看到不一致的结果。这是最低的隔离级别,通常用于高性能场景但需要小心使用,因为它可能导致脏读、不可重复读和幻读等问题。
- **Serializable(串行化)**:这是最严格的隔离级别,它保证了每个事务看起来像是在完全独立执行,没有并发。这意味着所有事务都按顺序执行,不会发生并发冲突,但性能开销最大。
阅读全文