Categories
程式開發

一文掌握Oracle、MySQL、DB2并发控制机制的异同


本文由 dbaplus 社群授权转载。

数据库的并发控制机制,顾名思义,是用来控制数据库的并发操作的机制。控制的目的是为了保证数据完整和数据一致性。

何为数据一致性?在数据库的并发操作中,多个事务同时读取同一份数据,要保证多个事务读取的同一份数据是准确的。

可能数据的不一致更好理解。例如事务T1、T2同时更新余额为1000余额表, T1减100元,更新余额为900元,T2减500元,更新余额为500元;在T2不知道T1已经更新的情况下直接把余额更新为500元,丢失了T1对余额的更新,此时的数据不能反映真实情况,数据变得不一致。并发事务处理过程中,还可能出现事务T1修改了一条记录,事务T2读取该记录后,事务T1被撤销,此时T2读取的数据就与数据库中的数据不一致,该数据就为“脏”数据。

因此并发操作中,需要确保事务的隔离性以保证数据的一致性。那么如何确保事务的隔离性呢?接下来,我们将对DB2、MySQL和Oracle三种数据库的并发控制机制进行比较分析。

数据库的数据一致性支持机制:事务、锁、日志。

首先我们看看什么是事务。

一、事务

事务:又称为交易,访问数据库系统的可恢复的最小单元。

1、事务的ACID

  • 原子性(Atomicity): 事务为一个整体的工作单元,事务对数据库的操作要么全部执行,要么全部取消;
  • 一致性(Consistency): 事务完成时,所有数据都保持一致状态;
  • 隔离性(Isolation): 事务所做的修改必须与其他事务所做的修改隔离。事务查看数据时数据的状态要么为其他事务修改之前要么为其他事务修改之后,不会为中间状态。即多个事务不能同时修改同一份数据;
  • 持久性(Durability): 事务提交后,对数据库所做的修改会永久保存。

原文链接:【https://www.infoq.cn/article/8W3O4rdx2F3qRSJWSCS4】。未经作者许可,禁止转载。