博客
关于我
Mysql事务的个人理解
阅读量:608 次
发布时间: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/

    你可能感兴趣的文章
    android全方位性能优化方法
    查看>>
    Idea代码统计工具
    查看>>
    官网Tensorflow 移动开发流程
    查看>>
    python 安装scikit-learn遇到的问题解决方案
    查看>>
    HTTP 错误 500.21 - Internal Server Error 发布网站遇到这个错误
    查看>>
    微信小程序:出现脚本错误或者未正确调用 Page()错误解决
    查看>>
    海外引流怎么做?巨象指纹浏览器助你,人人都是产品经理
    查看>>
    Android获得缩略图的代码注释
    查看>>
    2017-05-11 DBA日记,导致log file sync单次等待超500ms又一可能
    查看>>
    MySQL查询---排序后取第一条数据
    查看>>
    初次安装webpack之后,提示安装webpack-cli
    查看>>
    Java后端服务明显变慢诊断思路
    查看>>
    idea选中文件时左侧菜单自动定位到文件所在位置
    查看>>
    java中带参数的try(){}语法——关闭资源
    查看>>
    JSuite 最新版下载试用2021版本
    查看>>
    使用FileZilla,FTP登录出现错误:FileZilla状态: 不安全的服务器,不支持 FTP over TLS
    查看>>
    Python模块学习--uuid
    查看>>
    kafka+storm+hbase整合试验(Wordcount)
    查看>>
    VMware克隆虚拟机后重启network失败
    查看>>
    Hbase压力测试
    查看>>