返回顶部
首页 > 资讯 > 数据库 >Mysql数据库事务的特性及运用
  • 492
分享到

Mysql数据库事务的特性及运用

2024-04-02 19:04:59 492人浏览 八月长安
摘要

本文主要给大家简单讲讲Mysql数据库事务的特性及运用,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql数据库事务的特性及运用这篇文章可以给大家带来一

  • 本文主要给大家简单讲讲Mysql数据库事务的特性及运用,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql数据库事务的特性及运用这篇文章可以给大家带来一些实际帮助。

二、Mysql,ODBC    数据库事务

2.1.多事务同时执行:

      彼此之间互不影响的方式进行并行;事务之间交互,通过数据集。  


START TRANSACTioN: 启动事务命令   数据库只有启动了事务才允许回滚撤销等操作。

                                              且数据的engine引擎必须是innodb,才支持事务

ROLLBACK :    回滚事务,mysql只要没有提交开启了事务都可以进行回滚操作。

COMMIT:           事务提交,事务提交后无法进行回滚操作。


若未明确启动事务:autocommit 能实现自动提交,每一个操作都直接提交;

强烈建议:明确使用事务,否则所有操作都被当成一个事务来处理,并关闭自动提交。

           否则浪费mysql很多IO操作,每写一条语句都执行提交至持久性存储,很浪费资源


2.2.事务的特性:

  2.2.1.Atomicity:  原子性

          事务所引起的数据库操作,要不都完成,要么都不执行;

  2.2.2.Consistency: 一致性

  2.2.3.Isolation:  隔离性

       事务调度: 事务之间影响最小

       mvcC:   多版本并发控制

  2.2.4.Durability: 持久性 

       一旦事务成功完成,系统必须保证任何故障都不会引起事务表示出不一致性;

                  1、事务提交之前就已经写出数据至持久性存储;

                   2、结合事务日志完成;

                              事务日志:顺序IO

                              数据文件:随机IO

 2.3.事务的状态:

             活动的:    active

        部分提交的:  最后一条语句执行后

               失败的:

               终止的:

               提交的:

状态间的转换过程        

Mysql数据库事务的特性及运用

   2.4.事务并发执行的优势:

              1、提高吞吐量和资源利用率     2、减少等待时间


   2.5.事务调度:          1、可恢复调度                          2、无极联调度


三、实例:

3.1. 设置自动提交开关

mysql> SELECT @@AUTOCOMMIT;  #自动提交的状态1为开启,0为关闭;

+--------------+

| @@AUTOCOMMIT |

+--------------+

|    1   |

+--------------+

1 row in set (0.00 sec) 

mysql> SET AUTOCOMMIT=0;  #设定自动提交关闭

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@AUTOCOMMIT;  #查询自动提交的状态1为开启,0为关闭;

+--------------+

| @@AUTOCOMMIT |

+--------------+

|    0   |

+--------------+

1 row in set (0.00 sec)


3.2. 回滚事务

mysql> SET AUTOCOMMIT=0;  #设定自动提交关闭

Query OK, 0 rows affected (0.00 sec)

mysql> commit     #将之前的事务全部提交

mysql> DELETE FROM student WHERE Name LIKE 'Li%';    #删除Name字段包含Li的行

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM student;        #Li哪行已经被删除

+-----+------------+-----+-----+

| SID | Name | Age | CID |

+-----+------------+-----+-----+

| 2 | Cheng Long |  0 |  2 |

| 3 | Yang Guo |  0 |  3 |

| 4 | Guo Jing |  0 |  4 |

+-----+------------+-----+-----+

3 rows in set (0.00 sec)

mysql> ROLLBACK;    #回滚事务,自动提交关闭后,默认就开启了事务,可以实现回滚等操作

Query OK, 0 rows affected (0.01 sec)

mysql> SELECT * FROM student;  #删除的行恢复了

+-----+------------+-----+-----+

| SID | Name  | Age | CID |

+-----+------------+-----+-----+

|   1 | Li Lianjie |   0 |   1 |

|   2 | Cheng Long |   0 |   2 |

|   3 | Yang Guo   |   0 |   3 |

|   4 | Guo Jing   |   0 |   4 |

+-----+------------+-----+-----+

4 rows in set (0.00 sec)

      

3.2. 保存点:恢复到所定义的那个保存点SAVEPOINT,保存点名称不能为纯数字。

保存点:SAVEPOINT savepoint_name;  保存以上操作为该保存点名称

回滚保存点:ROLLBACK  TO savepoint_name;  回滚到该保存点之前的状态


3.2. 1.保存点实验一

mysql>  START TRANSACTION;             #启动事务

Query OK, 0 rows affected (0.00 sec)

mysql> SAVEPOINT a;        #该保存点student表数据都存在

Query OK, 0 rows affected (0.00 sec)

mysql> select * FROM student;

+-----+------------+-----+-----+

| SID | Name   | Age | CID |

+-----+------------+-----+-----+

|   1 | Li Lianjie |   0 |   1 |

|   2 | Cheng Long |   0 |   2 |

|   3 | Yang Guo  |  26 |   3 |

|   4 | Guo Jing  |  53 |   4 |

+-----+------------+-----+-----+

4 rows in set (0.00 sec)


mysql> DELETE FROM student WHERE SID=4;   #删除student表的SID为4的行

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM student;

+-----+------------+-----+-----+

| SID | Name   | Age | CID |

+-----+------------+-----+-----+

|   1 | Li Lianjie |   0 |   1 |

|   2 | Cheng Long |   0 |   2 |

|   3 | Yang Guo  |  26 |   3 |

+-----+------------+-----+-----+

3 rows in set (0.00 sec)

mysql> SAVEPOINT b;  #该保存点student表数据的SID为4的行不存在了

Query OK, 0 rows affected (0.00 sec)

mysql> DELETE FROM student WHERE SID=3;

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM student;

+-----+------------+-----+-----+

| SID | Name  | Age | CID |

+-----+------------+-----+-----+

|   1 | Li Lianjie |   0 |   1 |

|   2 | Cheng Long |   0 |   2 |

+-----+------------+-----+-----+

2 rows in set (0.00 sec)

mysql> SAVEPOINT c;      #该保存点student表的SID为3和4的行都不存在

Query OK, 0 rows affected (0.00 sec)

mysql> ROLLBACK TO b;    #回滚至保存点b,即student表,SID为4的行不存在的行

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM student;

+-----+------------+-----+-----+

| SID | Name   | Age | CID |

+-----+------------+-----+-----+

|   1 | Li Lianjie |   0 |   1 |

|   2 | Cheng Long |   0 |   2 |

|   3 | Yang Guo |  26 |   3 |

+-----+------------+-----+-----+

3 rows in set (0.00 sec)

mysql> ROLLBACK TO a;     #即所有数据都存在的那个点

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM student;

+-----+------------+-----+-----+

| SID | Name       | Age | CID |

+-----+------------+-----+-----+

|   1 | Li Lianjie |   0 |   1 |

|   2 | Cheng Long |   0 |   2 |

|   3 | Yang Guo   |  26 |   3 |

|   4 | Guo Jing   |  53 |   4 |

+-----+------------+-----+-----+

4 rows in set (0.00 sec)


3.2.2.保存点实验二

     3.2.2.1.设置a2、a4、a6、a8四个保存点

mysql> select * from tutors;

+-----+--------------+--------+------+

| TID | Tname   | Gender | Age  |

+-----+--------------+--------+------+

|   1 | HongQiGong   | M      |   93 |

|   2 | HuangYaoshi  | M      |   63 |

|   3 | Miejueshitai | F      |   72 |

|   4 | OuYangfeng   | M      |   76 |

|   5 | YiDeng       | M      |   90 |

|   6 | YuCanghai    | M      |   56 |

|   7 | Jinlunfawang | M      |   67 |

|   8 | HuYidao      | M      |   42 |

|   9 | NingZhongze  | F      |   49 |

+-----+--------------+--------+------+

9 rows in set (0.00 sec)


mysql> delete from tutors where TID = 2 ;

Query OK, 1 row affected (0.00 sec)


mysql> savepoint a2 ;

Query OK, 0 rows affected (0.00 sec)


mysql> delete from tutors where TID = 4 ;

Query OK, 1 row affected (0.00 sec)


mysql> savepoint a4;

Query OK, 0 rows affected (0.00 sec)


mysql> delete from tutors where TID = 6 ;

Query OK, 1 row affected (0.00 sec)


mysql> savepoint a6;

Query OK, 0 rows affected (0.00 sec)


mysql> delete from tutors where TID = 8 ;

Query OK, 1 row affected (0.00 sec)


mysql> savepoint a8;

Query OK, 0 rows affected (0.00 sec)


mysql> select * from tutors;

+-----+--------------+--------+------+

| TID | Tname   | Gender | Age  |

+-----+--------------+--------+------+

|   1 | HongQigong   | M      |   93 |

|   3 | Miejueshitai | F      |   72 |

|   5 | YiDeng       | M      |   90 |

|   7 | Jinlunfawang | M      |   67 |

|   9 | NingZhongze  | F      |   49 |

+-----+--------------+--------+------+

5 rows in set (0.00 sec)


     3.2.2.回滚到a4保存点OK

mysql> rollback to a4;

Query OK, 0 rows affected (0.00 sec)


mysql> select * from tutors;

+-----+--------------+--------+------+

| TID | Tname    | Gender | Age  |

+-----+--------------+--------+------+

|   1 | HongQigong | M      |   93 |

|   3 | Miejueshitai | F      |   72 |

|   5 | YiDeng     | M      |   90 |

|   6 | YuCanghai  | M      |   56 |

|   7 | Jinlunfawang | M      |   67 |

|   8 | HuYidao    | M      |   42 |

|   9 | NingZhongze  | F      |   49 |

+-----+--------------+--------+------+

7 rows in set (0.00 sec)


     3.2.3.再回滚到a6保存点失败,该保存点已不存在

mysql> rollback to a6;

ERROR 1305 (42000): SAVEPOINT a6 does not exist


     3.2.4.但再回滚到a2保存点OK

mysql> rollback to a2;

Query OK, 0 rows affected (0.00 sec)


mysql> select * from tutors;

+-----+--------------+--------+------+

| TID | Tname        | Gender | Age  |

+-----+--------------+--------+------+

|   1 | HongQigong   | M      |   93 |

|   3 | Miejueshitai | F      |   72 |

|   4 | OuYangfeng   | M      |   76 |

|   5 | YiDeng       | M      |   90 |

|   6 | YuCanghai    | M      |   56 |

|   7 | Jinlunfawang | M      |   67 |

|   8 | HuYidao      | M      |   42 |

|   9 | NingZhongze  | F      |   49 |

+-----+--------------+--------+------+

8 rows in set (0.00 sec)


     3.2.5.但再回滚到最原始保存点OK

mysql> rollback;

Query OK, 0 rows affected (0.00 sec)


mysql> select * from tutors;

+-----+--------------+--------+------+

| TID | Tname        | Gender | Age  |

+-----+--------------+--------+------+

|   1 | HongQigong   | M      |   93 |

|   2 | HuangYaoshi  | M      |   63 |

|   3 | Miejueshitai | F      |   72 |

|   4 | OuYangfeng   | M      |   76 |

|   5 | YiDeng       | M      |   90 |

|   6 | YuCanghai    | M      |   56 |

|   7 | Jinlunfawang | M      |   67 |

|   8 | HuYidao      | M      |   42 |

|   9 | NingZhongze  | F      |   49 |

+-----+--------------+--------+------+

9 rows in set (0.00 sec)


     3.2.6.回滚到最原始保存点后,但再回滚a8、a2R失败

mysql> rollback to a8;

ERROR 1305 (42000): SAVEPOINT a8 does not exist

mysql> rollback to a2;

ERROR 1305 (42000): SAVEPOINT a2 does not exist

Mysql数据库事务的特性及运用就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的数据库。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql数据库事务的特性及运用

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

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

猜你喜欢
  • Mysql数据库事务的特性及运用
    本文主要给大家简单讲讲Mysql数据库事务的特性及运用,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望Mysql数据库事务的特性及运用这篇文章可以给大家带来一...
    99+
    2024-04-02
  • 数据库 事务的特性ACID
    事务(Transaction)是并发控制的基本单位。    所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个...
    99+
    2024-04-02
  • 数据库事务与特性
    数据库事务与特性 本文关键字:事务、原子性、一致性、隔离性、持久性事务是数据库中的一个概念,在交易系统和复杂业务中经常被提及。对于简单的增删改查场景,特别是学习阶段,不需要考虑诸如并发、锁等问题,但是我们要对事务的概念及特性有所了解,以便日...
    99+
    2016-08-02
    数据库事务与特性 数据库入门 数据库基础教程 数据库 mysql
  • mysql数据库的特性以及参数性能
    本篇文章给大家主要讲的是关于mysql数据库的特性以及参数性能的内容,感兴趣的话就一起来看看这篇文章吧,相信看完mysql数据库的特性以及参数性能对大家多少有点参考价值吧。    &nb...
    99+
    2024-04-02
  • 数据库事务的四大特性以及事务的隔离级别
    四大特性 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果...
    99+
    2022-01-10
    数据库事务的四大特性以及事务的隔离级别
  • 数据库事务的特性有哪些
    这篇文章将为大家详细讲解有关数据库事务的特性有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。数据库四大特性分别是:原子性、一致性、分离性、持久性原子性 ...
    99+
    2024-04-02
  • 数据库事务的四个特性及含义是什么
    这篇文章主要介绍了数据库事务的四个特性及含义是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据库事务的四个特性及含义数据库事务tran...
    99+
    2024-04-02
  • 数据库事务的四大特性以及事务的隔离级别整理
    事务的四大特性 原子性(atomicity) 我们经常说,一个事务执行失败了,就得回滚,其实这就是事务的原子性,一个完整事务,要么全部执行成功,如果有一个或者多个失败,那么就要回滚,其实这也是另一个特性即一致性的基础 一致性(...
    99+
    2016-02-05
    数据库事务的四大特性以及事务的隔离级别整理
  • 数据库事务的四大特性及事务的隔离级别是什么
    本篇内容主要讲解“数据库事务的四大特性及事务的隔离级别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“数据库事务的四大特性及事务的隔离级别是什么”吧!如果一...
    99+
    2024-04-02
  • MySQL数据库的特点及用处
    本文主要给大家简单讲讲MySQL数据库的特点及用处,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL数据库的特点及用处这篇文章可以给大家带来一些实际帮...
    99+
    2024-04-02
  • MySQL关系型数据库事务的ACID特性与实现
    目录1. 事务的 ACID 特性详2. MySQL 事务的实现3. Gorm 事务的使用4. Spring 事务的使用1. 事务的 ACID 特性详 ACID 是为保证事务(tran...
    99+
    2022-11-13
    MySQL关系型数据库事务 ACID特性
  • MySQL数据库事务原理及应用
    目录1 事务的使用1.1 事务概念1.2 事务的提交1.3 事务的常见操作2 事务隔离2.1 事务并发时出现的问题2.2 事务隔离级别1 事务的使用 1.1 事务概念 事务就是一组DML语句组成,这些语句在逻辑上存在相关...
    99+
    2023-04-27
    MySQL数据库事务 MySQL数据库事务管理
  • MySql事务原理介绍及特性
    目录1. 什么是事务2. 事务是如何做到同时成功失败3. 如何提交回滚事务1. mysql 中默认的事务行为是怎样的2. 回滚事务3. 提交事务4. 事务的4个特性5. 事务的隔离性1. 什么是事务 一个事务就是一个完整...
    99+
    2024-04-02
  • mysql数据库的特性有哪些
    这篇文章主要讲解了“mysql数据库的特性有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql数据库的特性有哪些”吧! ...
    99+
    2024-04-02
  • 数据库事务的四大特性和隔离级别
    数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么全部执行,要么全部都不执行。一个逻辑工作单元要成为事务,必须满足事务的四大特性(ACID)。即原子性(...
    99+
    2024-04-02
  • MySQL数据库有哪些特性
    本篇内容介绍了“MySQL数据库有哪些特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1.使用C和C...
    99+
    2024-04-02
  • mysql数据库事务及隔离级别
    事务的四大特性: 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的; 隔离性: 并发访问数据库时,一个用户的事务...
    99+
    2021-09-18
    mysql数据库事务及隔离级别
  • MySQL数据库内存表的特性与用法
    本篇内容主要讲解“MySQL数据库内存表的特性与用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库内存表的特性与用法”吧!  &nbs...
    99+
    2024-04-02
  • MySQL数据库:数据完整性及约束的应用
    数据完整性 域完整性:---------匹配完整性:非空、缺省 字段/列 实体完整性:-------匹配完整性:主键、唯一键 记录/行 引用完整性:-------匹配完整性:外键 表与表之间 约束:constraint MySQL中的约束分...
    99+
    2019-01-16
    MySQL数据库:数据完整性及约束的应用
  • 数据库事务的有哪些特征
    这篇文章给大家分享的是有关数据库事务的有哪些特征的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。数据库事务的四个特征是:1、原子性,事务是数据库的逻辑工作单位,事务中的操作要么全做...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作