Mysql数据库索引、事务相关知识

索引

  • 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,

    并指定索引的类型,各类索引有各自的数据结构实现

  • 查看索引

show index from 表名;

在这里插入图片描述

  • 创建索引
  • 对于非主键、非唯一约束、非外键的字段,可以创建普通索引
create index 索引名 on 表名(字段名);
  • 删除索引

drop index 索引名 on 表名;

drop index 索引名 on 表名;

删除索引,表创建过后创建索引的危险操作的解决办法

  • 原因:
    1. 数据库锁删除一个索引时,数据库通常会获取一个排他锁来执行删除操作,意味着在删除索引期间,其他对该表的操作可能会被阻塞,直到删除操作完成。
    2. 数据可用性:在删除和重新创建索引的过程中,可能会有一段时间内无法访问该表
    3. 存储空间:索引需要额外的存储空间。对于大型表或者包含大量索引的表,这可能会占用大量磁盘空间
  • 解决方法:
    1. 用新机器搭建一个数据库
    2. 把生产环境的数据库表创建好,加上索引
    3. 把生产环境的数据库的数据导入新的数据库中
    4. 用新的数据库这个机器代替原来的

事务

  • 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败

  • 事务是确保数据操作的一致性和完整性的重要机制

  • 底层数据结构:B+树

  • 数据库事务机制

    1. undo log + redo log
    2. 通过日志,println写到文件理,记录之前的数据进行操作
    3. 虽然数据库挂了,但是日志已经记录下来了
    4. 数据库重启过后,读取之前的日志,对一半的事务进行回滚
  • 事务特性

    1. 原子性:事务被视为不可分割的最小工作单元,通过事务,把多个操作打包到一起
    2. 一致性:事务的执行不会破坏数据库的完整性约束,同时通过约束避免非法的情况。不会让数据库出现问题的时候出现一些错误的情况,
    3. 持久性:事务的任何修改都是持久存在的
    4. 隔离性:避免事务并发执行的时候可能出现的问题
  • 典型事务bug

  • 脏读问题

    1. 事务1修改了某个数据,但是事务还没有提交
    2. 事务2读取了同一个数据,此时事务2读到的数据可能就是一个脏的数据,因为事务1可能之后还要修改这个数据
    3. 两个事务同时进行

    解决:给写操作加锁,直到事务1修改完成过后事务2才能进行访问

  • 不可重复读

    1. 事务1先修改数据,然后加锁,事务2读数据的时候需要等待
    2. 事务1修改提交过后,事务2进行读数据
    3. 此时又来一个事务3,因为读的时候并没有进行加锁,事务3对事务2读的数据进行了修改,导致两次读取到的数据结果不一样
  • 解决:读进行加锁,读数据的时候不能进行修改

  • 幻读

    1. 事务1修改数据,事务2开始读数据
    2. 事务3新增了一个其他的数据,此时事务2就可能出现两次读取到的结果集不同
  • 解决:串行化,不在进行并发操作,每个事务都是串行执行的(执行第一个在执行第二个。。。)

  • Mysql隔离级别

    1. read uncommitted:读未提交,并行程度最高,隔离程度最低,效率最高,数据最不靠谱
    2. read commited :读已提交,给写操作加锁,并行程度降低,隔离程度
    3. repeatable read:可重复读,给读写操作都加锁
    4. serializable :串行化,所有的事务都是串行执行
  • 事务使用

    1. 开启事务:start transaction;
    2. 执行多条SQL语句
    3. 回滚或提交:rollback/commit;(rollback即是全部失败,commit即是全部成功)
start transaction;
-- 阿里巴巴账户减少2000
update accout set money=money-2000 where name = '阿里巴巴';
-- 四十大盗账户增加2000
update accout set money=money+2000 where name = '四十大盗';
commit;

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

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

相关文章

基于贝叶斯优化的卷积神经网络-循环神经网络混合模型的的模拟股票时间序列预测(MATLAB R2021B)

将机器学习和深度学习方法运用到股市分析中, 不仅具有一定的理论价值, 也具有一定的实践价值。从理论价值上讲, 中国的量化投资技术(投资观念、方法与决策等)还不够成熟, 尚处在起步阶段, 能够将量化投资技术运用到投资决策中的公司寥寥无几。目前, 国内…

端口被占用,使用小黑框查杀

netstat -ano (查看目前所有被占的端口) netstat -ano|findstr " 8080" 查一下目前被占用的端口号 ,目前我要查的端口号是:8080,注意 后面打8080的时候,要有空格,要不然报错 **task…

Zabbix 的部署和自定义监控内容

前言 一个完整的项目的业务架构包括 客户端 -> 防火墙 -> 负载均衡层(四层、七层 LVS/HAProxy/nginx) -> Web缓存/应用层(nginx、tomcat) -> 业务逻辑层(php/java动态应用服务) -> 数据缓存/持久层(r…

操作系统智能助手OS Copilot评测报告

背景 如果不是朋友告知,我还不知道阿里云推出了【操作系统智能助手OS Copilot】这样一款产品。 我做系统运维的工作还是挺多的,知道系统运维工作的一些痛点;例如: Linux命令繁杂,想全部记住不太可能,多数…

软件测试《用例篇》

测试用例 测试用例的概念 测试用例是被测试人员向被测试系统发起的一组集合,包括测试环境,操作步骤,预期结果,测试数据等 使用测试用例的好处 使用测试用例进行测试的好处主要有:提高测试效率,降低测试的重…

WAWA鱼曲折的大学四年回忆录

声明:本文内容纯属个人主观臆断,如与事实不符,请参考事实 前言: 早想写一下大学四年的总结了,但总是感觉无从下手,不知道从哪里开始写,通过这篇文章主要想做一个记录,并从现在的认…

中国智能制造装备产业发展机遇

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 更多的海量【智能制造】相关资料,请到智能制造online知识星球自行下载。 随着全球第四次工业革命的浪潮,智能制造装备产业…

C++ 函数高级——函数的默认参数

函数默认参数 在C中,函数的形参列表中的形参是可以有默认值的 语法:返回值类型 函数名 (参数 默认值){ } 示例: 正确代码: 运行结果:

开源六轴协作机械臂myCobot 280接入GPT4大模型!实现更复杂和智能化的任务

本文已经或者同济子豪兄作者授权对文章进行编辑和转载 引言 随着人工智能和机器人技术的快速发展,机械臂在工业、医疗和服务业等领域的应用越来越广泛。通过结合大模型和多模态AI,机械臂能够实现更加复杂和智能化的任务,提升了人机协作的效率…

盘点当下智能体应用开发的几种形态

现在多智能体系统开发的关注度越来越高了,不光在开发者的圈子热度很高,很多职场人士,甚至是小白也参与其中,因为现在的门槛越来越低了,尤其是,最近特别火的扣子(coze)和百度的appbui…

【TB作品】51单片机 Proteus仿真00016 乒乓球游戏机

课题任务 本课题任务 (联机乒乓球游戏)如下图所示: 同步显示 oo 8个LED ooooo oo ooooo 8个LED 单片机 单片机 按键 主机 从机 按键 设计题目:两机联机乒乓球游戏 图1课题任务示意图 具体说明: 共有两个单片机,每个单片机接8个LED和1 个按键,两个单片机使用串口连接。 (2)单片机…

数据结构学生信息顺序表

主程序 #include "fun.h" int main(int argc, const char *argv[]) { seq_p Screate_seq(); stu data; printf("请问要输入几个学生的数据:"); int n; scanf("%d",&n); while(n--) { prin…

MySQL Binlog详解:提升数据库可靠性的核心技术

文章目录 1. 引言1.1 什么是MySQL Bin Log?1.2 Bin Log的作用和应用场景 2. Bin Log的基本概念2.1 Bin Log的工作原理2.2 Bin Log的三种格式 3. 配置与管理Bin Log3.1 启用Bin Log3.2 配置Bin Log参数3.3 管理Bin Log文件3.4 查看Bin Log内容3.5 使用mysqlbinlog工具…

STM32崩溃问题排查

文章目录 前言1. 问题说明2. STM32(Cortex M4内核)的寄存器3. 崩溃问题分析3.1 崩溃信息的来源是哪里?3.2 崩溃信息中的每个关键字代表的含义3.3 利用崩溃信息去查找造成崩溃的点3.4 keil5中怎么根据地址找到问题点3.5 keil5上编译时怎么输出…

【NTN 卫星通信】Starlink基于终端用户的测量以及测试概述

1 概述 收集了一些starlink的资料,是基于终端侧部署在野外的一些测试以及测量结果。 2 低地球轨道卫星网络概述 低地球轨道卫星网络(lsn)被认为是即将到来的6G中真正实现全球覆盖的关键基础设施。本文介绍了我们对Starlink端到端网络特征的初步测量结果和观测结果&…

STM32-ADC+DMA

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. ADC模拟-数字转换器1.1 ADC模拟-数字转换器1.2 逐次逼近型ADC1.3 ADC框图1.4 ADC基本结构1.5 输入通道1.6 规则组的转换模式1.6.1 单次转换,非扫描模式1.6.2 连续转换,非扫描模式1.6.3 单次…

Tabu Search — 温和介绍

Tabu Search — 温和介绍 目录 Tabu Search — 温和介绍 一、说明 二、什么是禁忌搜索以及我可以在哪里使用它? 三、禁忌搜索原则 四、短期记忆和积极搜索: 五、举例时间 六、结论: 七、参考: 一、说明 最近,我参加了…

在DevEco运行typeScript代码,全网详细解决执行Set-ExecutionPolicy RemoteSigned报出的错

目录 基本思路 网络推荐 本人实践 如下操作,报错: 基本思路 //在DevEco运行typeScript代码 /** * 1.保证node -v出现版本,若没有,配置环境变量(此电脑-属性-高级系统变量配置-path-粘贴路径);DevEco在local.properties中可看到当前nodejs的路径 * 2.npm install …

海外仓一件代发功能自动化:海外仓WMS系统配置方法

根据数据显示,2014-2019年短短几年之间,跨境电商销售总额增长了160%以上。这为跨境电商商家和海外仓,国际物流等服务端企业都提供了巨大的发展机遇。 然而,作为海外仓,要想服务好跨境电商,仓库作业的每一个…

车载测试之-CANoe创建仿真工程

在现代汽车工业中,车载测试是确保车辆电子系统可靠性和功能性的关键环节。而使用CANoe创建仿真工程,不仅能够模拟真实的车辆环境,还能大大提升测试效率和准确性。那么,CANoe是如何实现这些的呢? 车载测试中&#xff0…