zoukankan      html  css  js  c++  java
  • Mysql—事务原理与详解

    事务的四大特性

    如果一个数据库支持事务的操作,那么该数据库必须要具备以下四个特性:

    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性(Isolation)
    • 持久性(Durability)

    其中事务的隔离性是通过MySQL锁机制实现的。原子性,一致性,持久性则是通过MySQL的redo和undo日志记录来完成。

    事务启动的两种方式

    mysql> create table temp(id int primary key,name varchar(20));
    mysql> insert into temp values(1,'a'),(2,'b'),(3,'c');

    1、显示启动事务语句,begin或者start transcation。配套的提交语句是commit,回滚语句为rollback。

    mysql> begin                                    -- 开启一个事务,start transcation使用情况一样
    mysql> update temp set name='cc' where id=3;    -- 修改数据
    mysql> rollback;                                -- 回滚事务,这里也可以使用commit提交事务。如果不提交也不回滚,直接退出mysql,则自动回滚。
    mysql> select * from temp;                      -- 数据恢复到修改之前的状态了

    2、set autocommit=0,这个命令会将这个线程的更新自动提交掉。这意味着如果你只执行一个select语句,这个事务就启动了,并且不会自动提交。这个事务持续存在知道你主动执行commit或rollback语句,或者链接断开。mysql中查看当前自动提交状态的命令为:show VARIABLES like 'autocommit'; 如下value为on代表是自动提交已经打开。

    mysql> show variables like 'autocommit';       -- 查看事务自动提交是否开启
    mysql> set autocommit=0;                       -- 关闭事务自动提交,值为 1 则是开启事务自动提交
    mysql> update temp set name='cc' where id=3;   -- 修改数据
    mysql> select * from temp;                     -- 数据修改成功
    mysql> rollback;                               -- 回滚事务
    mysql> select * from temp;                     -- 数据恢复到修改之前的状态了
    

      

    事务的隔离级别

    https://www.cnblogs.com/57rongjielong/p/8036418.html

    https://blog.csdn.net/zwq1232113457/article/details/53442920

  • 相关阅读:
    动手动脑之异常处理
    git一些概念
    jquery each函数使用
    数据库客户端
    plotly.js
    网站跳转汇总
    jquery 实现间隔运行
    学习 在线调试
    Robot限制字典的key大写的class
    Gerrit 相关
  • 原文地址:https://www.cnblogs.com/liuhaidon/p/11586389.html
Copyright © 2011-2022 走看看