事务级别有哪些?

  1. Read Uncommitted(读未提交):
    • 这是最低的事务隔离级别。
    • 一个事务可以读取另一个尚未提交的事务的修改。
    • 可能出现的问题包括脏读、不可重复读和幻读。
    • 由于它允许读取未提交的数据,所以性能上可能稍好一些,但数据一致性风险也最高。
  2. Read Committed(读已提交):
    • 大多数数据库系统的默认隔离级别(但不是MySQL的默认级别)。
    • 一个事务只能读取已经提交的事务的修改。
    • 避免了脏读,但可能出现不可重复读和幻读。
    • 在这个级别下,一个事务内对同一数据的多次读取可能返回不同的结果,因为其他事务可能在此期间修改了数据并提交。
  3. Repeatable Read(可重复读):
    • 这是MySQL,MongoDB的默认隔离级别。
    • 在同一事务内的多次读取会看到相同的数据行,即使其他事务在此期间修改了这些行并提交。
    • 避免了脏读和不可重复读,但可能出现幻读(即一个事务读取了几行数据,另一个并发事务插入新行,然后第一个事务再次读取同样的范围时,看到了这些新行)。
    • 通常,这个级别通过多版本并发控制(MVCC)来实现。
  4. Serializable(串行化):
    • 这是最高的隔离级别。
    • 它通过强制事务串行执行,而不是并发执行,来避免脏读、不可重复读和幻读。
    • 由于事务是串行执行的,因此性能通常最差。
    • 在这个级别下,读操作会加共享锁,写操作会加排它锁,因此其他事务不能修改被读取的数据。
posted @ 2024-03-26 16:02  Esther_Cheung  阅读(33)  评论(0编辑  收藏  举报