MST

星途 面试题库

面试题:分布式系统中ACID隔离性在数据并发访问下的常见隔离级别及应用场景

在分布式后端开发中,ACID的隔离性定义了不同事务并发访问数据时的处理方式。请列举出常见的隔离级别,并阐述每个隔离级别在数据并发访问场景下的应用场景及可能出现的问题。
36.0万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

常见隔离级别

  1. 读未提交(Read Uncommitted)
    • 应用场景:极少使用,因为它提供的隔离性最弱,主要用于对数据一致性要求极低,且希望获得最大并发性能的场景,比如某些允许读取临时数据用于统计分析等特殊场景。
    • 可能出现问题
      • 脏读(Dirty Read):一个事务可以读取到另一个未提交事务修改的数据。例如,事务A修改了某条数据但未提交,事务B此时读取到了该未提交修改的数据,如果事务A回滚,事务B读取到的数据就是无效的脏数据。
  2. 读已提交(Read Committed)
    • 应用场景:大多数数据库的默认隔离级别,适用于大多数OLTP(联机事务处理)系统,这种场景下需要保证事务读取到的数据是已经提交的,确保数据的一致性。
    • 可能出现问题
      • 不可重复读(Non - Repeatable Read):在一个事务内,多次读取同一数据,由于其他事务在期间提交了对该数据的修改,导致两次读取结果不一致。例如,事务A先读取某条数据,事务B随后修改并提交了该数据,事务A再次读取时得到不同结果。
  3. 可重复读(Repeatable Read)
    • 应用场景:适用于需要保证在一个事务内多次读取同一数据时结果保持一致的场景,如银行转账等涉及金额计算且需确保数据一致性的场景。
    • 可能出现问题
      • 幻读(Phantom Read):在一个事务内,多次执行相同的查询条件,由于其他事务在期间插入或删除了符合查询条件的数据,导致每次查询结果不一致。例如,事务A按条件查询某类数据,事务B插入了符合该条件的新数据,事务A再次查询时就会发现多了新数据,仿佛出现了“幻影”。
  4. 串行化(Serializable)
    • 应用场景:适用于对数据一致性要求极高,几乎不允许并发冲突的场景,如涉及金融核心交易等关键业务场景。
    • 可能出现问题
      • 并发性能极低:由于事务只能串行执行,会导致系统的并发处理能力大幅下降,因为所有事务都需要排队等待,可能会造成严重的性能瓶颈。