返回顶部
首页 > 资讯 > 数据库 >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://lsjlt.com/news/60647.html(转载时请注明来源链接)

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

猜你喜欢
  • MYSQL事务以及隔离级的概念
    这篇文章主要介绍“MYSQL事务以及隔离级的概念”,在日常操作中,相信很多人在MYSQL事务以及隔离级的概念问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL事务以及隔...
    99+
    2024-04-02
  • MySQL事务的概念以及事务隔离级别介绍
    本篇内容主要讲解“MySQL事务的概念以及事务隔离级别介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL事务的概念以及事务隔离级别介绍”吧!先简单介绍...
    99+
    2024-04-02
  • java事务、事务的隔离级别的概念是什么
    本篇内容介绍了“java事务、事务的隔离级别的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是事务?  事务,即数据库事务。是...
    99+
    2023-06-02
  • 【MySQL】事务及其隔离性/隔离级别
    需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云-->阿里云-->华为云 show variables like 'autocommit';+---------------+-------+| Variable_name...
    99+
    2023-09-01
    mysql 数据库
  • 数据库事务隔离级别与概念是什么
    这篇文章将为大家详细讲解有关数据库事务隔离级别与概念是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。事务隔离的概念任何支持事务的数据库,都必须具备四个特...
    99+
    2024-04-02
  • MySQL 事务的隔离级别
    1. 事务的ACID 事务的ACID是指事务拥有的4个特性的首字母组合:atomicity(原子性), consistency(一致性), isolation(隔离性)和durability(持久性)。 ①atomicity(原子...
    99+
    2019-01-27
    MySQL 事务的隔离级别
  • MySQL的事务隔离级别
    目录数据库事务的四大特性⑴ 原子性(Atomicity)⑵ 一致性(Consistency)⑶ 隔离性(Isolation)⑷ 持久性(Durability)SQL的4种隔离级别Read Uncommitted(读取未提交内容)R...
    99+
    2021-07-07
    MySQL的事务隔离级别
  • mysql事务隔离的级别
    这篇文章主要介绍“mysql事务隔离的级别”,在日常操作中,相信很多人在mysql事务隔离的级别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql事务隔离的级别”的疑惑...
    99+
    2024-04-02
  • MySQL事务隔离级别
      四类隔离级别    SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。  Read Unc...
    99+
    2024-04-02
  • 【MySQL系列】MySQL的事务管理的学习(一)_ 事务概念 | 事务操作方式 | 事务隔离级别
    「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、事务概念二、事务的版本支持三、事务提交方式四、事务常...
    99+
    2023-09-09
    mysql 学习 adb
  • mysql数据库事务及隔离级别
    事务的四大特性: 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的; 隔离性: 并发访问数据库时,一个用户的事务...
    99+
    2021-09-18
    mysql数据库事务及隔离级别
  • MySQL事务、隔离级别及MVCC是什么
    这篇文章主要介绍了MySQL事务、隔离级别及MVCC是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql教程栏目介绍MySQL相关的事...
    99+
    2022-11-30
    mysql vcc
  • 事务隔离性和隔离级别
    隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离 事务的隔离级别有哪些? 一、概念 Read uncommitted(读未提交) Read ...
    99+
    2021-04-27
    事务隔离性和隔离级别
  • MySQL的四种事务隔离级别
      环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一、事务的基本要素(ACID) 1.原子性(Atomicity): 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中...
    99+
    2016-09-03
    MySQL的四种事务隔离级别
  • MySQL事务的隔离级别详情
    目录一、隔离级别的概念二、测试TRANSACTION_READ_UNCOMMITTED隔离级别三、测试TRANSACTION_READ_COMMITTED隔离级别四、测试TRANSACTION_REPEATABLE_RE...
    99+
    2022-07-14
    MySQL事务的隔离级别 MySQL事务隔离
  • 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
  • 数据库事务的四大特性以及事务的隔离级别
    四大特性 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果...
    99+
    2022-01-10
    数据库事务的四大特性以及事务的隔离级别
  • MySQL锁与事务隔离级别
    1、概述 (1)锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、IO等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据...
    99+
    2021-12-05
    MySQL锁与事务隔离级别
  • MySQL基础——事务隔离级别
    事务是DBMS得执行单位。它由有限得数据库操作序列组成得。但不是任意得数据库操作序列都能成为事务。一般来说,事务是必须满足4个条件(ACID) ①:原子性(Autmic):事务在执行性,要做到“要...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作