【MySQL】不就是事务

这篇具有很好参考价值的文章主要介绍了【MySQL】不就是事务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  嗨咯,小伙伴们大家好呀,我已经一个星期没有更新了,实在抱歉!本期我们要学习MySQL初阶中的最后一课,MySQL数据库中的事务也算是近几年面试必考的问题,所以我们一定要认真学习。

【MySQL】不就是事务,MySQL,mysql,数据库,sql

 目录

前言

 目录

一、事务的简介

二、事务操作

2.1 查看/设置事务提交方式

 2.2 手动开启事务

2.3 提交事务

2.4 回滚事务 

2.5 案例练习

2.5.1 查看MySQL事务

2.5.2 银行转账模拟练习

2.5.2.1 创建余额表

2.5.2.2 模拟转账流程 李白给杜甫转账1000元 (自动提交事务模式)

2.5.2.3 模拟转账流程 李白给杜甫转账1000元 (手动提交事务模式) 

三、事务的四大特性

四、并发事务问题与事务的隔离级别

4.1 并发事务的问题

4.2 事务的隔离别

 4.3 相关语句

4.3.1 查看事务的隔离界别

4.3.2 设置事务的隔离界别

4.4 实战练习

4.4.1 打开两个客户端进行操作​编辑

4.4.2 查看事务隔离级别

4.4.3 查看当前表中的数据

4.4.4 在另一个客户端进行更新操作

4.4.5 再另一个客户端进行查询操作

4.4.6 设置事务隔离级别为read committed

4.4.7 设置为repeatable read

4.4.8 设置事务的隔离级别为serializable;

五、总结


一、事务的简介

  事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

  普法课堂:法外狂徒”张三“昨天偷了李四5000元存入银行中,张三第二天良心发现犹豫再三决定告诉李四这件事情。李四听了这件事情后决定给张三一个重新做人的机会。只要张三把钱归还给自己,之前的事情既往不咎。张三也在第二天匆匆地赶去银行把自己账户中的5000元通过银行转账归还给李四。张三查了查自己的账户里边有5000元。

  现在我们想一下转账的流程:张三账户-5000元——>李四的账户+5000元。

张三在银行中的确把所偷盗的五千元转给了李四。银行的工作人员说最晚48小时内李四就可以收到,但是时间一转眼过去了一周,李四没有收到张三归还的五千元,李四报了警!

最后因为银行系统出现故障导致李四无法收到转账!最后请问张三构成犯罪吗?这就是我们今天要学习的事务,要么张三银行账户-5000,李四银行账户+5000,要么张三账户不扣钱,李四也不加钱。

注意:默认MvSQL的事务是自动提交的,也就是说,当执行一条DML(insert、update、delete、select)语句,MvSQL会立即隐式的提交事务。

二、事务操作

2.1 查看/设置事务提交方式
select @@autocommit;
 2.2 手动开启事务
start transaction;
begin;
2.3 提交事务
commit;
2.4 回滚事务 
rollback;
2.5 案例练习
2.5.1 查看MySQL事务
select @@autocommit;

【MySQL】不就是事务,MySQL,mysql,数据库,sql

   为1表示自动提交,为0表示需要手动提交事务,改为手动之后再提交事务时候必须使用commit,同时也需要自己进行回滚。

2.5.2 银行转账模拟练习
2.5.2.1 创建余额表

表结构如下

create table account
(
    id    int auto_increment primary key comment '用户id',
    name  varchar(10) comment '姓名',
    money int comment '余额'
);

添加数据

insert into account values('001','李白',5000),('002','杜甫',3000),('003','白居易',2500);
2.5.2.2 模拟转账流程 李白给杜甫转账1000元 (自动提交事务模式)

1.查询李白的账户

select * from account where name='李白';

【MySQL】不就是事务,MySQL,mysql,数据库,sql

2.李白的账户减去1000

update account set money=money-1000 where name='李白';

3.杜甫的账户增加1000

update account set money=money+1000 where name='杜甫';

4.查询账户表

select * from account;

【MySQL】不就是事务,MySQL,mysql,数据库,sql

2.5.2.3 模拟转账流程 李白给杜甫转账1000元 (手动提交事务模式) 

设置MySQL为自动提交事务,设置autocommit为0。

set @@autocommit=0;

1.开启事务

start transaction;

以下插入数据对数据进行操作的流程同2.5.2.2。

执行出错,要对事务进行回滚。要么全部执行,要么一个也不执行。

n.提交事务

commit;

三、事务的四大特性

原子性:(Atomicity): 事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

一致性:(Consistency):事务完成时,必须使所有的数据都保持一致状态。

隔离性:(lsolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

持久性:(Durability): 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

!!!面试的时候容易考

四、并发事务问题与事务的隔离级别

4.1 并发事务的问题

【MySQL】不就是事务,MySQL,mysql,数据库,sql

4.2 事务的隔离别

【MySQL】不就是事务,MySQL,mysql,数据库,sql

注意: 事物的隔离级别越高,数据越安全,但是性能越低。 需要去权衡数据的安全性和并发性,进行设置事物的隔离级别。

 4.3 相关语句

4.3.1 查看事务的隔离界别
select @transaction_isolation;
4.3.2 设置事务的隔离界别
set
[session/global] transaction isolation level [read uncommitted | read committed |repeatable read |serializable];

4.4 实战练习

4.4.1 打开两个客户端进行操作【MySQL】不就是事务,MySQL,mysql,数据库,sql
4.4.2 查看事务隔离级别
select @@transaction_isolation;

【MySQL】不就是事务,MySQL,mysql,数据库,sql

事务的隔离级别为默认值.

set session transaction isolation level read uncommitted;
4.4.3 查看当前表中的数据

【MySQL】不就是事务,MySQL,mysql,数据库,sql

4.4.4 在另一个客户端进行更新操作
set session transaction isolation level read uncommitted;
4.4.5 再另一个客户端进行查询操作

【MySQL】不就是事务,MySQL,mysql,数据库,sql

因为另一个客户端没有进行commit提交操作所以出现脏读。

4.4.6 设置事务隔离级别为read committed
set session transaction isolation level read committed;

【MySQL】不就是事务,MySQL,mysql,数据库,sql

提交事务之前于提交事务之后查询的李白的money不相同出现了不可重复读。

4.4.7 设置为repeatable read
set session transaction isolation level repeatable read;

在一个客户端查询id=4是否存在

select * from account where id='4';

【MySQL】不就是事务,MySQL,mysql,数据库,sql

在另一个客户端插入一条数据

select * from account where id='4';

【MySQL】不就是事务,MySQL,mysql,数据库,sql

在第一个客户端插入数据出现错误,但是查询id=4的仍然为空

【MySQL】不就是事务,MySQL,mysql,数据库,sql

select * from account where id='4';

【MySQL】不就是事务,MySQL,mysql,数据库,sql

出现幻读现象

4.4.8 设置事务的隔离级别为serializable;

【MySQL】不就是事务,MySQL,mysql,数据库,sql

当一个事务提交之后完毕之后另一个事务才开始执行,规避了幻读的问题

注意:事务的隔离级别越高,数据越安全,但是性能越低。

五、总结

在过去的一段时间里,我一直与大家分享关于MySQL数据库的知识和经验。我希望这些博文能够帮助你们更好地理解和应用MySQL,提升你们在数据库领域的技能。 然而,我认为现在是时候告别了。

我已经完成了初级阶段的博文学习,我相信你们已经掌握了一些基本的MySQL知识,并能够应用到实际项目中。 在这个阶段结束之际,我想向你们表达我的感激之情。感谢你们一直以来的支持和鼓励,是你们的反馈和建议让我不断进步。我也希望你们能够继续保持学习的热情,不断提升自己的技能。

如果你们还有任何关于MySQL数据库的问题,可以随时在评论区留言,我会尽力回答。同时,我也鼓励你们互相交流和分享,共同进步。 最后,我想再次感谢你们的支持和陪伴。希望我们能够在其他的学习领域再次相遇。 再见!

【MySQL】不就是事务,MySQL,mysql,数据库,sql文章来源地址https://www.toymoban.com/news/detail-518249.html

到了这里,关于【MySQL】不就是事务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL数据库 | 第十五篇】事务

        目录    前言:  介绍事务:  控制事务:  事务四大特性:  并发事务问题:  事务隔离级别: 总结:   这章我们将进入到MySQL基础篇的最后一章:事务,希望大家可以坚持下去,跟着我一起走完MySQL的学习之旅。 MySQL是一种关系型数据库管理系统,支持事务管理。 事

    2024年02月08日
    浏览(53)
  • Go 语言实现 MySQL 数据库事务

    MySQL事务是指一组数据库操作,它们被视为一个逻辑单元,并且要么全部成功执行,要么全部回滚(撤销)。事务是数据库管理系统提供的一种机制,用于确保数据的一致性和完整性。 事务具有以下特性(通常由ACID原则定义): 原子性(Atomicity):事务中的所有操作要么全

    2024年02月08日
    浏览(46)
  • 【Spring/MySQL数据库系列】数据库事务的特点与隔离级别

    ⭐️ 前面的话 ⭐️ 本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍有关数据库事务的特点以及隔离级别。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创, CSDN 首发! 📆首发时间:🌴2023年5月20日🌴 ✉️坚

    2024年02月05日
    浏览(53)
  • C# 从代码入门 Mysql 数据库事务

    在业务开发中,使用数据库事务是必不可少的。而开发中往往会使用各种 ORM 执行数据库操作,简化代码复杂度,不过,由于各种 ORM 的封装特性,开发者的使用方式也不一样,开发者想要了解 ORM 对事务做了什么处理是比较难的。因此,本文介绍数据库事务基础、Ado.net 事务

    2024年02月04日
    浏览(53)
  • MySQL:事务、索引、用户管理、备份、数据库设计(三大范式)

    事务 (transaction):要么都成功,要么都失败。 核心 :将一组 SQL 放在一个批次中去执行。 原则 ACID :原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。 原子性 :一个事务中的所有步骤 要么都 成功, 要么都 失败,不能只成功一个步骤。 一致性 :包括

    2023年04月26日
    浏览(79)
  • 【后端面经-数据库】MySQL的事务隔离级别简介

    目录 0. 事务的概念 1. 三类问题 2. 事务隔离级别 3. 操作指令 4. 总结 5. 参考博文 事务指的是一连串的集中操作指令,一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点,简记作 ACID : A -Atomicity: 原子性,事务的执行必须保证所有的动作都执行完毕;

    2024年02月08日
    浏览(47)
  • 【MySQL】一文带你了解数据库索引与事务

    数据库索引是一种提高数据库查询效率的数据结构。它可以快速地定位和访问数据库中的数据,从而大大提高数据库查询的速度和效率。数据库索引可以根据不同的查询需求构造多个索引,以最大化提高查询效率。 数据库索引基于各种字段来创建,在查询时可以通过索引直接

    2024年02月09日
    浏览(46)
  • 初识mysql数据库之事务的概念及操作

    目录 一、数据库多客户端访问问题 1. 数据库的CURD无限制带来的问题 2. 如何解决CURD导致的问题 二、事务的概念 1. 什么是事务 2. 事务的四个属性 3. mysql对事务的管理 4. 为什么会有事务 5. 事务的版本支持 三、事务的操作 1. 事务提交方式 2. 事务操作的准备工作 2.1 数据库是网

    2024年02月15日
    浏览(43)
  • 【七天入门数据库】第七天 MySQL的事务管理

    【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 【七天入门数据库】第四天 数据操作语言DML 【七天入门数据库】第五天 MySQL的备份恢复 【七天入门数据库】第六天 MySQL的视图与索引 【七天

    2024年02月15日
    浏览(53)
  • elasticsearch的查询方式和mysql数据库事务隔离级别的思考

    目录 普通分页 解除查询限制 scroll查询 search_after 官方改进 轻量级试图(pit,Point in time) 总结 项目中用到了 elasticsearch,发现有几种查询方式不太一样,思考了一下,总结如下 等同于关系数据库的分页查询,例如 mysql 的 limit,如下 sql 这种查询方式有一个问题,需要查询

    2024年01月18日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包