zoukankan      html  css  js  c++  java
  • 数据库系统原理:ACID的作用以及实现原理

    • 数据库事务:构成单一逻辑工作单元的操作集合

      • 数据库事务可以包含一个或多个数据库操作,但这些操作构成一个逻辑上的整体
      • 构成逻辑整体的这些数据库操作,要么全部执行成功,要么全部不执行
      • 构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响,即不管事务是否执行成功,数据库总能保持一致性状态
      • 以上即使在数据库出现故障以及并发事务存在的情况下依然成立
    • 事务的ACID特性

      • 原子性:事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败。
      • 原子性实现原理:
        image
      • 一致性:事务开始前和结束后,数据库的完整性约束没有被破坏,都是合法的数据状态。比如A向B转账,不可能A扣了钱,B却没收到。
        image
      • 隔离性:并发执行的事务不会相互影响,其对数据库的影响和它们串行执行时一样。
        image
        image
      • 持久性:事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。
        image
    • 在事务的ACID特性中,一致性是事务的根本追求,而对数据库一致性的破坏主要来自两个方面:

      • 事务的并发执行
      • 事务故障或系统故障
    • 如何避免数据库一致性被破坏

      • 并发控制技术:保证了事务的隔离性,使数据库的一致性不会因为并发执行被操作
      • 日志恢复技术:保证了事务的原子性,使数据库的一致性不会因事务或系统故障被破坏。同时使已提交的对数据库的修改不会因系统崩溃而丢失,保证了事务的持久性。
        image
  • 相关阅读:
    SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic
    SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构
    2017年 年计划
    125. Valid Palindrome
    一道多树递归面试题
    顺序表查找和有序表查找
    c++中常见概念、关键字等的区别
    两个栈实现一个队列,两个队列实现一个栈
    150. Evaluate Reverse Polish Notation
    堆排序
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12304293.html
Copyright © 2011-2022 走看看