zoukankan      html  css  js  c++  java
  • MySQL阅读笔记——12.事务

      数据库事务是一组完整的行为,如果成功全部成功,失败则全部失败。缺点是在事务中,不能根据前置条件决定是否向下执行(事务可切分)。

    12.1 事务特性

      在OLTP数据库中强调 强一致性 因此提出了ACID原则

    1. 原子性(Atomicity): 事务中的所有操作为一个完整的整体,不可拆分

    2. 一致性(Consistency):主要体现在缓存数据和持久化磁盘的数据是否一致

    3. 隔离性(Isolation): 一个事务执行过程中,不能对其他事务产生影响,即事务之间保持一定的执行顺序

    4. 持久性(Durability):事务执行后对数据库的操作是永久性的,即使断电能意外也可恢复

    在OLAP或者分布式场景下,强调 最终一致性 ,提出了 一致性(Consistency)可用性(Availability)分区容错性(Partition ) 原则 和 基本可用(Basically Available)软状态(Soft-state)最终一致性(Eventual consistency) 理论

    12.2 事务状态

    1. 活动的(active):事务正在执行中

    2. 部分提交的(partially committed):事务执行完成,但没有刷新的磁盘

    3. 提交的(committed):事务执行完成,并且数据同步到磁盘

    4. 失败的(failed):活动的 或者 部分提交的 事务出现错误,无法继续执行

    5. 中止的(aboted):回滚 执行完毕

    12.3 事务操作

      MySQL中支持事务的引擎置是 InnoDBNDB ,通过show variables like 'autocommit' 查看是否开启事务自动提交(默认开启),开启状态下,每一条语句都算一个独立事务。当我们通过BEGIN或者START TRANSACTION语句显示定义事务时,可以 暂时关闭自动提交

    隐式提交事务情况:

    1. 执行DDL语句

    2. 修改/删除表

    3. 开启另外一个事务会隐式提交上一个事务

    4. 开启自动提交时,会隐式提交前面定义的所有事物

    5. 使用 lock tablesunlock tables锁定语句

    6. 使用load data等语句加载数据

    7. 主从复制的一些语句,如:start slavestop slaverest slavechange master to

    8. analyze tablecache indecheck tableflushload index into cache`optimize tablerepair tablereset

    -- 定义事务
    begin
    [语句...]
    commit / rollback
    -- 创建保存点
    savepoint <保存点名称>
    -- 回滚到指定保存点
    rollback to <保存点名称>
    -- 删除保存点
    release savepoint <保存点名称>

  • 相关阅读:
    poj 2262 筛法求素数(巧妙利用数组下标!)
    BestCoder Round #65 (ZYB's Premutation)
    BestCoder Round #65 (ZYB's Game)
    BestCoder Round #65 (ZYB's Biology)
    筛法求素数
    常见OJ提交结果对照表
    CSS3伸缩盒Flexible Box
    移动开发屏幕适配分析
    用PHP抓取页面并分析
    安装最新版本的PHPUnit后,不能使用
  • 原文地址:https://www.cnblogs.com/leon618/p/13783335.html
Copyright © 2011-2022 走看看