MySQL事务

作者: 4e8ea348373f | 来源:发表于2018-04-27 16:27 被阅读0次

一,概念

1.一组原子性的SQL查询,或者说一个独立工作单元
2.撤销日志和重做日志是事务的保证
3.事务日志文件,主要是用来实现崩溃后恢复的
4.数据库总是从一个一致性状态转换成另一个一致性状态
5.隔离性,一个事务所做的操作,在提交之前是不看见的 隔离级别和并发成反比
6.持久性,一旦事务提交,其所做的修改会永久保存于数据库中

二,事务流程

image.png

修改自动提交的特性 autocommit 在会话级别

三,操作

    启动事务:START TRANSACTION
        ...
        ...
    结束事务:
        (1) COMMIT:提交
        (2) ROLLBACK: 回滚

    注意:只有事务型存储引擎方能支持此类操作;

    建议:显式请求和提交事务,而不要使用“自动提交”功能;
        autocommit={1|0}

    事务支持savepoint
        SAVEPOINT identifier
        ROLLBACK [WORK] TO [SAVEPOINT] identifier
        RELEASE SAVEPOINT identifier

    事务隔离级别:
        READ UNCOMMITTED (读未提交)
        READ COMMITTED (读提交)
        REPEATABLE READ (可重读)
        SERIALIZABILE (可串行化)

        可能存在问题:
            脏读;
            不可重复读;
            幻读;
            加锁读;

        tx_isolation:服务器变量,默认为REPEATABLE-READ;可在SESSION级进行修改;

        SET tx_isolation=''
            READ-UNCOMMITTED
            READ-COMMITTED
            REPEATABLE-READ
            SERIALIZABLE

        MVCC: 多版本并发控制


    死锁:
        两个或多个事务在同一资源相互占用,并请求锁定对方占用的资源的状态;

    事务日志:
        事务日志的写入类型为“追加”,因此其操作为“顺序IO”;此日志通常也被称为“预写式日志(write ahead logging)”;

            innodb_log_file_size
            innodb_log_files_in_group
            innodb_log_group_home_dir

相关文章

网友评论

    本文标题:MySQL事务

    本文链接:https://www.haomeiwen.com/subject/ahnblftx.html