首页 > 数据库 >MySQL事务总结

MySQL事务总结

时间:2024-03-27 15:00:27浏览次数:34  
标签:总结 事务 隔离 要么 MySQL 执行 数据 读取

1、事务

数据库操作的最小工作单元。可以是由一条或者多条sql语句组成的不可分割的单元,要么都执行,要么都不执行。

并且符合ACID四个特性。

1、 原子性:

​ 事务中包含的操作要么都做,要么都不做【比如更新表中100条数据,更新了20条出问题了,那这20个数据要回滚到没有更新的状态】

2、 一致性:

​ 事务的执行结果必须是使数据库从一个一致性状态变到另一个一致性状态,不会一部分执行成功,一部分事务并未执行成功【要么全成功要么全失败

3、 隔离性:

​ 同一时间,只允许一个事务请求对一个数据请求,事务间不干扰

4、 持久性:

​ 事务一旦执行完成,它对数据库的改变就是永久的,不受其他操作或故障的影响

2、并发事务有哪些问题

1)脏读:

​ 一个事务读取了另外一个事务正在进行更新的数据,但是这个事务还没有提交这个数据(就是可能事务会失败需要回滚)

2)不可重复读:

​ 一个事务两次执行同一条查询语句,读取的结果不一致。可能是另一个事务修改了数据

3)幻读:

一个事务两次执行同一条查询语句,读取的结果多出或少了一些数据。可能是另一个事务修改了数据

4)修改丢失:

​ 两个事务对同一记录进行修改,后修改的记录会覆盖前面的记录

3、事务隔离机制(用于解决并发问题)

  • 在MySQL内部加锁解决并发问题,就是配置事务隔离级别

(可以解决脏读、不可重复读、以及幻读)
在这里插入图片描述

1) 读未提交:

​ 一个事务可以读取另一个事务未提交的数据。(什么问题也没有解决)

2) 读提交(不可重复读):

​ 一个事务只能读取另一个事务提交的数据(解决了脏读)

3) 可重复读

​ 一个事务多次读取同一条记录,返回的结果是一致的(解决了不可重复度)

4) 序列化(串行化)

​ 事务只能一个个进行,也就是序列化执行,隔离级别最高

InnoDB默认的是可重复读级别隔离机制

4、隔离机制的实现

主要靠读写锁(主要是表锁)和MVCC

MVCC内部主要是控制:行锁,间隙锁(解决了幻读),next-key锁

5、MVCC (行级锁主要由MVCC实现)

多版本并发控制,就是同一条记录在系统中存在多个版本。(保证数据一致性的前提下提供一种高并发的访问性能,对数据读写在不加锁的情况下实现互不干扰,实现隔离性)

依赖于:

隐藏字段(事务id,回滚指针,生成没有主键的B+树聚簇索引ID)、

read view(记录多个事务在修改数据的时候事务之间的可见性,可以看到哪些事务中的数据。)、

undo log(回滚,以及存放了数据修改之前的快照)

标签:总结,事务,隔离,要么,MySQL,执行,数据,读取
From: https://blog.csdn.net/Mikkkee/article/details/137038403

相关文章

  • mac下载与配置mysql
    mac下载与配置mysql下载安装包下载地址:https://dev.mysql.com/downloads/mysql/这里有两个版本,大家选的时候要注意了,如果你的mac是M1芯片的话就选ARM版本的双击安装启动mysql测试连接mysql配置环境变量如果没有配置环境变量的话会显示commannotfoun......
  • Mysql8.0的bin log日志
    1、https://blog.csdn.net/m0_58805648/article/details/131689915文章目录           一、Mysql8.0的binlog日志关闭               1.1、查看是否已开启binlog日志               1.2、关闭binlog日志        ......
  • MYSQL8最新安装教程
    目录安装配置MySql一、下载MySql进入官网:https://dev.mysql.com二、新建文件夹管理Mysql系列文件三、配置my.ini文件四、执行数据库初始化命令五、基础配置六、配置系统环境变量可能会遇到无法启动MYSQL服务的问题:一、尝试删除MySQL服务,重新安装;二、查看端口是否是被占用三、查看......
  • [附源码]计算机毕业设计基于大数据的身体健康管理平台(JSP+java+springmvc+mysql+MyBa
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着健康意识的提升和大数据技术的发展,基于大数据的身体健康管理平台成为现代社会追求高质量生活的一个新趋势。这种平台通过收集和分析用户的健康数据,提供个性......
  • [附源码]计算机毕业设计文档管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着信息化时代的到来,企业和机构在日常运营中产生大量文档资料。有效的文档管理系统(DMS)对于保障信息的组织、存储、检索和安全至关重要。一个先进的DMS能够帮助......
  • 【经验总结】智慧物业数字化与社区运营那点事儿
    一、前言智慧物业与社区运营这个话题不新鲜,但自打2013年起,就不断有人兴致勃勃前赴后继地进入这个赛道,多半铩羽而归,智慧物业社区运营这个事到底靠不靠谱,是不是个伪命题?今天咱们就结合我这10年智慧社区从业经历,掰次掰析这点事儿。聊聊社区运营这块蛋糕下的陷阱,探讨下到底应该干......
  • C# 调用迅雷aplayer播放器的遇到的问题总结
    事件的起因是,目前发布的软件版本中,视频播放使用的是腾讯云点播提供的html版本的播放器(我们的视频存放在腾讯云点播上),客户端采用的是.netframework3.5开发的,采用WebBrowser内核加载和其它的一个浏览器内核加载后端的页面,通过传参进行视频播放,这种方式在部分用户电脑是会出现腾讯......
  • SpringBoot 常用注解总结
    核心注解1.@SpringBootApplication主要用于开启自动配置,它也是一个组合注解,主要组合了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan2.@EnableAutoConfiguration该注解组合了@Import注解,@Import注解导入了EnableAutoCofigurationImportSelector......
  • ANR问题分析总结
    前言ANR(ApplicationNotResponding)应用程序无响应。如果你应用程序在UI线程被阻塞太长时间,就会出现ANR,通常出现ANR,系统会弹出一个提示提示框,让用户知道,该程序正在被阻塞,是否继续等待还是关闭。ANR类型出现ANR的一般有以下几种类型:类型说明logcat日志关键字KeyDis......
  • mysql 视图的创建
    概述MySQL视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,MySQL视图的作用类似于筛选......