zoukankan      html  css  js  c++  java
  • 数据库事务的ACID

    对于支持Transaction的数据库而言,必须有以下特征

    一、Atomicity 原子性

    一个事务中的所有操作,执行情况有两种:全部完成和全部不完成。不能停滞在中间某个环节,执行过程中出现错误时,会回滚到事务开始前的状态

    二、Consistency 一致性

    (wikipedia):Ensures that any transaction will bring the database from one valid state to another.

    定义的规则:constraints(约束),cascades(级联),triggers(触发)

    所有写入数据库的数据必须满足上述规则或者规则组合(Any data written to the database must be valid according to all defined rules)

    不保证应用程序需求的事务正确性,仅仅保证任何程序错误不会导致破坏规则。

    (百科):一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。

    三、Isolation 隔离性(串行化)

    提供隔离性是并发控制的主要目标。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。

    四、Durability 持久性

    事务完成后,其对数据库所作的更改持久的保存在数据库中,不会被回滚。

    实现方式:

    1.write-ahead logging

    保证原子性的方法:在该表数据库前将没有更改的数据拷贝到日志中

    2.shadow paging

    (wiki)updates are applied to a partial copy of the database, and the new copy is activated when the transaction commits.

    (百科)与1相比,不需要redo,undo,消除了写日志记录的开销,恢复速度快

    缺点:事务提交时要输出多个块,提交开销大,以块为单位,很难应用到允许多个事务并发执行的情况。

  • 相关阅读:
    jsp获取当前目录下的文件和目录,获取windows盘符
    WAS常用配置的文件
    Was提示SOAP链接不上可能停止 但WAS已经启动
    git本地仓库提交到远程
    ubuntu1804时间相差8小时
    docker安装&卸载
    ubuntu 安装离线字典
    写给还没入门的网页设计师们
    简单10步,建立一个完美的商业网站
    不会配色?来看看网页设计中怎样使用柔和色调
  • 原文地址:https://www.cnblogs.com/justdoitLLQ/p/6529534.html
Copyright © 2011-2022 走看看