MySQL调优系列(八)——事务和锁分类

news2024/11/16 17:20:04

一、事务是什么

事务是逻辑上的一组操作,要么都执行,要么都不执行。
sql语句如下:

# 开启事务
START TRANSACTION;
# 多条 SQL 语句
SQL1,SQL2...
## 提交事务
COMMIT;

二、事务的特性(ACID)

原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;(执行完成
一致性(Consistency):执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的;(数据一致
隔离性(Isolation):一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;(相互不影响
持久性(Durability):一个事务被提交之后。它对数据库中数据的改变是持久的。(持久化更改

三、并发事务带来的问题

脏写:对于同一行数据,一个事务对该行的的更新操作覆盖了其他事务对该行数据的更新操作。更新丢失的本质上是写操作的冲突,解决办法是让每个事务按照串行的方式执行,按照一定的顺序依次进行写操作。

脏读一个事务读取了另外一个事务未提交的数据,后面这个事务回滚了所以查到的就是脏数据;脏读本质上是读写操作的冲突,解决办法是先写后读,也就是写完之后再读取。

不可重复读:同一个事务,使用相同的查询语句,在不同时刻读取的结果数据不一致。不可重复度的本质也是读写操作的冲突,解决的方法是先读后写,也就是读完之后在写。

幻读:一个事务两次读取的数据结果集数量不同,幻读本质是读写操作的冲突,解决办法是先读后写,也就是读完再写。
不可重复读重点在于更新与删除,而幻读重点在于插入操作。

四、事务隔离级别

READ-UNCOMMITTED(读取未提交):最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
READ-COMMITTED(读取已提交):允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
REPEATABLE-READ(可重复读):对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
SERIALIZABLE(可串行化):最高的隔离级别,完全服从 ACID 的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
总结一下:
在这里插入图片描述
解决幻读的方法:
(1)串行化
(2)快照读:可重复读的情况下,使用MVCC机制(多版本并发控制)
(3)当前读:可重复读的情况下,使用 Next-Key Lock 进行加锁,Next-Key Lock 是行锁(Record Lock)和间隙锁(Gap Lock)的结合,行锁只能锁住已经存在的行,为了避免插入新行,需要依赖间隙锁。
(4)表锁 :在可重复读的事务级别下,给事务操作的这张表添加表锁。

五、锁分类

1、死锁

四个必要条件:
(1)互斥,当资源被一个线程使用(占有)时,别的线程不能使用。
(2)不可剥夺,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。
(3)请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。
(4)循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了环路等待。

A欠B100块钱,B欠C一百块钱,C欠A一百块。A说C还我才能还B,B说A还我才能还C,C 说B还我才能还A。

破坏上述任一条件,可解除死锁。

2、mysql锁分类

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

由于 MVCC 的存在,对于一般的 SELECT 语句,InnoDB 不会加任何锁。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线上商城开发都有哪些方法?费用多少

随着如今网络环境的愈发成熟,人们的消费习惯开始逐渐向线上迁移,为了能满足此种需求,企业商家都开始了线上商城的建设,希望能借助网络的力量促进自身的发展,创造更高的盈利空间,那么如何搭建一个线上商城呢…

Zookeeper 从安装到应用

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

GPIO模拟时序控制外设3——AT24C02

文章目录 前言AT24C02简介引脚介绍器件寻址寻址流程器件地址的组成其他I2C器件的地址组成 通信流程1.完整的传输过程2.初始化管脚3.起始信号4.停止信号5.MCU发送8位数据5.MCU接收应答位6.MCU接收八位数据7.MCU发送应答位 AT24C02写一个字节AT24C02读一个字节实现的效果 总结 前…

如何利用VS打包C++程序

如何将VS开发的C程序打包发给别人使用呢?话不多说,跟随以下步骤即可完成: 打包步骤 一.安装插件1.项目-->扩展-->管理扩展2.搜索-->下载3.下载完毕-->关闭VS4.Modify-->End Tasks(跳过)-->完成 二.配…

5.用python写网络爬虫,动态内容

目录 ​​​​​​​前言 5.1 动态网 页 示例 5.2 对动态网页进行逆向工程 5.2.1 边界情况 5.3 渲染动态网页 5.3.1 PyQt还是PySide 5.3.2 执行 JavaScript 5.3.3 使用WebKit与网站交互 1 . 等待结果 2. 渲染类 5.3.4 Selenium 5.4 本章小结 前言 根据联合国全球 网站可…

《诸神之眼:Nmap网络安全审计技术揭秘》读书笔记

《诸神之眼:Nmap网络安全审计技术揭秘》读书笔记 作者:李华峰 ◆ 前言 NSE是Nmap中革命性的创新。通过Nmap强大的脚本引擎(NSE),每一个用户都可以向Nmap中添加自己编写的代码,从而将Nmap打造成用户自由定制…

Ansys Speos | material library 材料库提升仿真效率

概述 Speos 在不断更新细节功能的同时,不断地优化材料属性应用过程,旨在帮助用户在相同的项目或是不同的项目之间通用材料属性定义,甚至扩展到公司内部不同的设计人员之间数据的通用,减少光学材料属性定义花费时间,提升…

CMO:释放生成式人工智能的潜力,将营销和销售提升到新水平

生成式AI如ChatGPT正在迅速彻底改变全球业务运营。不仅深刻地重塑了全球商业格局,而且从根本上重新构想了CMO的责任,以适应新的范式。随着人工智能继续推动更高的效率、有效性和大规模创新的新浪潮,CMO有机会带头利用营销AI来加速和加强营销策…

基于java+swing+mysql学生信息管理系统V3.0

基于javaswingmysql学生信息管理系统V3.0 一、系统介绍二、功能展示1.项目骨架2.数据库表3.项目内容4.学生信息查询5、学生信息添加6、学生信息修改7、学生信息删除 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型:Java SE项目(awtswing&…

Graylog Sidecar日志采集

Graylog Sidecar介绍 Graylog Sidecar 是 Graylog 日志管理平台的一个组件,用于管理和配置日志收集代理(log collectors)。它允许你集中管理和监控分布在不同服务器上的日志收集器,方便地将日志数据发送到 Graylog 服务器进行集中…

Go测试学习

前言: \textcolor{Green}{前言:} 前言: 💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 💞从这个专栏里面可以迅速获得Go的知识 Go测试学习 03 测试3.1 单元测试3.1.1 单元测试 - 规则3.1.2 单元测试 - 例…

【Spring Boot 初识丨八 丨 外部化配置(二)】外部应用程序属性

上一篇讲了 Spring Boot 的外部化配置的加载顺序及一些简单的属性说明 本篇来讲一讲 外部化配置一些比较重要的部分 Spring Boot 初识: 【Spring Boot 初识丨一】入门实战 【Spring Boot 初识丨二】maven 【Spring Boot 初识丨三】starter 【Spring Boot 初识丨四】…

SortShuffleManager的bypass机制触发条件是什么?

SortShuffleManager的运行机制主要分成两种,一种是普通运行机制,另一种是bypass运行机制。当shuffle write。 task的数量小于等于spark.shuffle.sort.bypassMergeThreshold参数的值时(默认为200),就会启用bypass机制。 该模式下&#xff0c…

置信区间笔记1 模型性能的置信区间

目录 补充实验-TCASVM置信区间 成功运行代码 误差棒图 置信区间与泛化性的关系 置信区间的计算公式 分类精度的置信区间 F1的置信区间 误差棒图 show confidence intervals for the prediction accuracy 补充实验-TCASVM置信区间 AUC的置信区间参考: https://blog.c…

加密接口如何测试?

随着互联网技术的发展,服务安全性和数据安全性变的越来越重要,提供接口服务的系统往往会应用各种加密技术,保证接口的安全调用,如何应用工具来实现加密接口测试成为一项必要技能。在讲解如何用Jmeter实现接口安全性测试之前&#…

【论文阅读】AugGPT: Leveraging XXX for Text Data Augmentation(AugGPT:利用XXX进行文本数据增强)

文章目录 一.论文信息二.论文内容摘要2.相关工作2.1.数据增强 4.方法4.1.整体框架4.4.Baseline方法4.6.评价指标4.6.1.余弦相似度4.6.2.TransRate 6.总结和讨论 一.论文信息 论文题目: AugGPT: Leveraging XXX Transformer for Text Data Augmentation(…

RocketMQ --- 高级篇

一、高级功能 1.1、消息存储 分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。 消息生成者发送消息MQ收到消息,将消息进行持久化,在存储中新增一条记录返回ACK给生产者MQ push 消息给对应的消费者,然后等待消费者返回…

HR谈薪之前,先要工资流水,礼貌吗?

hr谈薪前先要工资流水,这种做法礼貌吗?如果是你,你会给吗? 一部分网友认为可以不给,因为薪水是自己的隐私,跟求职无关,不需要告诉hr。 有人说,公司都双标,让你对工资保密…

LLM - 搭建 ProteinGPT 结合蛋白质结构知识的 ChatGPT 系统

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131403263 论文:ProteinChat: Towards Enabling ChatGPT-Like Capabilities on Protein 3D Structures 工程:ht…

高速电路设计系列分享-电源噪声分析

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 例如: 当今许多应用都要求高速采样模数转换器(ADC)具有12位或以上的分辨率,以便用户能够进行更精确的系统测量。然而,更高分辨率…