• 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;

  • 相关阅读:
    采用get方式提交数据到服务器实例
    android之HttpURLConnection
    Android中的传感器
    有符号类型无符号类型转换
    一些常用位运算示例
    C++ / CLI 调用 C++ /Native 随记
    Linux Shell Demo
    Linux Shell 脚本入门
    Linux 编译 websocket++
    Linux 编写c++程序之openssl
  • 原文地址:https://www.cnblogs.com/Jfh389987366/p/6934817.html
Copyright © 2020-2023  润新知