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
  • 相关阅读:
    ex01 温度转换1
    12 字典的遍历在 Python2 与 Python3 中区别
    11 序列中有多个最值时会索引出哪个
    10 isalpha() 对于字母的定义
    09 Python3 的深拷贝与浅拷贝
    08 in
    07 len()
    06 “杠零”与空字符
    导航点击字体变色
    清除浮动
  • 原文地址:https://www.cnblogs.com/tingshu/p/14851443.html
Copyright © 2011-2022 走看看