iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MYSQL事务以及隔离级的概念
  • 372
分享到

MYSQL事务以及隔离级的概念

2024-04-02 19:04:59 372人浏览 泡泡鱼
摘要

这篇文章主要介绍“Mysql事务以及隔离级的概念”,在日常操作中,相信很多人在mysql事务以及隔离级的概念问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYsql事务以及隔

这篇文章主要介绍“Mysql事务以及隔离级的概念”,在日常操作中,相信很多人在mysql事务以及隔离级的概念问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYsql事务以及隔离级的概念”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

事务的概念
  事务是一组原子性的SQL查询语句,也可以被看做一个工作单元。如果数据库引擎能够成功地对数据库应用所有的查询语 句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都不会执行。也就是说,事务内的语句要么全部执行,要么一 句也不执行。
  例:将b表中符合条件的记录搬移到a表中(相似语句已在命令提示行中测试)

双击代码全选
1 2 3 4 5start transaction;//用start transaction语句开始一个事务 insert into a select from b where ...;//将b表中符合条件的行记录插入a表 delete from b where ...;//将b表中符合条件的行记录删除 commit; /rollback; //commit语句提交整个事务,永久地修改数据,rollback语句回滚整个事务,取消已做的修改 //如果插入操作失败,那么删除操作将不执行

  ACID测试

  ACID:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。一个有效的事务处理系统必须满足相关标准。
  a.原子性:一个事务必须被视为一个单独的内部“不可分”的工作单元,以确保整个事务要么全部执行,要么全部回滚。当一个事务具有原子性时,该事务绝对不会被部分执行,要么完全执行,要么根本不执行。
  b.一致性:数据库总是从一种一致性状态转换到另一种一致性状态。在上述例子中,一致性确保了,即使插入或者删除操作失败了,数据库也不会多出或者丢失记录。因为最终事务根本没有被提交,任何事务处理过程中所做的数据改变,也不会影响到数据库的内容。
  c.隔离性:某个事务的结果只有在完成之后才对其他事务可见。在上述例子中,当数据库执行完insert语句,还未执行delete语句时,如果此时另一个客户端对数据库的访问也同时运行,它将仍视符合条件的记录在b表中。
  d.持久性:一旦一个事务提交,事务所做的数据改变将是永久的。
   这种事务处理中的额外安全措施,导致数据库服务器要完成更多的额外工作。通常,一个支持ACID特性的数据库,相对于不支持这种特性的数据库,需要更强 的CPU处理能力,更大的内存和更多的磁盘空间。这正是选用MYSQL存储引擎架构的有利之处。用户可以根据应用是否需要事务处理,选择相应的存储引擎。 如果对于某些类型的数据查询,用户不需要真正的事务处理,他可以选择一个非事务处理型的存储引擎来实现查询,以获得更高的处理性能。(我们的数据库选择的 存储引擎是innoDB,支持事务处理,而mysql默认的存储引擎是MyISAM引擎,不支持事务)
  隔离级
  SQL标准定义了4类隔离级,包括了一些具体规则,用来限定事务内外的哪些改变时可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。
  READ UNCOMMITTED(读取未提交内容)
   在READ UNCOMMITTED隔离级,所有事务都可以“看到”未提交事务的执行结果。在这种级别上,可能会产生很多问题。本隔离级很少用于实际应用,因为它的性 能也不比其他级别好多少,而别的级别还有其他更多的优点。读取未提交数据,也被称之为“脏读(Dirty Read)”
  READ COMMITTED(读取提交内容)
   大多数数据库系统的默认隔离级是READ COMMITTED(但这不是MYSQL默认的)。它满足了隔离的早先简单定义:一个事务在开始时,只能“看见”已经提交事务所做的改变,一个事务从开始 到提交前,所做的任何数据改变都是不可见的,除非已经提交。这种隔离级别也支持所谓的“不可重复读(Nonrepeatable Read)”。这意味着用户运行同一语句两次,看到的结果是不同的。
  REPEATABLE READ(可重读)
   REPEATABLE READ 隔离级解决了READ UNCOMMITTED隔离级导致的问题。它确保同一事务的多个实例在并发读取数据时,会“看到相同的”数据行。不过理论上,这会导致另一个棘手问题:幻 读(Phantom Read)。简单来说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,另一个事务又在该范围内 插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影”行。InnoDB和Falcon存储引擎通过多版本并发控制机制解决了幻读问题。 REPEATABLE READ 是MYSQL的默认事务隔离级。InnoDB和Falcon存储引擎都遵循这种设置。
  SERIALIZABLE(可串行化)
  SERIALIZABLE是最高级别的隔离级,它通过强制事务排斥,使之不可能相互冲突,从而解决幻读问题。简言之,SERIALIZABLE是在每个读的数据行上加。在这个级别,可能导致大量的超时现象和锁竞争现象。很少看到有用户选择这种隔离级。
  注:不可重复读与幻读:不可重复读的重点是修改(同样的查询条件,你读取过的数据,再次读取出来发现值不一样了);幻读的重点在于新增或者删除(同样的查询条件,第1次和第2次读出来的记录数不一样)
  查看InnoDB系统级别的事务隔离级别:

双击代码全选
1mysql> SELECT @@global.tx_isolation;

  查看InnoDB会话级别的事务隔离级别:

双击代码全选
1mysql> SELECT @@tx_isolation;

  MySQL中的事务

  AUTOCOMMIT(自动提交)
  MySQL默认操作模式是AUTOCOMMIT模式。这意味着除非显示地开始一个事务,否则它将把每个查询视为一个单独事务自动执行。在当前连接中,可以通过变量设置,启用和禁用AUTOCOMMIT模式。

双击代码全选
1 2mysql> SHOW VARIABLES LIKE 'AUTOCOMMIT'; //高版本的mysql支持  mysql> select @@autocommit; //mysql5.0支持

  如果设置AUTOCOMMIT=0,用户将一直处于某个事务中,直到用户执行一条COMMIT或ROLLBACK语句,之后,MYSQL将立即开始一个新事务。

  在事务中混合使用存储引擎
  在一个事务中,如果混合使用事务性表和非事务性表,假如事务处理一切顺利,那么结果也会正常。但是,如果事务须回滚,那么在非事务性表上做的修改将无法取消。这将导致数据库处于数据不一致的状态,在这种状态下,很难对数据进行恢复,并且事务会变得悬而未决。
  隐式和显式锁定
   InnoDB使用二相锁定协议(Two-Phase Locking Protocol两段锁协议)。一个事务在执行过程中的任何时候,都可以获得锁,但只有在执行COMMIT或ROLLBACK语句后,才可以释放这些锁。 它会同时释放掉所有锁。以上描述的锁定机制都是隐式锁定。InnoDB会根据用户的隔离级别,自动处理锁定。不过InnoDB也支持显示锁定。

到此,关于“MYSQL事务以及隔离级的概念”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: MYSQL事务以及隔离级的概念

本文链接: https://www.lsjlt.com/news/60647.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • MYSQL事务以及隔离级的概念
    这篇文章主要介绍“MYSQL事务以及隔离级的概念”,在日常操作中,相信很多人在MYSQL事务以及隔离级的概念问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL事务以及隔...
    99+
    2024-04-02
  • MySQL事务的概念以及事务隔离级别介绍
    本篇内容主要讲解“MySQL事务的概念以及事务隔离级别介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL事务的概念以及事务隔离级别介绍”吧!先简单介绍...
    99+
    2024-04-02
  • 【MySQL】事务及其隔离性/隔离级别
    需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云-->阿里云-->华为云 show variables like 'autocommit';+---------------+-------+| Variable_name...
    99+
    2023-09-01
    mysql 数据库
  • java事务、事务的隔离级别的概念是什么
    本篇内容介绍了“java事务、事务的隔离级别的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是事务?  事务,即数据库事务。是...
    99+
    2023-06-02
  • 数据库事务隔离级别与概念是什么
    这篇文章将为大家详细讲解有关数据库事务隔离级别与概念是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。事务隔离的概念任何支持事务的数据库,都必须具备四个特...
    99+
    2024-04-02
  • mysql事务隔离的级别
    这篇文章主要介绍“mysql事务隔离的级别”,在日常操作中,相信很多人在mysql事务隔离的级别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql事务隔离的级别”的疑惑...
    99+
    2024-04-02
  • 【MySQL系列】MySQL的事务管理的学习(一)_ 事务概念 | 事务操作方式 | 事务隔离级别
    「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、事务概念二、事务的版本支持三、事务提交方式四、事务常...
    99+
    2023-09-09
    mysql 学习 adb
  • MySQL事务、隔离级别及MVCC是什么
    这篇文章主要介绍了MySQL事务、隔离级别及MVCC是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql教程栏目介绍MySQL相关的事...
    99+
    2022-11-30
    mysql vcc
  • MySQL的事务隔离级别介绍
    本篇内容介绍了“MySQL的事务隔离级别介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是事务?数据...
    99+
    2024-04-02
  • MYSQL事务的隔离级别与MVCC
    目录前言1. 事务(transaction)的起源1.1. 事务的定义1.2. 哪些存储引擎支持事务2. MySQL的事务语法2.1. 自动提交2.2. 手动操作事务2.2.1. 开...
    99+
    2024-04-02
  • mysql事务隔离级别详情
    serializable 串行化(无问题) 事务必须以顺序的方式执行,前一个事务提交之前后面的事务无法进行提交,最安全,但是不能并发操作,导致效率低下. repeatab re...
    99+
    2024-04-02
  • MySQL事务隔离级别详解
    一、什么是事务? 事务是逻辑上的一组操作,要么全执行,要么全不执行。 事务最经典栗子也经常被拿出来的栗子就是银行转账了。比如小明要给小红转账1000元,这个转账会涉及到两个关键操作:将小明的余额减1000元,将小红的余额减1000元。万一这...
    99+
    2023-08-30
    mysql
  • mysql的事务隔离级别是什么
    这篇“mysql的事务隔离级别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysq...
    99+
    2023-01-31
    mysql
  • MySQL的事务隔离级别有那些
    MySQL的事务隔离级别有那些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。事务隔离级别事务并发执行遇到的问题脏写如果一个事务修改了另一个未提交事务修改过的数据,那就意味着发生...
    99+
    2023-06-14
  • MySQL事务的隔离级别是什么
    这篇文章主要介绍了MySQL事务的隔离级别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL事务的隔离级别是什么文章都会有所收获,下面我们一起来看看吧。一、隔离级别的概念为什么要考虑隔离级别?因为事...
    99+
    2023-07-02
  • MySQL有哪些事务隔离级别
    MySQL有哪些事务隔离级别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据库事务有四种隔离级别:未提交读(Read Unc...
    99+
    2024-04-02
  • MySQL事务隔离级别有哪些
    这篇文章给大家介绍MySQL事务隔离级别有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。说说事务的隔离级别吧老实说,事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前...
    99+
    2024-04-02
  • MySQL事务隔离级别以及脏读、幻读、不可重复读的示例
    小编给大家分享一下MySQL事务隔离级别以及脏读、幻读、不可重复读的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!推荐(免费...
    99+
    2024-04-02
  • MySQL中的事务隔离级别是什么
    MySQL中的事务隔离级别包括四种:READ UNCOMMITTED(读未提交)、READ COMMITTED(读已提交)、REPE...
    99+
    2024-04-09
    MySQL
  • MySQL事务隔离级别的示例分析
    这篇文章将为大家详细讲解有关MySQL事务隔离级别的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作