博客
关于我
Mysql事务的个人理解
阅读量:610 次
发布时间:2019-03-13

本文共 1316 字,大约阅读时间需要 4 分钟。

Mysql事务的个人理解

在研究CRMEB多商户系统时,深入了解了MySQL事务的相关知识,对事务的理解记录如下:


一、什么是事务?

在MySQL中,事务是数据库操作的基本单元。传统的MySQL引擎(如MyISAM)不支持事务,而从MySQL5.5版本起,InnoDB引擎开始支持事务处理。事务的核心特点是原子性、一致性、隔离性和持久性(ACID),确保数据库操作的完整性和一致性。


二、事务的特性(ACID)

  • 原子性(Atomicity)

    事务的基本单位,所有操作要么全部完成,要么全部回滚,确保数据操作的完整性。

  • 一致性(Consistency)

    在事务完成后,数据库状态应保持一致。即使在部分操作失败的情况下,数据库也不会进入不一致状态。

  • 隔离性(Isolation)

    每个事务的操作对其他事务是不可见的,避免了并发操作带来的数据干扰。

  • 持久性(Durability)

    事务提交后,修改被持久化到数据库中,即使系统故障,数据也不会丢失。持久性依赖于日志和重做日志的机制。


  • 三、事务的使用操作

    MySQL事务操作主要包括以下命令:

    • 开启事务

      START TRANSACTIONBEGIN
      启动一个新的事务。

    • 创建保存点

      在事务中创建保存点,以便在回滚时恢复到特定状态。
      SAVEPOINT savepoint_name

    • 提交事务

      将所有事务操作永久保存到数据库中。
      COMMIT

    • 回滚事务

      取消所有事务操作,恢复到保存点之前的状态。
      ROLLBACKROLLBACK TO savepoint_name

    • 释放保存点

      删除已创建的保存点。
      RELEASE savepoint_name

    • 设置事务隔离级别

      调整事务的隔离级别,影响并发处理的安全性。
      SET TRANSACTION ISOLATION LEVEL {_READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE}


    隐式事务与显式事务

    • 隐式事务

      隐式事务是默认的操作模式,任何一次数据库修改都会自动开启并完成一个隐式事务,无需显式提交。

    • 显式事务

      需要使用 START TRANSACTION 开启,并在完成操作后手动执行 COMMIT,确保数据的持久性。


    示例操作

  • 开启事务并插入数据

    BEGIN;INSERT INTO user (name) VALUES ('张三');

    此时,插入操作已完成,但事务未提交,数据未保存。

  • 查询数据

    SELECT * FROM user;

    查询结果为空,因为事务未提交,其他连接无法看到新数据。

  • 提交事务

    COMMIT;

    数据永久保存到数据库中。

  • 回滚事务

    如果在事务过程中遇到错误,可以选择回滚。

    ROLLBACK;

    数据恢复到事务开始前的状态。


  • 注意事项

    • 事务隔离级别

      不同的隔离级别对应不同的并发控制策略。例如,SERIALIZABLE级别确保事务的安全性,但可能影响性能。

    • 事务管理

      在开发中,应合理使用事务,避免长时间未提交的事务,防止数据丢失。


    通过以上理解和操作,可以更好地掌握MySQL事务的使用方法,确保数据库的高效、安全和一致性。

    转载地址:http://xxtaz.baihongyu.com/

    你可能感兴趣的文章
    cf-A. Wet Shark and Odd and Even(水)
    查看>>
    Train Problem II(卡特兰数+大数乘除)
    查看>>
    Ignatius and the Princess II(全排列)
    查看>>
    一些技术博客
    查看>>
    第01问:MySQL 一次 insert 刷几次盘?
    查看>>
    分布式 | DBLE 3.20.07.0 来啦!
    查看>>
    振荡器指标
    查看>>
    libvirtd:内部错误:Failed to apply firewall rule
    查看>>
    优先级队列2
    查看>>
    简单易懂的背包问题
    查看>>
    属性的使用错误
    查看>>
    C#选定文件复制到指定文件夹
    查看>>
    ACM DP Partitioning by Palindromes
    查看>>
    TiKV 源码解析系列文章(十三)MVCC 数据读取
    查看>>
    TiDB 源码阅读系列文章(十六)INSERT 语句详解
    查看>>
    TBSSQL 的那些事 | TiDB Hackathon 2018 优秀项目分享
    查看>>
    【面试题】Java中创建对象的方式有几种?
    查看>>
    1900分图论 : 1183E1 LCA + Kruskal
    查看>>
    (建议收藏)计算机网络:传输层概述、UDP协议与可靠传输协议习题解析与拓展
    查看>>
    Android 开发常用的工具类(更新ing)
    查看>>