MySQL 索引事务

news2024/11/19 5:37:21

MySQL 索引&事务

文章目录

  • MySQL 索引&事务
    • 1. 索引
      • 1.1 概念
      • 1.2 作用
      • 1.3 使用场景
      • 1.4 使用
    • 2. 事务
      • 2.1 为什么使用事务
      • 2.2 事务概念
      • 2.3 事务的特性
      • 2.4 使用

1. 索引

1.1 概念

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

1.2 作用

  • 索引所起的作用类似书籍目录,可用于快速定位、检索数据

  • 索引对于提高数据库的性能有很大的帮助

    在这里插入图片描述

1.3 使用场景

要对数据库表的某列或某几列创建索引,需要考虑以下几点:

  • 数据量较大,且需要经常对数据进行条件查询
  • 对列的修改操作频率低(插入,删除,修改)

满足以上条件时,可以考虑对表中的这些字段创建索引,以提高查询效率

反之,如果对非条件查询列、经常做插入、修改操作、磁盘空间不足的情况,不考虑创建索引

1.4 使用

我们在创建主键约束(PRIMARY KEY)唯一约束(UNIQUE)0外键约束(FOREIGN KEY)时,会自动创建对应列的索引

  • 查看索引

    show index from 表名
    

    案例:查看班级表已有的索引

    --创建主键时会产生索引--此时索引名为PRIMARY
    create table classes (idx_classex int primary key auto_increment, name varchar(20)); 
    show index from classes;
    

    在这里插入图片描述

  • 创建索引

    对于非主键、非唯一约束、而非外键的字段,可以创建普通索引

    create index 索引名 on 表名(字段名)
    

    案例:创建班级表中,name字段的索引

    create index idx_classse on classes;
    

    在这里插入图片描述

  • 删除索引

    drop index 索引名 on 表名;
    

    案例:删除班级表中name字段的索引

    drop index idx_classes_name on classes;
    

    在这里插入图片描述

注:索引并不是一种直接调用的方法,而是一种提高查询效率的方式

在创建索引前,数据查询是按顺序遍历查询的,一旦数据量过大,则查询效率会很低:

在这里插入图片描述

为此我们可以创建一个索引,再次调用查询后会先自动搜索对应索引来查找数据,以此提高我们的查询效率:

在这里插入图片描述

2. 事务

2.1 为什么使用事务

我们先准备一个测试表:

create table account (
	id int primary key auto_increment;
    name varchar(20),
    money decimal(11, 2)
);

insert into account(name, money) values ('阿里巴巴', 5000), ('四十大盗', 1000);

在这里插入图片描述

这时,四十大盗从阿里巴巴的账户上偷盗了2000元

-- 阿里巴巴账户减少2000
update account set money = money - 2000 where name = '阿里巴巴';
-- 四十大盗账户增加2000
update account set money = money + 2000 where name = '四十大盗';

假如在执行以上第一句SQL时,出现网络错误,或者是数据库挂掉了,阿里巴巴的账户会减少2000元,但是四十大盗的账户上就没有了增加的金额

解决方案:使用事务来控制,保证以上两句SQL语句要么全部执行成功,要么全部执行失败

2.2 事务概念

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

在不同的环境下,都可以有事务,对应在数据库中,就是数据库事务

2.3 事务的特性

  • 原子性:指事务是一个不可分割的最小工作单位,事务中的操作只有都发生和都不发生两种情况
  • 一致性:事务必须要使数据库从一个一致状态变换为另一个一致状态,且中间变换的过程其它事务不可见。如:阿里巴巴被四十大盗偷了1000元,其事务就是阿里巴巴账户上少了1000元,四十大盗上多了1000元。因为一致性的影响其它事务看到的情况要么是阿里巴巴还没少1000元的情况,要么就是四十大盗成功偷到阿里1000元的情况,至于中间阿里少了1000元而四十大盗还没加上1000元这个中间状态是不可见的
  • 隔离性:一个事务的执行不能被其它事务干扰,即一个事务内部的操作及使用的数据对并发的其它事务是隔离的,并发执行的各个事务之间不能互相干扰
  • 持久性:一个事务一旦提交成功,它对数据库中数据的改变将是永久性的

2.4 使用

  1. 开启事务:start transaction;
  2. 执行多条SQL语句
  3. 回滚或提交:rollback/commit;(rollback一般配合条件判断语句使用)

rollback代表从start transaction到rollback位置下语句全部执行失败,commit代表从start transaction到commit下语句全部执行成功

start transaction;
-- 阿里巴巴账户减少2000
update account set money = money - 2000 where name = '阿里巴巴';
-- 四十大盗账户增加2000
update account set money = money + 2000 where name = '四十大盗';
commit;

在这里插入图片描述

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

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

相关文章

软信天成:企业如何保障数据安全?

随着数字全球化的推进,数据产业呈现几何级增长,政府已经开始意识到数据的战略意义,在各地纷纷推进数据开放共享行动,2020年,中国正式将数据与土地、劳动力、资本、技术并称为五大生产要素,提出要“加快培育…

Costmap文献阅读——Layered Costmaps for Context-Sensitive Navigation

摘要 许多导航系统,包括无处不在的ROS导航堆栈,在单个成本图上执行路径规划,其中大部分信息存储在单个网格中。这种方法在生成最小长度的无碰撞路径方面非常成功,但是当成本图中的值超出已占用或空闲空间时,它在动态的…

新版本!飞凌嵌入式RK3568系列开发板全面支持Debian 11系统

飞凌嵌入式OK3568-C/OK3568J-C开发板现已全面支持Debian 11系统,新系统的加持能为用户提供主控新选择,并为开发者带来更多开发便利! Debian系统作为一种广受欢迎和信赖的开源操作系统,以其稳定性、可靠性和开放性而闻名&#xff0…

STM32F103C8 PC13端口无输出原因

如果开启了RTC功能,就要注意PC13端口的设置。要把RTC OUT 由“Disable”改成“No RTC Output”,才行。

美妆商城系统 SpringBoot + Vue 【毕业设计 资料 + 源码】

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 一、前言 使用技术栈 SpringBoot Vue My…

JimuReport积木报表 v1.6.5 版本发布—免费报表工具

项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…

JUC“阻塞队列”水很深,你把握不住!

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 提到阻塞队列&#xff…

java入门,从CK导一部分数据到mysql

一、需求 需要从生产环境ck数据库导数据到mysql,数据量大约100w条记录。 二、处理步骤 1、这里的关键词是生产库,第二就是100w条记录。所以处理数据的时候就要遵守一定的规范。首先将原数据库表进行备份,或者将需要导出的数据建一张新的表了…

界面控件Kendo UI for jQuery R3 2023 - 发布全新金字塔图表类型

Telerik & Kendo UI R3 2023版本带来了30多个新的UI组件,丰富的设计系统文档、多种自定义选项、支持Linux的现代化报表体验等。借助R3 2023,开发人员能够在现代框架上快速构建强大的数字体验功能,满足不断变化的业务需求等。今天将为大家…

vcenter server (部署较大服务器)

作用 VMware vCenter是集中管理控制台,管理所有安装了VMware ESXI的主机 使用vCenter Server可以对虚拟机进行实时的监控,包括服务器硬件、网络和共享的存储,并可以进行故障诊断。 可以查看实时的统计和图表,监控虚拟主机和资源…

【NodeJS】Nodejs安装及环境配置

下载安装包 网址:https://nodejs.org/en 安装程序 1.下载完成后,双击安装包,进行安装,一路默认配置 nxet 即可,安装路劲给默认在C盘,或者选择其他位置,当前教程默认C盘 2.下图根据本身的…

创造者设计模式

Bike package com.jmj.pattern.builder.demo01;public class Bike {private String frame;//车架private String seat;//车座public String getFrame() {return frame;}public void setFrame(String frame) {this.frame frame;}public String getSeat() {return seat;}public…

【京东API】商品详情+搜索商品列表接口

利用电商API获取数据的步骤 1.申请API接口:首先要在相应电商平台上注册账号并申请API接口。 2.获取授权:在账号注册成功后,需要获取相应的授权才能访问电商API。 3.调用API:根据电商API提供的请求格式,通过编程实现…

如何使用Servlet写一个简单的网站

文章目录 前言1. 创建项目2. 引入依赖3. 创建目录4. 编写代码5. 打包程序6. 部署7.验证程序将 tomcat 集成到 idea 中 前言 前面我们学习了Java中常用的 HTTP 服务器 tomcat 的安装和使用,那么今天我们将使用这个 HTTP 服务器为大家写一个简单的网站,这…

Linux之输入输出重定向和管道

一、是什么 linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0、1、2: STDIN 是标准输入,默认从键盘读取信息STDOUT 是标准输出,默认将输出结果输出至终端STDERR 是标准错误…

新版软考高项试题分析精选(三)

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 1、项目整体管理要综合考虑项目各个相关过程,围绕整体管理特点,以下说法中,( )是不正确的。 A.项目的…

【2021集创赛】 RISC-V杯三等奖:基于E203 处理器的SM4算法硬件加速

杯赛题目:基于蜂鸟E203 RISC-V处理器内核的SoC设计 参赛要求:研究生组/本科生组 赛题内容: 基于芯来科技的开源蜂鸟E203 Demo SoC进行扩展,在限定的可编程逻辑平台上构建面向专用应用领域(譬如人工智能、信息安全、工业…

194. 二叉树的最近公共祖先

题目 题解 递归 def lowestCommonAncestor(root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:if not root or root p or root q:return rootleft lowestCommonAncestor(root.left, p, q)right lowestCommonAncestor(root.right, p, q)if not left:return right…

2.4G射频收发芯片XL2400P,收发一体,性能优异

XL2400P 系列芯片是工作在 2.400~2.483GHz 世界通用 ISM 频段的单片无线收发芯片。该芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块,并且支持一对多组网和带 ACK 的通信模式。发射输出功率、工作频道以及通信数据率均可配置。芯片已将多颗外围…

全志R128基础组件开发指南——图像采集

图像采集 CSI(DVP) 图像采集 SENSOR -> CSI 通路 CSI (CMOS sensor interface)接口时序上可支持独立 SYNC 和嵌入 SYNC(CCIR656)。支持接收 YUV422 或 YUV420 数据。 VSYNC 和HSYNC 的有效电平可以是正极性,也可…