码迷,mamicode.com
首页 > 数据库 > 详细

MySQL事务

时间:2019-02-15 10:37:50      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:技术   1.5   nod   files   group   引擎   自动   term   global   

MySQL事务:

事务:一组原子性的SQL查询,或者说一个独立工作单元。

    事务日志:

ACID测试:
    A:atomicity,原子性;整个事务中的所有操作要么全部成功执行,要么全部失败后回滚;
    C:consistency, 一致性;数据库总是从一个一致性状态转换为另一个一致性状态;
    I:Isolation,隔离性;一个事务所做出的操作在提交之前,是不能为其它所见;隔离有多种隔离级别;
    D:durability: 持久性;一旦事务提交,其所做的修改会永久保存于数据库中;

事务:
    启动事务: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 (可串行化)

        隔离级别过低,可能存在问题:
            脏读;
            不可重复读;
            幻读;
            加锁读;

            mysql> SHOW GLOBAL VARIABLES LIKE ‘%isola%‘;  #查看隔离级别
            +---------------+-----------------+
            | Variable_name | Value           |
            +---------------+-----------------+
            | tx_isolation  | REPEATABLE-READ |
            +---------------+-----------------+
            1 row in set (0.00 sec)
            MariaDB [(none)]> SHOW VARIABLES LIKE ‘tx%‘;

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

        mysql> SET tx_isolation=‘‘;  #修改隔离级别命令 
        mysql> SET tx_isolation=‘READ-UNCOMMITTED‘;
            READ-UNCOMMITTED
            READ-COMMITTED
            REPEATABLE-READ
            SERIALIZABLE

        MVCC: 多版本并发控制
            自动创建一个当前事务集的快照

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

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

技术图片

        mysql> SHOW GLOBAL VARIABLES LIKE ‘innodb%‘;  (不支持运行修改,需要配置文件中修改,并重启mysql服务)
            innodb_log_buffer_size          #日志缓冲大小
            innodb_log_file_size            #日志文件大小   (事务日志不要过大)
            innodb_log_files_in_group       #同一日志组中的文件数量
            innodb_log_group_home_dir       #日志文件存放路径
        不建议使用混合引擎。

MySQL事务

标签:技术   1.5   nod   files   group   引擎   自动   term   global   

原文地址:http://blog.51cto.com/zhanx/2350378

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!