大数据 | 大数据基础--系统之大数据管理系统|数据库管理系统--事务管理

发布于 2021-04-05 18:19

亲爱的读者朋友大家晚上好,上次是关于查询优化的分享,这次我们一起来看下数据库中的事物管理。

概念

定义 事务是DBMS中一个逻辑工作单元,通常由一组数据库的操作组成,满足 原子性一致性隔离性持久性 四个性质。

事务的ACID性质

  • 原子性(Atomic):构成事务的所有操作要么全部执行,反映到数据库中;要么全部不执行,没有对数据 库中的数据造成影响。
  • 一致性(Consistency):事务的操作使数据库从一个一致状态(所有对象满足各自的约束)转变为另一个一致状态。
  • 隔离性(Isolation):在多用户环境下,事务的执行不受同时执行的其它事务的影响。例:多售票点售票的例子。
  • 持久性(Durability):一个事务如果成功执行,其对 数据库的影响是持久的,不因故障而失效。

举例

  1. 向客户1003销售pCode=101的产品10个

    Update Product set qty=qty-10 where pCode=‘101’;
    Insert into Order(‘25’,’1002’,2016-3-11,2016-3-12);
    Insert into Orderdetail(‘25’,’101’,10,0.05);
    Commit;
  2. 银行数据库的转账事务,从账号A转50元到账户B(注意commit之前的操作都要执行,否则就会出现已经付了款但是对方没有收到的情况,这就是原子性

    Read(A);
    A:=A-50; Write(A); Read(B);
    B:=B+50; Write(B); Commit;

事务的标识

  • 由 begin transaction 语句和 end transection 显式定义事务的开始和结束。

  • 隐式定义: 从一个读写语句开始,遇到rollback或commit语句时终止(SQL-92)。

  • Commit: 提交,确认事务执行。

  • Rollback: 回滚,将此前的执行的操作影响恢复到操作前。

事务的大小与回滚机制

  • 事务执行过程中出现错误、或不可执行的操作(如订单已插入、 结账时发现账户余额不足)需回滚。因此DBMS将事务的执行缓存 在回滚段(表空间一个区域),执行rollback或commit后清除。

  • 回滚段大小、回滚缓冲区大小影响事务的大小、并发事务数和执 行效率。

如何保证上述事务满足ACID性质?

  • 回滚机制和故障恢复机制保证了事务的原子性。如果一个事务没有执行到commit,前面的操作不反映到数据库数据中。
  • 只要事务定义的合理,其原子性能保证结果的一致性。
  • 持久性需要数据库的故障恢复系统将发生故障时尚未将操作结果 体现到数据库中的操作进行适当处理,以确保操作结果正确。
  • 关于持久性,与数据库文件系统的缓存机制密切相关。因为数据 的读写操作是在缓冲区进行的,在还没有写回磁盘文件前发生故障,就出现了持久性问题。
  • 故障恢复机制: 在事务的执行过程中,如果发生了故障,系统采取适当措施取消一个未完成的事务对数据库的影响,或将已经执行完的事务结果反映到数据库存储文件中。
  • 事务的隔离性需要复杂的并发控制机制来实现。

总结

上面就是关于事务管理的分享。下次是关于数据库的并行,敬请期待~

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材