当前位置: 首页 > news >正文

MySQL笔记(八):事务

一、事务

事务用于保证数据的一致性,它由一组相关的dml组成,该组的dml语句要么全部成功,要么全部失败:转账。

事务和锁:当执行事务操作时(dml语句),mysql会在表上加锁,防止其他用户改表的数据

mysql数据控制台事物的几个重要操作

1、start transaction -- 开始一个事务
2、 savepoint 保存点名 --设置保存点
3、rollback to --回退事务
4、 rollback --回退全部事务
5、 comiit -- 提交事务,所有操作生效,不能回退

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

回退的过程中,会删除回退点之前的保存点

在这里插入图片描述


#讨论事务细节-- 1、如果不开始事务,默认情况下,dml操作是自动提交的,不能回滚INSERT INTO t27 VALUES(3,'milan');SELECT * FROM t27;-- 上一节rollback已经回退到开始事物的点了,所以只有新添加的一条数据-- 2、如果开始一个事务,你没有创建保存点,可以执行rollback,默认就是回退到事务开始的状态START TRANSACTIONINSERT INTO t27 VALUES(4,'kitty');INSERT INTO t27 VALUES(5,'scott'0:ROLLBACK;-- 表示直接回退到事务开始的状态,因为中途的dml操作没有设置保存点,只有开始状态的默认保存点-- 3、你也可以在这个事务中(还没有提交时),创建多个保存点,比如:savepoint
-- 执行dml,savepoint bbb-- 4、你可以在事务没有提交前,回退到任何一个保存点-- 5、innoDB存储引擎支持事务,myISAM不支持-- 6、开始一个事务:start transaction,   set autocommit=off

二、事务的隔离级别

(1)介绍

	多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离事务,以保证各个连接在获取数据时的准确性如果不考虑隔离性,可能会引发:脏读:dirty read,当一个事务读取另一个事务尚未提交的修改时,产生脏读不可重复读:nonrepeatable read, 同一查询在同一事务中多次进行,由于其他连接提交事务所做的**修改或删除,**每次返回不同的结果集,发生不可重复读幻读:phantom read 同一查询在同一事务中多次进行,由于其他连接提交事务所做的**插入**,每次返回不同的结果集,产生幻读

(2)四种隔离级别

在这里插入图片描述

1)设置隔离级别为读未提交
在这里插入图片描述

幻读现象:另一个控制台应该只能读到本控制台事务开始的情况,但是本控制台发生操作后,另一个控制台也能捕捉到,这是不行的。

在这里插入图片描述

2)改变隔离级别为读已提交:在插入一条数据后,另一个控制台看不到

在这里插入图片描述

3)可重复读

演示不可重复读

在这里插入图片描述
在这里插入图片描述

4)可串行化:当一个连接正在操作数据库,并且没有commit时,另一个连接无法查询;一提交就可以查了

在这里插入图片描述
在这里插入图片描述

(3)设置隔离

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 项目功能点
  • 服务器磁盘扩容
  • [算法题]火星词典
  • Mysql-窗口函数二
  • 图的拓扑排序
  • RabbitMQ如何保证可靠性
  • 文档控件DevExpress Office File API v24.1 - 支持基于Unix系统的打印
  • 正则表达式扩展应用
  • Linux/C 高级——shell脚本
  • elasticsearch教程
  • 学习记录——day28 信号量集
  • 未来展望:PLC远程控制网关与工业物联网融合的发展趋势
  • 【Linux】系列入门摘抄笔记-4-查看文件内容命令cat/more/less/tail
  • web基础与http协议与配置
  • 美的神机后续
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • const let
  • Druid 在有赞的实践
  • Mybatis初体验
  • nginx 负载服务器优化
  • php面试题 汇集2
  • PV统计优化设计
  • Python_OOP
  • python学习笔记 - ThreadLocal
  • React组件设计模式(一)
  • ViewService——一种保证客户端与服务端同步的方法
  • 编写高质量JavaScript代码之并发
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 树莓派 - 使用须知
  • 思考 CSS 架构
  • 探索 JS 中的模块化
  • 我有几个粽子,和一个故事
  • 学习使用ExpressJS 4.0中的新Router
  • 一份游戏开发学习路线
  • 译有关态射的一切
  • 在Mac OS X上安装 Ruby运行环境
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • #FPGA(基础知识)
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (07)Hive——窗口函数详解
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C++17) std算法之执行策略 execution
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二)测试工具
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (计算机网络)物理层
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (学习总结16)C++模版2