【从删库到跑路】一文带你明白MySQL数据库的 事务 操作

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

🎊专栏【MySQL】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【如愿】
大一同学小吉,欢迎并且感谢大家指出我的问题🥰


【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

建议大家先看目录

🍔事务

⭐简介

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

⭐普通操作——不使用事务

首先创建一张表并且插入数据

create table account1(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '姓名',
    money int comment '余额'
)comment '账户表';

insert into account1(id, name, money) VALUES (null,'张三',2000),(null,'李四',2000);

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql
转账操作,张三给李四转账1000
查询张三账户余额

select * from account1 where name='张三';

将张三账户余额 -1000

update account1 set money=money - 1000 where name='张三';

将李四账户余额 +1000

update account1 set money=money + 1000 where name='李四';

结果
操作成功
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

🎆第一种事务操作

🏳️‍🌈查看/设置事务的提交方式

select @@autocommit;
set @@autocommit=0;

🏳️‍🌈提交事务

commit

🏳️‍🌈回滚事务

rollback;

🌺自动提交VS手动提交

默认为1,是自动提交,如果要变为手动提交,
可以设置set @@autocommit=0

如果我们不用事务的话,是默认自动提交,写入命令后,直接写入数据库
但是如果使用事务的话,要调整为手动提交,写入命令后,要执行commit;,才能把数据传入数据库

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

⭐事务操作

🎁设置为手动提交

set @@autocommit = 0;

🎁重新建立一张表并且添加数据

-- 重新建立一张表并且添加数据
create table account2(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '姓名',
    money int comment '余额'
)comment '账户表';

insert into account2(id, name, money) VALUES (null,'张三',2000),(null,'李四',2000);

🎄结果
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

🎁进行事务操作

-- 转账操作(张三给李四转账1000)
-- 1.查询张三账户余额
select * from account2 where name='张三';
-- 2.将张三账户余额-1000
update account2 set money=money - 1000 where name='张三';
-- 3.将李四账户余额+1000
update account2 set money=money + 1000 where name='李四';

-- 提交事务
commit ;

🎄结果

在执行事务的时候,最后一定要使用commit提交事务

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

✨报错了,怎么办

如果在执行过程中程序报错了,不要commit提交事务,要使用rollback回滚事务,这样子可以保证数据库中的数据不变
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

🎆第二种事务操作

🏳️‍🌈开启事务

start transaction;begin;

🏳️‍🌈提交事务

commit;

🏳️‍🌈回滚事务

rollback;

⭐事务操作

🎁首先进行 开启事务

start transaction ;

🎁重新建立一张表并且添加数据

-- 重新建立一张表并且添加数据
create table account3(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '姓名',
    money int comment '余额'
)comment '账户表';

insert into account3(id, name, money) VALUES (null,'张三',2000),(null,'李四',2000);

🎄结果
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

🤖如果所有的事务都执行成功,那么就提交事务,否则回滚事务

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

在回滚事务之前,只要没有commit提交事务,那么数据库表中的数据不会发送变化

🍔事务的四大特性

⭐原子性

事务是不可分割的最小操作单元,要么全部成功,要么全部失败

⭐一致性

事务完成时,必须使所有的数据都保持在一致的状态

⭐隔离性

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

⭐持久性

事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

🎁事务隔离级别

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

⭐查看事务隔离级别

select @@transaction_isolation;

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

⭐设置事务隔离级别

set (session或者global) transaction isolation level 隔离级别;

隔离级别是read uncommittedread committedrepeatable readserializable

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

🍔事物并发问题

多个并发事务在执行当中所出现的问题

⭐脏读

A事务 读取到 B事务未提交的数据
称为 脏读
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

修改事务隔离级别
就没有脏读的问题了

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

⭐不可重复读

一个事务先后读取同一条记录,但是两次读取的数据不同,称为不可重复读
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql
修改事务隔离级别
就没有不可重复读的问题了
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

⭐幻读

一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,有发现这行数据已经存在,就好像出现了“幻觉”
【从删库到跑路】一文带你明白MySQL数据库的 事务 操作,MySQL,数据库,mysql

🍔总结

事务隔离级别越高数据越安全,但是性能越低
我们在设置事务的隔离级别时,要权衡事务的安全性和性能
一般我们就使用默认的隔离级别

🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰文章来源地址https://www.toymoban.com/news/detail-535635.html

到了这里,关于【从删库到跑路】一文带你明白MySQL数据库的 事务 操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【从删库到跑路】MySQL系列——详细讲解SQL的DDL,DML,DQL,DCL语句

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 内容有点多,建议大家先看目录。 建立在关系模型基础上,由多张相互连接的二维表组成的数据库 🏀使用表存储数据,格式统一,

    2024年02月09日
    浏览(37)
  • 【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 在项目开发中,在进行数据库表结构设计时,会根据业务需求以及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联

    2024年02月10日
    浏览(34)
  • 【从删库到跑路】MySQL数据库的索引(一)——索引的结构(BTree B+Tree Hash),语法等

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出小吉的问题 索引(index)是帮助MySQL 高效获取数据 的 有序 的 数据结构 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方

    2024年02月16日
    浏览(41)
  • 看完这篇都有DBA级别的MySQL备份经验了,再也不害怕删库跑路了

            在做运维的路上,相信大家会跟数据库经常打交道吧,那么数据库最重要的时候什么呢,那么肯定是备份了,这篇文章主要内容是介绍了,MySQL的几种常见的备份方式,主要是分为两种,第一种是基于MySQL提供的工具来进行备份,还有一种是基于使用第三方工具来进行

    2024年02月05日
    浏览(32)
  • rm -rf 真是删库跑路的一把好手

    上回书说到《一个月黑风高的夜晚紧急完成gitlab服务器数据迁移》,因为数据迁移后原数据还是存在的,该分区硬盘快满了,进而影响了原目录下的日志存储,既然数据已经迁移到新的路径了,那原来的库直接删掉就好了,往往就是这么不经意间做了一个令人十分后怕的决定

    2024年02月05日
    浏览(30)
  • 【玩转Linux操作】一文带你明白Shell的判断,循环语句

    🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 注意写空格 if … then 形式 类似于C/C++里面的 if-else 语句 🎈示例 🎈示例 🎈示例 类似于C/C++的 switch 语句 🎈示例 注意写空

    2024年02月13日
    浏览(30)
  • Spring-WebFlux使用,一文带你从0开始学明白Spring-WebFlux,学明白响应式编程

    传统的基于Servlet的Web框架,如Spring MVC,在本质上都是阻塞和多线程的,每个连接都会使用一个线程。在请求处理的时候,会在线程池中拉取一个工作者( worker )线程来对请求进行处理。同时,请求线程是阻塞的,直到工作者线程提示它已经完成为止。 在Spring5中,引入了一个新

    2024年02月03日
    浏览(27)
  • 微服务技术栈笔记从入门到跑路-SpringCloud+Gateway+Nacos+MQ+ES(保姆级)

    SpringCloud和Dubbo是微服务方案的实现 微服务技术对比 SpringCloud 和SpringBoot版本兼容需要对应 (左侧是SpringCloud的版本,右侧SpringBoot版本。两者版本需要一一对应,否者可能出现兼容性问题) (此笔记基于SpringCloud Hopxton.SR10和SpringBoot2.3.x进行记录) 微服务需要根据业务模块拆分

    2024年02月08日
    浏览(48)
  • 【MySQL】一文带你了解如何使用MySQL

    🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长,值得我们全力奔赴更美好的生活✨ ------------------❤️分割线❤️------------------------- —————————

    2024年02月09日
    浏览(54)
  • 一文带你了解MySQL之锁

    上一篇文章主要学习了事务并发执行时可能带来的各种问题,并发事务访问相同记录的情况我们大致可以划分为3种: 读-读 情况:即并发事务相继读取相同的记录,我们需要知道的是读取操作本身不会对记录有一毛钱影响,并不会引起什么问题,所以允许这种情况的发生。

    2024年02月08日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包