zoukankan      html  css  js  c++  java
  • MySQL中的事务

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

    二、启动事务:
    START TRANSACTION

    三、结束事务:

    (1)COMMIT:提交
    (2)ROLLBACK:回滚
    注意:只有事务型存储引擎才能支持此类操作;
    建议:显式请求和提交事务,而不要使用"自动提交"功能;

    四、事务支持savepoint
    Syntax:
    SAVEPOINT identifier
    ROLLBACK [WORK] TO [SAVEPOINT] identifier
    RELEASE SAVEPOINT identifier

    五、事务的隔离级别
    READ UNCOMMITTED(读未提交)
    READ COMMITTED(读提交)
    REPEATABLE READ(可重读)
    SERIALIZABLE(可串行化)
    可能存在问题:
    脏读;
    不可重复读;
    幻读;
    加锁读;
    tx_isolation:服务器变量,默认为REPEATABLE-READ,可在SESSION级进行修改;
    SET tx_ioslation=''
    READ-UNCOMMITTED
    READ-COMMITTED
    REPEATABLE-READ
    SERIALIZABLE
    MVCC:多版本并发控制

    六、死锁:

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

    七、事务日志:

    事务日志的写入类型为"追加",因此其操作为"顺序IO";此日志通常也被称为"预写式日志(write ahead logging)";
    以下参数不支持运行时修改,需要写入配置配件重启MySQL服务才可生效:
    innodb_data_home_dir = /data/mysql3401/data # 事务日志存储位置
    innodb_log_file_size = 512M # 事务日志大小
    innodb_log_files_in_group = 3 # 事务日志个数
  • 相关阅读:
    C++函数模板的显示调用与隐式调用
    git显示颜色配置
    STL容器元素应满足的条件
    vector缩减容量
    PAT (Basic Level) Practise:1036. 跟奥巴马一起编程
    Core Java Volume I — 4.10. Class Design Hints
    Core Java Volume I — 4.7. Packages
    蓝牙(Profile)构成
    Android开发之Java必备基础
    主机控制器接口(HCI)
  • 原文地址:https://www.cnblogs.com/fansik/p/7813034.html
Copyright © 2011-2022 走看看