我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL事务处理

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL事务处理

MySQL事务处理

概述

  • 在MySQL中只有使用了InnoDB数据库存储引擎的数据库或表才支持事务
  • 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部成功,要么全部失败。
  • 事务用来管理DDL、DML、DCL操作,比如:insert、update、delete语句,默认是自动提交的

一般来讲,事务是必须满足4个条件(ACID)

  1. Atomicity(原子性)
  2. Consistency(一致性)
  3. Isolation(隔离性) -->由MVCC的锁机制来实现的
    1. MVCC:优化读写性能(读不加锁,读写不冲突。不能优化读读和写写这种情况)
  4. Durabolity(持久性)

对于ACID的解释如下:

  1. 原子性:构成事务的所有操作必须是一个逻辑单元,要么全部成功,要么全部失败。
  2. 一致性:数据库再事务执行前后状态都必须是确定的或者是一致的。
  3. 隔离性:事务之间不会相互影响。

事务支持

  在MySQL命令行的默认设置下,事务都是自动提交的,既执行SQL语句后就会马上执行COMMIT操作,因此要显式地开启一个事务必须使用命令BEGIN或START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

常见的操作

  • BEGIN或START TRANSACTION:显式地开启一个事务;
  • COMMIT也可以使用COMMIT WORK,不过二者是等价的,COMMIT会提交事务,并使已对数据库进行的所有修改成为永久性的
  • ROLLBACK也可以使用ROLLBACK WORK,不过二者是等价的,回滚回话结束用户的事务,并撤销正在进行的所有未提交的修改。

事务并发问题

在事务的并发操作中可能会出现一些问题:

  • 丢失更新:一个事务更新之后,另一个事务也更新了,但是第二个事务回滚了,则第一个事务也被回滚了
  • 脏读:一个事务读取到另一个事务未提交的数据
  • 不可重复读:一个事务因读取到另一个事务已提交的数据,导致对同一条记录读取两次以上的结果不一致,update操作。
  • 幻读:一个事务因读取到另一个事务已提交的数据。导致对同一张表读取两次以上的结果不一致,insert、delete操作

事务隔离级别

  为了避免上面出现的几种情况,在MySQL规范中,定义了4个事务隔离级别,不同隔离级别对事物的处理不同

由低到高:

  1. Read uncommitted(读未提交):最低级别,任何情况都无法保证。
  2. Read committed(读已提交):可避免脏读的发生。
  3. Repeatable read(可重复读):可避免脏读,不可重复读的发生。
  4. Serializable(串行化):可避免脏读,不可重复读,幻读的发生。

默认隔离级别

  大多数据库的默认隔离级别是Read committed

查看隔离级别

select @@tx_isolation

 

修改事务隔离级别

set [ global | session ] transaction isolation level Read uncommitted | Read committed | Repeatable | Serializable;

注意事项

  隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。

  对于多数应用程序,可以优先考虑把数据库系统的隔离级别设置为Read Committed。他能够避免脏读,而且具有较好的并发性能,尽管他会导致不可重复度、幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL事务处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL事务处理

概述在MySQL中只有使用了InnoDB数据库存储引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部成功,要么全部失败。事务用来管理DDL、DML、DCL操作,比如:insert、update、delete语句,默认是
MySQL事务处理
2014-12-03

Spring事务专题(三)事务的基本概念,Mysql事务处理原理

前言本专题大纲:专栏大纲我重新整理了大纲,思考了很久,决定单独将MySQL的事务实现原理跟Spring中的事务示例分为两篇文章,因为二者毕竟没有什么实际关系,实际上如果你对MySQL的事务原理不感兴趣也可以直接跳过本文,等待接下来两篇应用及源码分析,不过我觉得
Spring事务专题(三)事务的基本概念,Mysql事务处理原理
2017-03-18

mysql事务处理指的是什么

这篇文章主要介绍了mysql事务处理指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql事务处理指的是什么文章都会有所收获,下面我们一起来看看吧。在mysql中,事务处理是一种机制,用来管理必须成
2022-11-30

如何实现MySQL中的事务处理?

如何实现MySQL中的事务处理?事务是数据库中重要的概念之一,能够保证数据的一致性和完整性,确保在并发操作中数据的正确性。MySQL作为一种常用的关系型数据库,也提供了事务处理的机制。一、事务的特点事务具有以下四个特点,通常用ACID来概括
2023-10-22

Mysql事务原理

一、什么是事务事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);事务的四大特性:原子性(Atomicity):事务是数据库的逻
Mysql事务原理
2020-08-23

MySQL 事务管理

事务的4个特性(ACID)原子性 Atomicity。每个事务中的操作,要么都成功,要么都失败一致性 Consistency。事务执行前后,数据库中的数据应该保持一致隔离性 Isolation。事务之间应该是隔离的,事务之间互不影响、干扰持久性 Durabil
MySQL 事务管理
2015-09-09

Galera集群对MySQL事务处理的影响

Galera集群通过其独特的同步复制机制,对MySQL事务处理产生了显著影响,主要表现在以下几个方面:多主架构:支持真正的多主模式,任何节点都可以进行读写操作,提高了系统的可用性和灵活性。同步复制:确保所有节点的数据保持一致,避免了传统主
Galera集群对MySQL事务处理的影响
2024-09-03

MySQL与HBase在事务处理上的选择

MySQL和HBase在事务处理上各有特点,选择哪个数据库取决于具体的应用场景和需求。以下是MySQL和HBase在事务处理上的选择建议:MySQL事务处理的特点支持ACID事务:MySQL支持传统的ACID(原子性、一致性、隔离性、持久
MySQL与HBase在事务处理上的选择
2024-10-19

ORM框架中的MySQL事务处理机制

ORM(Object-Relational Mapping,对象关系映射)框架是一种在面向对象编程语言中实现数据库操作的方法。它允许开发者以面向对象的方式操作数据库,而不是直接编写SQL语句。在ORM框架中,MySQL事务处理机制是一个重要
ORM框架中的MySQL事务处理机制
2024-10-05

如何实现MySQL中事务处理的语句?

如何实现MySQL中事务处理的语句?在数据库操作中,事务处理是非常重要的一部分,它可以确保一系列的操作要么全部执行,要么全部不执行。MySQL中的事务处理可以通过以下示例代码来实现。首先,让我们创建一个示例表格来演示事务处理的语句:CREA
如何实现MySQL中事务处理的语句?
2023-11-09

编程热搜

目录