【MySQL进阶】事务、存储引擎、索引、SQL优化、锁

一、事务

1.概念 

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

例子:转账,要求扣钱和进账同时成功

默认MySQL的事务自动提交,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

2.事务操作

(1)方法1

当设置为手动提交之后,在执行任何DML语句时,都要在最后添加commit语句才能提交成功

如果出现异常,不要提交,而是需要执行rollback语句,将更改的部分数据进行恢复

(2)方法2

3.事务的四大特性

一致性指的是能量守恒

4.并发事务问题

(1)脏读(未提交)

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

(3)幻读

5.事务隔离级别

在最后一个隔离级别(级别最高,数据最安全,但性能最差)下,解决了三个并发事务问题

mysql中的默认隔离级别是repeatable read

二、存储引擎/表类型

1.MySQL体系结构

存储引擎控制数据存储方式,数据库服务器通过API与其交互

2.概念

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
创建表的时候可以指定存储引擎,不指定的话默认是InnoDB

3.InnoDB

InnoDB的逻辑存储结构:

 4.MyISAM

5.Memory

 6.区别

7.选择

存储引擎没有好坏之分,需要根据业务选择合适的,绝大多数还是选择InnoDB

三、索引

1.概念

索引是帮助MySQL高效获取数据数据结构(有序),这些数据结构以某种方式引用(指向)数据,这种数据结构就是索引

2.引入

不加索引时,要查询某一条数据,需要全表扫描

加上索引时,查询更加高效

优势:提高查询效率、提高排序效率

劣势:索引列占空间、降低更新表的速度

3.索引结构

索引是在存储引擎层实现的,不同的存储引擎有不同的结构:(如果没有特别指明,都是指的B+Tree索引)

(1)引入二叉树

红黑树:自平衡二叉查找树

(2)引入Btree(多路平衡查找树)

叶子结点和非叶子结点都会存放数据

中间元素向上分裂 

 (3)B+Tree结构

所有数据都会存到叶子结点,叶子结点形成了一个单向链表

中间元素向上分裂 的同时,要把此元素在叶子结点也保留,同时用单向链表

(4)Hash结构

(5)思考

4.索引分类

回表查询:如果通过姓名想查询到所在的这一行数据,需要先在二级索引中查到ID,再通过聚集索引查到一行数据,因此根据ID查效率更高

 5.索引语法

创建索引:

创建联合索引:多个字段同时加上索引,字段的顺序有讲究(使用最频繁的字段放在左侧)

删除索引:

6.性能分析

(1)SQL执行频率
 (2)慢查询日志

通过慢查询日志来定位执行效率比较低(超过预设的执行时间)的SQL语句,进而优化

(3)profiles查看耗时

如果有些简单的指令即使没有被记录到慢查询日志中,但是效率也很低,怎么查看具体用时明细?

查看每一条SQL的耗时情况:

查看一条语句各个阶段的耗时情况:

(4)explain

四、SQL优化

1.insert优化

2.大批量插入数据

通过导入本地文件(数据按一定规则组成)加载到表中

3.主键优化

五、锁

1.概念

2.分类

3.全局锁---实现数据备份

(1)使用场景

对整个数据库实例加锁,处于只读状态,后续的更新操作语句都将被阻塞

典型的使用场景是:做全库的逻辑备份,获取一致性视图,保证数据的完整性

注意:备份不要在mysql命令中执行,而是在windows中的命令行执行

(2)特点

(3)不加锁的备份

4.表级锁

(1)使用场景

(2)分类

(3)表锁

读锁不会阻塞其他客户端的读,但是会阻塞写

写锁既会阻塞其他客户端的读,又会阻塞其他客户端的写

(4)元数据锁

(5)意向锁

当线程A加了行锁之后,如果线程B要加表锁,需要一行行检查数据是否加了锁

线程A在加了行锁之后再对整张表加意向锁,线程B通过看表锁与意向锁是否兼容来决定是否添加表锁,如果不兼容,就会阻塞,直到线程A提交释放锁

意向锁与表锁之间的兼容情况:

5.行级锁

(1)使用场景

(2)分类

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

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

相关文章

渗透实战——为喜欢的游戏“排忧解难”

本文仅用于技术研究学习,请遵守相关法律,禁止使用本文所提及的相关技术开展非法攻击行为,由于传播、利用本文所提供的信息而造成任何不良后果及损失,与本账号及作者无关。 资料查询来源- 安全社区与AI模型结合探索【文末申请免费…

autoware中ROS2学习笔记

文章目录 一、学习资料:1.1、说明1.2、Autoware Documentation1.3、Autoware Universe Documentation1.4、总结 二、概述三、ros2--节点组件什么是组件容器组件的实现原理可组合节点--节点组件什么是节点组件为什么需要可组合节点创建可组合节点时构造函数为什么需要…

三级_网络技术_27_计算机网络环境及应用系统的安装与调试

1.对于频繁改变位置并使用DHCP获取PP地址的DNS客户端,为减少对其资源记录的手动管理,可采取的措施是()。 允许动态更新 使用反向查找区域 增加别名记录 设置较小的生存时间 2.下列Windows 2003系统命令中,可以清空DNS缓存(DNScache)的是…

svn文件定时全量备份

在win11操作系统中,使用定时任务脚本的方式实现对SVN文件的定时备份 SVN备份脚本 1 创建脚本simpleBackup.bat 该脚本主要用于实现备份过程的信息展示 echo 正在备份版本库%1...... md %BACKUP_DIRECTORY%\%2 %SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_D…

mongodb连表查询,postman使用

要实现与SQL类似的查询,你需要使用聚合框架(Aggregation Framework) SELECT b.name, a.* FROM user a LEFT JOIN order b ON a.id b.id WHERE b.name LIKE %acd%; 从MongoDB 3.2版本开始,引入了聚合框架中的$lookup阶段&#xf…

AI人工智能 卷积神经网络(CNN)

AI人工智能 卷积神经网络(CNN) 卷积神经网络与普通神经网络相同,因为它们也由具有可学习的权重和偏差的神经元组成。 普通的神经网络忽略了输入数据的结构,所有的数据在送入网络之前都被转换为一维数组。 该过程适合常规数据&…

【Java日志系列】Log4j日志框架

目录 前言 一、Log4j简介 二、Log4j组件介绍 1. Loggers 2. Appenders 3. Layouts 三、快速入门 1. 入门代码 2. 日志级别 四、配置文件的使用 五、自定义日志输出格式 六、配置不同的Appender 1. 输出到文件 2. 输出到数据库 七、自定义Logger配置 总结 前言…

超简单理解LSTM和GRU模型

目录 参考资料 RNN在反向传播时容易遭受梯度消失的问题,而梯度是用于更新神经网络权重的关键因子,梯度消失描述的是梯度在时间序列反向传播中逐渐减小的情况。 若梯度过小,它对于网络的学习贡献甚微。结果是,在RNN中,梯…

unity游戏开发003:深入理解Unity中的坐标系

Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发深入理解Unity中的坐标系前言1. 坐标轴2. 左手坐标系3. 世界坐标系 vs. 局部坐标系4. 坐标变换5. 注意事项 总结 深入理解Unity中…

基于STM32开发的智能家居温控系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 家庭智能温控办公室环境监测常见问题及解决方案 常见问题解决方案结论 1. 引言 智能家居温控系统通过整合温度传感器、湿度传感器、风扇和加热器等硬件&#xf…

【数据结构进阶】哈希的应用

🔥个人主页: Forcible Bug Maker 🔥专栏: C || 数据结构 目录 🌈前言🔥位图位图的概念位图的实现位图的变体 🔥布隆过滤器布隆过滤器的概念布隆过滤器的插入布隆过滤器的查找布隆过滤器的删除布…

Windows 10/11和Linux双系统用户请勿安装最新更新 否则将无法启动

据蓝点网报道,Windows 10/11 最新累积更新存在已知问题,如果你同时安装了 Linux 双系统则会在更新后导致系统无法正常启动。 启动时会出现如下报错: Verifiying shim SBAT data failed: Security Policy Violation.Something has gone serio…

Python 绘图入门

数据可视化的概念及意义 数据可视化有着久远的历史,最早可以追溯至10世纪,至今已经应用和发展了数百年。不知名的天文学家是已知的最早尝试以图形方式显示全年当中太阳,月亮和行星的位置变化的图。 图1 数据可视化的发展历程 什么是数据可视…

顶级期刊TMI论文解读┆PLHN: 用于DCE-MRI影像中乳腺肿瘤分割的原型学习引导混合网络

一、论文简介 本推文详细介绍了一篇上海理工大学健康科学与工程学院医学信息工程研究所(以下简称为医信所)周雷副教授课题组的最新论文《Prototype Learning Guided Hybrid Network for Breast Tumor Segmentation in DCE-MRI》,该论文发表在…

【Rust】使用开源项目搭建瓦片地图服务

本文通过获取在线和离线地图数据,使用开源Rust项目搭建瓦片地图服务,并使用DevExpress的MapControl控件使用自建地图服务 获取地图数据 获取地图数据有很多种方式,这里分别用在线和离线地图数据举例说明 在线下载瓦片地图 打开在线瓦片地…

搭建内网开发环境(一)|基于docker快速部署开发环境

引言 最近因需要搭建一套简易版的纯内网的开发环境,服务器采用 centos8.0,容器化技术采用 docker 使用 docker-compose 进行容器编排。 该系列教程分为两大类: 软件安装和使用,这类是开发环境常用的软件部署和使用,涉…

Oracle VM VirtualBox虚拟机内存不够用的解决方案

一、 前言 在使用Oracle VM VirtualBox虚拟机的过程中,随着时间的推移,我们会感觉我们的内存越来越不够用,今天就来给大家分享一下我们如何解决虚拟机内存不够用的问题。 二、解决方法 1.虚拟机碎片化整理 我们第一步要做的是碎片整理&…

VScode找python环境 (conda)

CtrlshiftP 会弹出如下框: 框里输入: Python:Select Interpreter 会得到:

24/8/15算法笔记 dp策略迭代 价值迭代

策略迭代: 策略迭代从某个策略开始,计算该策略下的状态价值函数。它交替进行两个步骤:策略评估(Policy Evaluation)和策略改进(Policy Improvement)。在策略评估阶段,计算给定策略下…

模电实验3 - 单电源集成运放交流耦合放大器

实验目标 学习集成运放的单电源使用。掌握交流耦合单电源集成运放放大器的测试方法。了解交流耦合单电源集成运放放大器的特点。 实验器材 ADALM2000 1kΩ 电阻 (1/4 W) x 1 10 kΩ 电阻 (1/4 W) x 1 100kΩ 电阻 (1/4 W) x 3 0.1μF电容 x 1 1μF电容 …