zoukankan      html  css  js  c++  java
  • 事务

    事务

    1.什么是事务?

    一个事务是一个完整的业务逻辑单元,不可再分。
    如:银行账户转账,需执行两条update语句,必须同时成功或同时失败。

    事务可以保证多个操作原子性,要么全成功,要么全失败。对于数据库来说事务保证批量的DML要么全成功,要么失败。
    只有DML语句才和事务有关系(insert delete update)

    2.事务原理
    • 开始事务机制
    • 执行DML语句(可理解为记录历史操作或记录到缓存,并不会修改硬盘上的数据)
    • 提交(commit)或回滚(rollback)事务(结束)
    3.事务四大特性?

    事务具有四个特性ACID。
    a)原子性(atomicity)
    整个事务中的所有操作,必须作为一个单元全部完成(或全部取消)。事务是最小的单元,不可再分
    b)一致性(Consistency)
    在事务开始之前或结束之后,数据库都保持一致状态。保证多条DML同时成功或同时失败
    c)隔离性(Isolation)
    一个事务不会影响其他事务运行
    d)持久性
    最终数据必须持久化到硬盘中。

    事务之间的隔离性
    事务隔离性存在隔离级别,理论上隔离级别包括4个:
    第一级别:读未提交(read uncommited)
    对方事务还未提交,当前事务可以读取到对方未提交数据。
    第二级别:读已提交
    对方提交之后的数据,我方可以读取到
    问题是:不可重复读
    第三级别:可重复度(即不能读取已提交)
    这种隔离级别解决了不可重复度的问题
    问题是:读到的数据是幻像
    第四级别:序列化读/串行化读
    解决了所有问题。
    效率低,需要事务排队。

    mysql数据库默认的隔离级别是可重复度。
    oracle数据库默认隔离级别是读已提交
    
    mysql事务默认情况下是自动提交的。即执行任意一条DML语句则提交一次。
    如何关闭这种提交?start transaction
  • 相关阅读:
    疯狂Java讲义-Java基础类库
    第十一届软件类校内模拟赛本科组Java软件开发
    疯狂Java讲义
    疯狂Java讲义-面向对象(下)
    疯狂Java讲义-面向对象(上)
    疯狂Java讲义-流程控制与数组
    疯狂Java讲义-数据类型和运算符
    数据结构-图和图遍历(DFS、BFS)
    A1034 Head of a Gang (30分)
    A1098 Insertion or Heap Sort (25分)
  • 原文地址:https://www.cnblogs.com/tingshu/p/14851443.html
Copyright © 2011-2022 走看看