zoukankan      html  css  js  c++  java
  • mysql 事务管理

    事务管理:逻辑上的一组操作,要么同时完成,要么同时失败。

    mysql>start transaction;//声明一个事务的开始
    //从a的账户向b的账户转入100元
    mysql>update account set money=money+100 where name='a';//步骤1,向a的账户存入100,
    mysql>update account set money=money-100 where name='b';//步骤2,从b的账户减去100,
    mysql>rollback;//回滚事务,前面已经执行完成的步骤将会全部失效,用于取消事务
    (必须在commit语句执行之前才会有效,在事务执行过程中意外中断会默认执行事务回滚语句) mysql>commit;//提交事务,如果以上两个步骤都成功,则将最终结果提交到数据库并产生效果,
            //否则只要以上两个步骤任意一个失败则提交失败,最终不会对数据库产生影响,

     事务的四大特性:(数据库自带的功能,除隔离性之外,都不需要我们自己维护)

    1,原子性(Atomicity):事务是一组不可分割的单位,要么一起成功,要么一起失败;

    2,一致性(Consistency):事务前后的数据完整性应该保持一致,(满足所有约束);

    3,持久性(Durabilty):事务一旦被提交,就能对数据库数据永久改变,不会应为中途中断而被影响;

    4,隔离性(Isolation):多个用户同时操作事务,事务之间互不干扰;

    四大隔离级别:(

    1,脏读是指,在数据库不做任何隔离的情况下,事务1对数据进行修改后又进行了回滚(相当于事务1最终未对数据进行任何修改),

    而事务2在事务1修改前、修改后和回滚后分别对数据进行了3次读取,其中只有第二次读取到了数据的变化。

    2,不可重复读是指,在数据库只做了隔离1或者隔离2的情况下,事务1对数据进行了修改并最终做了提交,而事务2在事务1修改前后分别对数据进行了读取,

    而第一次读取到的数据在后面是不会再次重复读取到的。)

    1,read uncommitted; 不做任何隔离(安全性最低,性能最高)

    2,read committed;   只能防止脏读

    3,repeatable read;   可以防止脏读,不可重复读,但是不能防止虚读(幻读)/系统默认的级别/

    4,serializable;    数据库运行串行化,所有问题都不会产生,但是性能低

    安全性越高,则性能越低,系统默认的隔离级别最好;

    ---修改数据库的隔离级别---

    set tx_isolation='read-uncommitted';//当开启该隔离级别时,事务管理将失效(出现脏读现象)

    set tx_isolation='read-committed';

    set tx_isolation='repeatable-read';

    set tx_isolation='serializable';

    ---查询数据库当前的隔离级别---

    select @@tx_isolation;

  • 相关阅读:
    PHPCMS的自增长标签
    discuz!X2头像无法显示解决方法
    屏蔽“您目前使用的Discuz!程序有新版本发布,请及时升级!”提示
    python +Django 搭建web开发环境初步,显示当前时间
    Java之美[从菜鸟到高手演变]之设计模式四
    Java之美[从菜鸟到高手演变]之设计模式三
    Java之美[从菜鸟到高手演变]之设计模式二
    Java开发中的23种设计模式详解
    Cglib动态代理
    JSP 对象的作用范围
  • 原文地址:https://www.cnblogs.com/Jfh389987366/p/6934817.html
Copyright © 2011-2022 走看看