MySQLDay10

1、在MYSQL数据库管理系统中,事务的提交和回滚
    在MYSQL数据库管理系统中,默认情况下,事务是自动提交的,也就是说,只要执行一条DML语句,开启了事务,并且提交了事务

    这种自动提交机制是可以关闭的[关闭的第一种方式]
        start transaction;手动开启事务
        DML语句...
        DML语句...
        DML语句...
        DML语句...
        commit;手动提交事务【事务成功的结


        start transaction;手动开启事务
        DML语句...
        DML语句...
        DML语句...
        DML语句...
        rollback;手动回滚事务【事务失败的结束】

    show variables like '%commit%'; 查看提交的value
    关闭自动提交的第二种方式
        set autocomit = off;

        或者
        set session autocommit = on;
        以上打开和关闭自动提交机制,只对当前会话有效

2、事务四个特性之一:隔离性(isolation)
    1、事务A和事务B之间具有一定的隔离性
    2、隔离性有隔离级别(4个)
        read uncommitted 读未提交
        read committed   读已提交
        repeatable read  可重复读
        serializable     串行化

    3、read uncommitted 读未提交
        事务A和事务B,事务A未提交的数据,事务B可以读取到
        这里读取到的数据可以叫做“脏数据”或者叫做"Dirty Read"
        这种隔离级别是最低界别的,这种级别一般都是在理论上存在的,数据库默认的隔离级别一般都是高于该级别的
    4、read committed    读已提交
        事务A和事务B,事务A提交的数据,事务B才能读取到
        这种隔离级别高于上面的读未提交
        换句话说:对方事务提交之后的数据,我当前事务才能够读取到
        这种隔离级别可以避免脏数据
        这种隔离级别会导致“不可重复读”
        Oracle数据库管理系统默认的隔离级别就是:读已提交

    5、repeatable read 可重复读
        事务A和事务B,事务A提交之后的数据,事务B读取不到
        事务B是可重复读取数据的
        这种隔离级别高于读已提交
        换句话说:对方提交之后的数据读取不到
        这种隔离级别可以避免“脏读和不可重复读取”,打到可重复读取
        MySQL数据库管理系统默认的隔离级别就是可重复读

    6、Serializable 串行化
        事务A和事务B,事务A在操作数据库表中数据的时候,事务B只能排队等待
        这种事务隔离级别一般很少使用,吞吐量太低,用户体验不好
        这种隔离基本可以避免“幻象读”,每一次读取的都是数据库表中真实的数据
        事务A和事务B不再并发

这里写图片描述

这里写代码片

猜你喜欢

转载自blog.csdn.net/civilizationv/article/details/80895067
10