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

MySQL中事务是什么意思

短信预约 -IT技能 免费直播动态提醒
省份

北京

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

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

看不清楚,换张图片

免费获取短信验证码

MySQL中事务是什么意思

小编给大家分享一下MySQL中事务是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、事务的概念

   事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。

二、MySQL 中的存储引擎以及支持事务,和不支持事务的存储引擎 

  1、存储引擎的概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中。

这些技术中的每一种技术都使用不同的存储机制,索引 技巧,并且最终提供广泛的不同的功能和能力。可以通过选择不同的技术,可以获得额外的速度或功能,从而改善应用的整体功能。

  2、这些不同的技术以及配套的相关功能在mysql中被称为存储引擎(也称为表类型)。

  3、通过show engines;来查看mysql支持的存储引擎。

 4、 在mysql中用的最多的存储引擎有:innodb,bdb,myisam ,memory 等。其中innodb和bdb支持事务而myisam等不支持事务。

三、事务的四个属性:

 1、原子性:事务是由一个或一组相互关联的SQL语句组成,这些语句被认为是一个不可分割的单元。

 2、一致性:对于数据库的修改是一致的,即多个用户查的的数据是一样的。一致性主要由mysql的日志机制处理,他记录数据的变化,为事务恢复提供跟踪记录。

 3、隔离性(孤立性):每个事务都有自己的空间,和其他发生在系统中的事务隔离开来,而且事务的结果只在他完全被执行时才能看到

 4、持久性:但提交了这个事务之后对数据的修改更新就是永久的。当一个事务完成,数据库的日志已经被更新时,持久性即可发挥其特有的 功效,在mysql中,如果系统崩溃或者数据存储介质被破坏,通过日志,系统能够恢复在重启前进行的最后一次成功更新,可以反应系统崩溃时处于执行过程的事物的变化。

四、事务的创建及生存周期

对于支持事务的存储引擎,一个事务的周期:

1、在创建事务的过程中,用户需要创建一个innodb或bdb类型的数据表,其基本命令结构如下:

 create  table table_name  (file  defintions)  type=innodb/bdb;

2、对表类型进行修改

 alert  table table-name  type =innodb/bdb;

3、事务的整个过程

 use  databases;   //使用某个数据库

 start transaction ;   //开始事务 、这里也可以使用 begin   、 beginwork

 insert  into stu1 values('',  );   //进行相关的操作

 commit    //提交事物

 rollback   //撤销事务(事务回滚)

五:mysql行为

 1、我们在使用mysql是如果关闭之后,打开在查询的话就会发现,哪些数据已经保存了,但是我们知道,在这过程中没有进行显示或隐式提交,问什么会这样那?因为我们在mysql中设置了自动提交,但我们也可以改为手动提交。

 2、 set   autocommit =0;  //关闭自动提交

3、 set   autocommit =1;  //开启自动提交

六、事务的孤立性(隔离性)

1、在多用户的时候使用孤立性级别是很重要的,这样可以保证这些事务互不影响,保证数据库性能不受到影响。

2、mysql中提供的孤立级别有以下四种:

 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。
Read Uncommitted(读取未提交内容)

       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
Read Committed(读取提交内容)

       这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。
Repeatable Read(可重读)

       这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。

Serializable(可串行化) 
       这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

         这四种隔离级别采取不同的锁类型来实现,若读取的是同一个数据的话,就容易发生问题。例如:

         脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。

         不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。

         幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。

         在MySQL中,实现了这四种隔离级别,分别有可能产生问题如下所示:

MySQL中事务是什么意思

3、事务孤立级的查看和修改: 

查看:select @@tx_isolation;

修改:set  global  transaction  isolation level  设置的孤立级别;

七、伪事务(锁定)

1、在MySQL中根据不同的需求,提供了很多存储引擎,但是有的存储引擎不支持事务,对于这种情况,可以使用表锁定来代替事务。

2、对于不支持事务的存储引擎MYISAM类型数据表,当用户插入,修改,删除时,这些操作都会立即保存到磁盘中,当多用户同时操作某个表时,可以使用表锁定来避免同一时间有多个用户对数据库中指定表进行操作,这样可以避免在用户操作数据表过程中受到干扰。只有但用户释放表的操作锁定后,其他 用户才可以访问这些修改的数据表。

这里的锁和Java多线程中锁的作用一样,个人觉的可以这样理解。

3、对指定表进行锁操作的过程:

 (1)lock  table table-name lock type ;   //locktype 有read 和write 两种

对多个表进行加锁:

 lock table  table-name1 lock type, table -name2  lock type ,table -name3 lock type;

(2)在指定的表中进行相应的操作

(3)当用户完成对锁定数据表的操作后,进行解锁。

unlock tables ;  //释放了所有加锁表的锁。

以上是“MySQL中事务是什么意思”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

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

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

MySQL中事务是什么意思

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

下载Word文档

猜你喜欢

php中事务是什么意思

在PHP中,事务是一组原子性的SQL查询,或者说一个独立的工作单元;事务是PHP操作数据库的逻辑工作单位,对数据库的修改要么全部执行,要么全部不执行;事务具有原子性、一致性、隔离性和持久性四大特性。
2020-06-12

mysql中*是什么意思

在 mysql 中,* 的含义MySQL 中的星号 (*) 代表“所有”。在不同上下文中,它具有不同的用法。1. 选择所有列使用 * 可以选择表中的所有列:SELECT * FROM table_
mysql中*是什么意思
2024-04-26

mysql中%是什么意思

mysql 中的百分号 % 是一个通配符,可匹配任意字符序列。它可用于:1. 字符串匹配(如:like '%string%'); 2. 范围查询(如:between '%start%' and '%end%'); 3. 正则表达式匹配(如:
mysql中%是什么意思
2024-04-26

mysql中@是什么意思

mysql 中 @ 符号有两种用途:指定变量(@变量名)和连接表或列名(@表名或@列名),表示数据库中一个临时或派生表的别名。MySQL 中 @ 符号的含义@ 符号在 MySQL 中有两种主要用途:1. 指定变量@ 符号用于指定变量,
mysql中@是什么意思
2024-04-26

mysql中的%是什么意思

mysql 中的 % 通配符用于在 like 操作符中进行模式匹配,表示零个或多个字符。它可用于查找以给定模式开头的所有字符串或包含给定模式的字符串,还可以可选地查找以给定模式结尾的字符串。除了 % 之外,mysql 还提供了其他通配符,包
mysql中的%是什么意思
2024-04-26

mysql中field是什么意思

mysql 中 field 关键字用于在表中查找列的序号,通过指定表达式和要比较的列名,即可返回匹配列的索引,否则返回 0 或 null,常用于动态 sql 和确定列顺序。MySQL 中的 FIELDFIELD 是 MySQL 中的一个关
mysql中field是什么意思
2024-04-29

mysql中as是什么意思

mysql 中 as 用于创建表或列别名,以简化查询中表或列的引用:表别名:在一个查询中使用多个表时,指定表别名,以便引用表中的列更方便。列别名:指定列别名,以便在查询结果中使用不同的名称或别名。MySQL 中 AS 的含义AS 在 My
mysql中as是什么意思
2024-04-29

mysql中schema是什么意思

mysql 中的 schema 是用于组织和管理数据库对象(如表、视图)的逻辑结构,以确保数据一致性、数据访问控制和简化数据库设计。schema 的功能包括:1. 数据组织;2. 数据一致性;3. 数据访问控制;4. 数据库设计。MySQL
mysql中schema是什么意思
2024-05-01

mysql中value是什么意思

mysql 中的 value 关键字:1. 获取列值:select value from table_name where column_name = value;2. 设置列值:update table_name set column_n
mysql中value是什么意思
2024-05-01

MySQL中的/*是什么意思

在MySQL中,/ /用于多行注释。它可以在SQL语句中的任何位置使用,用于注释掉一段代码或提供对代码的解释。多行注释可以跨越多个行,并且可以包含任何文本,而不会被MySQL解释为有效的SQL语句。这在调试代码或进行文档编写时非常有用。例如
2023-10-20

mysql中groupby是什么意思

答案: group by 是 mysql 中用于对数据分组和聚合的 sql 语句。详细描述:将具有相同分组依据值的记录分组在一起。对每个组应用聚合函数(如 sum、count、avg)生成汇总结果。优点包括汇总数据、识别模式、消除重复记录和
mysql中groupby是什么意思
2024-04-26

mysql中asc是什么意思

asc 在 mysql 中表示升序排列,适用于数字和字符串类型。在 select 语句中使用 asc 关键字后跟列名,即可对数据进行升序排序,与 desc 相反。asc 是默认排序顺序,如果未指定,数据将按升序排列。ASC 在 MySQL
mysql中asc是什么意思
2024-04-29

mysql中nvl是什么意思

在 mysql 中,nvl 函数用于替换空值,语法为:nvl(expression, replacement)。它根据规则工作:如果 expression 不为空,则返回 expression;如果 expression 为空,则返回 re
mysql中nvl是什么意思
2024-05-02

mysql中user是什么意思

mysql 中的 user 是一个数据库对象,它表示可以与数据库交互的实体,包含用户名、密码、权限和主机信息。通过 create user 可创建用户,grant 授予权限,revoke 撤销权限。管理 user 对于数据库安全至关重要,因
mysql中user是什么意思
2024-05-01

编程热搜

目录