MySQL 数据库 - 索引与事务

news2025/2/5 11:56:58

文章目录

  • 1.索引
    • 1.1 优缺点
    • 1.2 使用
  • 2.事务
    • 2.1 事务的使用
    • 2.2 四大特性
      • 2.2.1 原子性
      • 2.2.2 隔离性

1.索引

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。
可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现

1.1 优缺点

优点:

索引所起的作用类似书籍目录,可用于 快速定位检索数据
索引对于提高数据库的性能有很大的帮助,加快了查找的速度。


缺点:

  • 增加了增删改的开销。(此时进行增删改就需要调整已经创建好的索引)
  • 增加了空间的开销。(构造索引,需要额外的硬盘空间来保存。)

操作数据库是无非就是增删改查,在多数场景下,查询的使用概率要比增删改多很多。

因此引入索引还是比较有意的。

1.2 使用


1、查看索引

命令格式:

show index from 表名;




针对学生表来说,虽然前面没有创建过索引,但是他还会自带一个索引。


2、创建索引

如果查询操作很多的时候是按照名字查询的,这个时候就需要根据名字这一列来创建索引了。

下面根据 name 这一列来创建索引。

命令格式 :

create 索引名 on 表名(列名);



创建成功

完成创建后。使用前面的命令来查看索引。



这就是根据 name 这一列创建出来的索引。


3、删除索引

命令格式:

drop 索引名 on 表名;




删除成功

此时查看学生表的索引。



可以看到 name 的索引被删除了。

删除索引 和 创建索引 也是有可能会吃大量的磁盘 IO 也是比较危险的操作!!!

在最开始设计数据库的时候,创建表的时候,就要规划好。
要是已经有大量的数据,此时要进行操作就需要谨慎起来。

2.事务

事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。
在不同的环境中,都可以有事务。
对应在数据库中,就是数据库事务。

2.1 事务的使用

(1)开启事务

start transaction;


(2)中间执行多条 SQL 语句


(3))回滚或提交:

rollback/commit;


说明:rollback 即是全部失败,commit 即是全部成功

全部成功 的演示:



全部失败 的演示:


回滚操作是什么,后面详细说明。

2.2 四大特性

  1. 原子性(事务的初心)
  2. 一致性:事务执行前和执行后,都要是数据合法的状态。
  3. 持久性:(持久 >= 硬盘)事务产生的修改,都是会写入硬盘的。
    即使是程序重启、主机重启、掉电。事务都是可以正常工作的,保证修改是生效的。
  4. 隔离性:一个数据库的服务器同时执行多个事务的时候,事务之间的相互影响程度。

2.2.1 原子性

事务是可以把多个 SQL 语句给打包一起的,也就是变成了一个整体。

而有的操作就是需要作为一个整体来完成。

这同时也是事务打包成整体操作 最核心 的特性。


下面以一个例子来详细的说明。

比如张三要给李四转50块钱,这是就涉及到了两个步骤。

  1. 张三的余额减去50块钱。
  2. 李四的余额加上50块钱。


再比如网购,这里也涉及到两个步骤

  1. 商品表的的库存减少一个。
  2. 顾客的订单加上一个。

上述的这些操作就是要把多个操作给大包成一个整体。

要求,要么全部执行完,要么都不执行。


这里所说的都不执行并不是真正意义上的不执行,而是恢复到执行之前的样子。

这就是 回滚操作

因为是自动恢复到执行之前的样子,所以看起来就好像没执行一样。

这里涉及到的 回滚操作(rollback),其实就是把执行过的操作给 逆向恢复回去
类似于电脑上的 Ctry + Z 。


回滚操作的使用:

  • 数据库会把每个指向的操作记录下来。
  • 如果某个操作出错,就会把事务中前面的操作进行回滚
  • 根据之前进行的操作,进行逆操作。(如果前面是插入,现在就是删除)

2.2.2 隔离性

mysql 服务器要同时给多个客户端提供服务。
此时多个客户端之间,可能会同时发起事务,
尤其是这多个事务在操作同一个数据库的同一个表的时候,就很有可能引起一些麻烦

如果隔离性 越高,就意味着事务之间的并发程度 越低
执行效率就会 越慢,但是数据的准确性是 越高 的。

如果隔离性 越低 ,就意味着事务之间的并发程度 越高
执行效率就会 越快 ,但是数据的准确性是 越低 的。


下面举例说明。

比如有的时候会希望执行的效率慢点,但是准确性一定要高,就像是计算钱的时候。

再比如说,希望指向的效率快点,准确性不要求很高,就像是抖音或者是b站的点赞数。

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

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

相关文章

[附源码]计算机毕业设计Node.jsX工厂电影网站(程序+LW)

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

企业成立不到三年,能申报高企吗?

高企认定可谓是好处多多,不仅能享受税收优惠、专项补贴、贷款融资,还能提升企业核心竞争力,但在申报国家高新技术企业认定时会审核企业前三年的净资产增长率和销售收入增长率,这对于成立不满三年的企业而言,企业成长性这一项指标的得分就不可能拿到20分满分,甚至可能是0分。那么…

技术分享 | Jenkins 节点该如何管理?

Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows 和 Linux 系统)中编译、测试等 Jenkins 的任务可以分布在不同的节点上运行节点上需要配置 Java 运行时环境,JDK 版本大于 1.5节点…

[附源码]计算机毕业设计Python房屋租赁信息系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

热门技术中的应用:容器技术中的网络-第29讲-容器网络:来去自由的日子,不买公寓去合租

如果说虚拟机是买公寓,容器则相当于合租,有一定的隔离,但是隔离性没有那么好。云计算解决了基础资源层的弹性伸缩,却没有解决PaaS层应用随基础资源层弹性伸缩而带来的批量、快速部署问题。于是,容器应运而生。 容器就是Container,而Container的另一个意思是集装箱。其实…

持续测试的3个关键点才能成功实施

摘要:除非你在过去的一两年里一直处于冬眠状态,否则我相信你已经充分意识到持续测试的好处:降低开发成本、减少浪费、提高系统可靠性、降低发布风险等等. 当然,您认为在现实世界中将其付诸实践并不像某些供应商那样简单。很明显&a…

Twitter整合营销的方法技巧

对于独立站卖家来说,在Twitter它不仅能获取有价值的客户信息,收集粉丝反馈,还能影响消费者的决策。73%的数据显示,Twitter用户每个月都会在网上购物,甚至比较Facebook还要高。所以今天就和卖家们分享Twitter营销到底该…

6 | 渗透测试工具Kali Linux安装与使用

1 Kali Linux简介 渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法,这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析。渗透测试所需的工具可以在各种Linux操作系统中找到,需要手动安装这些工具。由于…

[附源码]Nodejs计算机毕业设计竞赛报名管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

艾美捷葡萄糖比色测定试剂盒参数说明和相关研究

艾美捷葡萄糖比色测定试剂盒仅供研究使用,该试剂盒是一种比色测定试剂盒,设计用于定量和检测血清、血浆、尿液、缓冲液和组织培养基中的葡萄糖而设计。 艾美捷葡萄糖比色测定试剂盒基本信息: 英文名字:Glucose Colorimetric Assay Kit 编号…

语音识别芯片LD3320介绍续

语音识别芯片LD3320寄存器介绍 语音识别芯片LD3320寄存器大部分都是有读和写的功能,有的是接受数据的,有的是设置开关和状态的。寄存器的地址空间为8位,可能的值为00H到FFH。但除了本文档介绍的寄存器,其他大部分为测试或保留功能…

[封装自己的ui组件库] upload的实现与难点

效果 1、服务文件(tmp为保存上传文件文件夹) 2、点击上传 3、图片列表 4、拖拽 5、手动上传 5、上传失败 6、服务 问题 1、如何打开文件列表 2、如何取出文件 3、对取出的文件校验? 4、如何发送请求(多文件上传?) 5、如何完成上传列表展示 6、拖拽…

基于遗传算法改进的DELM预测 - 附代码

遗传算法改进的深度极限学习机DELM的回归预测 文章目录遗传算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机(DELM)原理3.遗传算法4.遗传算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考:https:…

three.js之由线到管(管道缓冲几何体)

文章目录简介例子解释专栏目录请点击 简介 一条曲线怎么生成一个个曲线路径一行的管状呢&#xff1f;这个时候我们就用到了three.js的一个api:TubeGeometry&#xff0c;官网 例子 <!DOCTYPE html> <html lang"en"><head><meta charset"…

python连接OB绑定变量问题

某现场客户程序使用python&#xff0c;引用了jaydebeapi库连接oceanbase的jdbc驱动oceanbase-client-*.*.*.jar JayDeBeApi是一个python模块&#xff0c;可通过它来使用java的JDBC连接数据库&#xff0c;为该数据库提供了 Python DB-API v2.0 OB官网给的jaydebeapi连接ob的列子…

Hadoop2.x源码64位编译

编译必须环境&#xff1a;hadoop源码【使用的是2.10.2版本】、JDK8、maven、ant 、protobuf【版本必须是2.5.0&#xff0c;否则编译会报错org.apache.maven.plugin.MojoExecutionException: protoc version is libprotoc 3.21.12, expected version is 2.5.0】 安装 glibc-hea…

【剧前爆米花--爪哇岛寻宝】Comparator,Comparable接口以及toString和equals方法的重写应用

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于接口的文章&#xff0c;在本篇文章中我会将接口常用的一些实例进行讲解&#xff0c;以及部分方法在重写中的思想。 目录 Comparable和Comparator接口使用 Object类 t…

敏捷的发展史(二)

2010年之前&#xff0c;大多数敏捷管理的例子都是在软件开发团队中&#xff0c;几乎没有看到大型组织实施敏捷。 2015年&#xff0c;开始有一些非常大的组织成功地在组织的大部分区域内采用敏捷管理的讨论。 为了验证&#xff0c;史蒂夫丹宁邀请那些拥抱敏捷的公司聚在一起分享…

天天说手撕AVL树?你真的能撕下来吗?(详细解释+代码注释)

目录 前言 一、什么是AVL树&#xff1f; 二、模拟实现AVL树 2.1、定义AVL树 2.2、插入结点功能 2.2.1、先把值为val的结点插入到AVL树中 2.2.2、根据平衡因子来对树进行调整 2.3、AVL树的旋转 2.3.1、右单旋 2.3.2、左单旋 2.3.3、左右双旋 2.3.4、右左双旋 2.3、验证AVL树…

zabbix监控Gbase8a

部署​参考文章 部署zabbix [rootgba02 ~]# cat /etc/redhat-release CentOS Linux release 8.5.2111 [rootgba02 ~]# uname -a Linux gba02 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux 安装nginx [rootgba02 ~]# systemctl…