实用指南:数据库的事务和索引

news/2025/11/13 19:27:19/文章来源:https://www.cnblogs.com/gccbuaa/p/19219327

事务简介

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

例如银行转账,如果付款方付款成功但收款方没收到钱,如果没有开启事务就会发生重大错误

事务的两种开启方式

设置为手动

select @@autocommit; 查看事务,1为主动 0为手动

set @@autocommit = 0 设置事务为手动

commit 提交事务

rollback 回滚事务

开启事务

start transaction 开启事务,标记事务的起始位置

commit 提交事务

rollback 回滚事务

set autocommit = 1; 开启MySQL数据库的自动提交

注意:在这种模式下,事务为默认的自动提交,在start transaction 后才开启事务

事务处理步骤

四大特性

  • 原子性(Atomicity) :事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。

  • 隔离性(Isolation) :数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

  • 持久性(Durability) :事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

并发事务

索引

作用:

  • 提高查询速度

  • 确保数据的唯一性

  • 可以加速表和表之间的连接,实现表与表之间的参照完整性

  • 使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间

  • 全文检索字段进行搜索优化

分类:

  • 主键索引(PRIMARY KEY)

  • 唯一索引(UNIQUE)

  • 常规索引(INDEX)

  • 全文索引(FULLTEXT)

主键索引

  • 某一个属性或属性的组合能唯一标识一条记录

    • 如:学生表(学号,姓名,班级,性别等) ,学号就是唯一标识的,可作为主键

  • 特点

    • 最常见的索引类型

    • 确保数据记录的唯一性

    • 确定特定数据记录在数据库中的位置

CREATE TABLE  `Grade` (`GradeID`  INT(11)   AUTO_INCREMENT    PRIMARY KEY,#省略代码……#主键索引也可在字段字义之后,如#  PRIMARY KEY(`GradeID`)
)

其他索引

#添加主键索引
ALTER table student add PRIMARY Key(StudentNo);
#添加唯一索引
ALTER table student add UNIQUE(StudentName);
#添加普通索引
ALTER table student add INDEX(IdentityCard);
#全文索引
ALTER table student add FULLTEXT(Phone)
#全文索引搜索中文
alter table 表 add fulltext case_name(`字段`) with parser ngram;  #添加中文分词器
#全文索引的执行
select *
from 表
where match(字段)
against('*内容*' in boolean mode);
explain  select .....可以看到执行效率

哪些情况需要创建索引?

  • 主键自动建立唯一索引

  • 频繁作为查询条件的字段应该创建索引

  • 查询中与其他表关联的字段,外键关系建立索引

  • 频繁更新的字段不适合建立索引,因为每次更新不单单是更新了记录还会更新索引

  • WHERE条件里用不到的字段不创建索引

  • 单键/组合 复合索引的选择问题,who?(在高并发下倾向创建组合索引)

  • 查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度

  • 查询中统计或者分组字段

哪些情况不要创建索引?

  • 表记录太少

  • 经常增删改的表 ( 提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE、和 DELETE。 因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据建立索引。)

  • 注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。

索引失效的情况

1. WHERE 子句使用了函数

2. 使用 !=<>(不等于)

3. 使用 OR 连接多个条件,且只有部分字段有索引

4. LIKE 查询时,前置 % 导致索引失效

5. 隐式类型转换(索引字段与查询数据类型不匹配)

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

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

相关文章

一键账户接管漏洞分析:XSS与CSRF链式攻击实战

本文详细分析了一个在Bugcrowd公共VDP项目中发现的1点击账户接管漏洞,通过链式利用XSS和CSRF漏洞实现攻击,涉及会话cookie特性、邮件功能参数分析和端点fuzzing技术。在Bugcrowd公共项目中发现的一键账户接管漏洞 ب…

ai agent 智能体 prompt ragflow langflow n8n dify

ai agent 智能体 prompt ragflow langflow n8n dify# 角色你是瑞老师,一位经验丰富且专业的教育工作者,擅长根据用户提供的课题,编写符合新课标的教案。 ## 技能### 技能 1: 编写教案1. 当用户提供课题后,深入分析…

1 移动端开发概念与环境准备

1 移动端开发概念与环境准备1.1 移动端开发相关概念 1.1.1 APP类型(1)Native APP Native APP又称原生APP,就是我们平时说的手机/桌面应用软件。 原生APP 是针对IOS、Android、Windows、鸿蒙等不同的手机操作系统要采…

C++之变量与基本类型(三) - Invinc

本文记录了C++中与变量与基本类型相关的容易遗忘的一些知识。本文记录了C++中与变量与基本类型相关的容易遗忘的一些知识。变量基本类型 整数类型 short, int, long, long long C++标准规定:short 至少 16 位; int至…

Vue 3 完全指南:响应式原理、组合式 API 与实战优化 - 实践

Vue 3 完全指南:响应式原理、组合式 API 与实战优化 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

创建你的第一个Java文件

1.新建一个code文件夹,存放代码 2.新建一个Java文件 1.新建一个code文件夹,存放代码 2.新建一个Java文件Hello.java注意后缀public class Hello{public static void main(String[] args){System.out.print("Hel…

深入解析:手写MyBatis第111弹:Spring Boot自定义注解@MybatisMapperScan注解深度解析:从注解定义到接口代理的完整实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Imbalance

Background Special for beginners, _ Description 上周 DB(Dream Bear) 做了均衡区间,但是它没过。 于是 DB 急了,就打算出一道 《非均衡区间》,但是求非均衡区间只要 \(n^2 − ans\) (均衡区间数) 即可。 出了…

2025 年 11 月展厅设计公司权威推荐榜:企业展厅、校史馆、博物馆、多媒体数字及VR线上虚拟展厅设计厂家精选

2025 年 11 月展厅设计公司权威推荐榜:企业展厅、校史馆、博物馆、多媒体数字及VR线上虚拟展厅设计厂家精选 随着数字化浪潮的深入推进,展厅设计行业正经历着前所未有的变革。从传统的实体展馆到如今的多媒体数字展厅…

点赞!开幕式背后的云力量!

粤港澳大湾区华光璀璨 “同心圆”水舞台如梦似幻 三地健儿齐聚 激情与梦想在此交汇 11月9日,广州奥体中心 第十五届全国运动会 盛大开幕这是一场展现 “科技、绿色、融合、人文”的 体育盛会 中国电信天翼云 作为十五…

#20232329 2025-2026-1 《网络与系统攻防技术》 实验六实验报告

#20232329 2025-2026-1 《网络与系统攻防技术》 实验六实验报告Metasploit攻击渗透实践 1.实验内容 下载官方靶机Metasploitable2,完成下面实验内容。 (1)前期渗透 (2)Vsftpd源码包后门漏洞(21端口) (3)SambaM…

易路AI人才罗盘:点亮组织内部的人才“星空”,让每一次人才决策都精准有据

引言:HR的世纪难题——“我们的人才究竟在哪里?” 当业务部门火急火燎地提出需求:“我们需要一位情商高、能团结队伍、激发团队斗志的HRBP负责人”,或者当公司战略决定“明年在德国建立营销中心,谁适合做第一任一…

11.13 比赛总结

比赛情况 今天又双叒叕犯了低级失误,\(A\) 题有个地方忘记取模爆int了,\(C\) 题数组开小了。

壅土(拼音:yōng tǔ)

壅土(拼音:yōng tǔ)是一个多义词,主要包含以下三层含义: 1. 堆积的泥土指长期积聚形成的泥土堆。例句:唐柳宗元《兴州江运记》:"于是决去壅土,疏导江涛。" 2. 农业培土技术(最常见用法)在农作物…