前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库事务总结

数据库事务总结

作者头像
SuperHeroes
发布2018-05-31 13:53:43
8210
发布2018-05-31 13:53:43
举报
文章被收录于专栏:云霄雨霁云霄雨霁

食事务基本概念

事务是构成单一逻辑工作单元的操作集合,要么完整的执行,要么完全不执行。在程序中,事务以 BEGIN TRANSTATION语句开始,以COMMIT语句或ROLLBACK语句结束。

事务的ACID性质:

  • A:原子性    一个事务是一个不可分割的逻辑单元
  • C:一致性    数据不会因事物的执行而遭到破坏
  • I:隔离性     多个事务并发执行,保证结果正确
  • D:持久性    事务执行后,他对数据库的更新要永久反映到数据库中

事务的状态变迁图:

活动状态:在事务开始执行后,立即进入“活动状态”。在活动状态事务将执行对数据库的读写操作。

局部提交状态:事务最后一个语句执行完成后,进入局部提交状态。事务执行完了,但对事务的修改很可能还留在内存的系统缓存区中,所以还不能说事务真正结束。

失败状态:处于活动状态的事务还没到达最后一个语句就终止执行,此时就称事务进入失败状态。或者处于局部提交状态的事务遇到故障(如发生干扰,或未能完成对数据库的修改),也进入失败状态。

异常终止状态:处于失败状态的事务,很可能已经对磁盘中的数据进行了一部分的修改。为保证事务的原子性,应该撤销该事务已经对数据库的修改。

提交状态:食物进入局部提交状态后,并发控制系统将检查该事务与并发事务是否发生干扰现象。检查通过后,系统提交操作,将修改内容写到磁盘上。事务成功结束。

数据库恢复:

数据库恢复的具体实现方法如下:

平时做好两件事:转储和建立日志。

  1. 周期地对整个数据库进行复制,转储到另一个磁盘等存储介质中。
  2. 建立日志数据库。记录日志的开始、结束标志,记录事务对数据库的每一次插入、删除和修改后的值,写到日志库中,以便有案可查。

一旦发生故障,分两种情况处理:

  1. 如果数据库遇到灾难性故障,比如磁盘损坏等,这是数据库已经不能再用了,应该装入最近备份的数据库,并利用日志重做已提交的事务。
  2. 如果只是破坏了数据库的一致性,只要利用日志库撤销所有不可靠的修改,再利用日志重做相关日志即可。

故障类型和恢复方法:

1、事务故障

事务故障可分为两种:可预期故障和非预期故障。

  • 可预期故障:即在程序中可以预先估计到的错误。例如:存款余额透支等。这种情况可以在事务代码中添加判断和回滚语句。
  • 非预期故障:例如:运算溢出、数据错误,发生死锁等。这种情况系统直接对事务进行UNDO(撤销)处理。
2、系统故障

引起系统停止运转随之要求重新启动的事件称为系统故障。例如硬件故障、软件错误或掉电等几种情况。系统故障会影响正在运行的所有事务,但不破坏数据库。恢复办法是重新启动,重新启动时需要对非正常终止的事务进行处理,把数据库恢复到正确的状态。

重新启动时,具体处理分两种情况:

  • 对未完成的事务做UNDO(撤销)处理
  • 对已提交事务但更新还停留在缓冲区的事务进行REDO(重做)处理
3、介质故障

在发生介质故障或遭到病毒破坏时,磁盘上的数据库遭到毁灭性的破坏。此时恢复过程如下:

  1. 重装最近转储的后备副本到新的磁盘,使数据库恢复到转储时的一致状态。
  2. 在日志中找出最近转储以后所有提交的事务。
  3. 对这些事务进行REDO处理,将数据库恢复到故障前一刻的一致性状态。

实际中,系统故障称为软故障,介质故障称为硬故障。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 食事务基本概念
  • 事务的状态变迁图:
  • 数据库恢复:
  • 故障类型和恢复方法:
    • 1、事务故障
      • 2、系统故障
        • 3、介质故障
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档