【mysql】事物与隔离级别

事物

事务(Transaction)是并发控制的基本单位。所谓的事务呢,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

事务具有四大特性,通常称为ACID特性:

  • 原子性(Atomicity):事务要么完全执行,要么完全不执行。
  • 一致性(Consistency):事务执行后,数据库从一个一致性状态转移到另一个一致性状态。
  • 隔离性(Isolation):事务的执行不受其他事务的影响。
  • 持久性(Durability):事务一旦提交,其结果将永久保存在数据库中。
隔离级别

MySQL支持四个标准的隔离级别,从低到高分别是:

  • 读未提交(Read Uncommitted):允许一个事务读取另一个事务未提交的数据。
  • 读已提交(Read Committed):保证一个事务不会读取到另一个未提交事务的数据。
  • 可重复读(Repeatable Read):确保在事务执行期间查询相同记录的结果始终一致。
  • 串行化(Serializable):最高的隔离级别,通过强制事务串行执行来避免并发问题。

隔离级别定义了多个事务之间的相互影响程度,数据库往往是多个线程并发执行多个事务,采用不同的隔离级别会有不同的结果。如果不考虑事务的隔离性,可能会发生几种问题

  • 脏读:一个事务读到了另一个未提交事务修改过的数据,就意味着发生了脏读现象。
  • 不可重复读:一个事务修改了另一个未提交事务读取的数据,就意味着发生了不可重复读现象。
  • 幻读:一个事务先根据某些查询条件查询出一些记录,在该事务未提交时,另一个事务写入了一些符合那些收缩条件的记录(这里指INSERT,DELETE,UPDATE 操作),就以为着发生了幻读现象

不同隔离级别对应可能出现的情况:

隔离级别脏读不可重复读幻读
READ UNCOMMITTED☑️☑️☑️
READ COMMITTED☑️☑️
REPEATABLE READ☑️
SERIALIZABLE

相信能耐心读到这里的读者,对mysql技术都有一定的追求,在这里笔者推荐大家阅读:高性能MySQL

电子书版本,扫码回复:mysql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/258371.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

microblaze仿真

verdivcs (1) vlogan/vcs增加编译选项 -debug_accessall -kdb -lca (2) 在 simulation 选项中加入下面三个选项 -guiverdi UVM_VERDI_TRACE"UVM_AWARERALHIERCOMPWAVE" UVM_TR_RECORD 这里 -guiverdi是启动verdi 和vcs联合仿真。UVM_VERDI_TRACE 这里是记录 U…

mybatis数据输出-insert操作时获取自增列的值给对应的属性赋值

jdbc-修改 水果库存系统的 BaseDao 的 executeUpdate 方法支持返回自增列-CSDN博客 1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSE…

【Linux系统化学习】命令行参数 | 环境变量的再次理解

个人主页点击直达:小白不是程序媛 Linux专栏:Linux系统化学习 代码仓库:Gitee 目录 mian函数传参获取环境变量 手动添加环境变量 导出环境变量 environ获取环境变量 本地变量和环境变量的区别 Linux的命令分类 常规命令 内建命令 …

2024黑龙江省职业院校技能大赛信息安全管理与评估样题第二三阶段

2024黑龙江省职业院校技能大赛暨国赛选拔赛 "信息安全管理与评估"样题 *第二阶段竞赛项目试题* 本文件为信息安全管理与评估项目竞赛-第二阶段试题,第二阶段内容包括:网络安全事件响应、数字取证调查和应用程序安全。 极安云科专注技能竞赛…

我的创作纪念日——多线程进阶分享

多线程-进阶 1. 锁的策略 1.1 乐观锁&悲观锁 乐观锁 预计在线程中数据大概率不会被其他线程拿去修改 对于加锁所作的准备较少。只有当修改的操作真正发生了,才会进行加锁操作 所以乐观锁适用于多读少写的情况,可以降低加锁频率,提升效…

28. Python Web 编程:Django 基础教程

目录 安装使用创建项目启动服务器创建数据库创建应用创建模型设计路由设计视图设计模版 安装使用 Django 项目主页:https://www.djangoproject.com 访问官网 https://www.djangoproject.com/download/ 或者 https://github.com/django/django Windows 按住winR 输…

Markdown从入门到精通

Markdown从入门到精通 文章目录 Markdown从入门到精通前言一、Markdown是什么二、Markdown优点三、Markdown的基本语法3.1 标题3.2 字体3.3 换行3.4 引用3.5 链接3.6 图片3.7 列表3.8 分割线3.9 删除线3.10 下划线3.11 代码块3.12 表格3.13 脚注3.14 特殊符号 四、Markdown的高…

【科学炼丹指南】机器学习最科学、最有效的参数优化全流程实现方法

机器学习模型都有很多超参数需要调整,比如神经网络的层数、节点数,树模型的最大深度、叶子节点数等。调参的目的是在限定的训练时间和计算资源内,通过调整这些超参数,使模型在验证集上的性能指标达到最优,如最小化预测误差,最大化准确率等。 但是由于超参数组合数量极大,模式性…

探索无监督域自适应,释放语言模型的力量:基于检索增强的情境学习实现知识迁移...

深度学习自然语言处理 原创作者: Xnhyacinth 在自然语言处理(NLP)领域,如何有效地进行无监督域自适应(Unsupervised Domain Adaptation, UDA) 一直是研究的热点和挑战。无监督域自适应的目标是在目标域无标签的情况下,将源域的知识…

.NET使用分布式网络爬虫框架DotnetSpider快速开发爬虫功能

前言 前段时间有同学在微信群里提问,要使用.NET开发一个简单的爬虫功能但是没有做过无从下手。今天给大家推荐一个轻量、灵活、高性能、跨平台的分布式网络爬虫框架(可以帮助 .NET 工程师快速的完成爬虫的开发):DotnetSpider。 注…

js获取快递单号小练习

目录 1、css代码 2、html代码 3、js代码 完整代码 效果图 1、css代码 .box{width: 400px;height: 300px;margin: 100px auto;position: relative;}input{width: 250px;height: 40px;outline: none;}span{display: block;position: absolute;min-width: 270px;max-width: 40…

java集合之HashMap详解

HashMap详解 介绍 HashMap是在项目中使用的最多的Map,实现了Map接口,继承AbstractMap。基于哈希表的Map接口实现,不包含重复的键,一个键对应一个值,在HashMap存储的时候会将key、value作为一个整体Entry进行存储。 Has…