VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

Menu

事务隔离

事务是Vastbase E100数据库系统执行过程中最小的逻辑单位。当事务被提交时,数据库管理系统要确保一个事务中的所有操作都成功完成,并且在数据库中永久保存操作结果。如果一个事务中的一部分操作没有成功完成,则数据库管理系统会把数据库回滚到操作执行之前的状态。显式地指定 BEGIN…END/COMMIT/ROLLBACK包括的语句块或一组语句为一个事务,未指定BEGIN…END/COMMIT/ROLLBACK的单条语句也称为一个事务。事务有四个重要的特性:原子性、一致性、隔离性、持久性。

如果所有的事务都按照顺序执行,所有事务的执行时间没有重叠交错就不会存在事务并发性。如果以不受控制的方式允许具有交织操作的并发事务,则可能发生不期望的结果。这些不期望的结果可能被并发地写入和并发地读取而得到非预期的 数据。在Vastbase E100中可以把这些非预期的现象总结为:脏读 (Dirtyread)、不可重复读(Non-repeatable read)、幻读(Phantom Read)和序列化异常(Serialization Anomaly)。

为了避免事务与事务之间并发执行引发的副作用,Vastbase E100支持ANSI SQL标准定义的四类隔离级别:

  • Read Uncommitted(读未提交)

    在该隔离级别,所有事务都可以看到其他未提交事务的执行结果,在多用户数据库中,脏读是非常危险的,在并发情况下,查询结果非常不可控,即使不考虑结果的严谨性只追求性能,它的性能也并不比其他事务隔离级别好多少,可以说脏读没有任何好处。所以未 提交读这一事务隔离级别很少用于实际应用。

  • Read Committed(读已提交)

    这是Vastbase E100的默认隔离级别,它满足了一个事务只能看见已经提交事务对关联数据所做的改变的隔离需求。

  • Repeatable Read(可重复读)

    确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。

  • Serializable(可序列化)

    这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

隔离级别 脏读 不可重复读 幻读 序列化异常
Read Uncommitted 不可能 可能 可能 可能
Read Committed 不可能 可能 可能 可能
Repeatable Read 不可能 不可能 不可能 可能
Serializable 不可能 不可能 不可能 不可能