数据库-MySQL索引事务

article/2025/6/17 23:17:08

1 索引

针对查询操作引入的优化手段 可以通过索引加快查询的速度 避免针对表遍历

  • 索引缺点:

1.占用更多空间,生成索引需要一系列数据结构 +一系列额外数据

2.可能会降低插入修改删除的速度

ps.如果这个表本来就很大,创建索引容易把数据库服务器卡住

技巧:额外搞一个机器,部署MySQL服务器,建好索引,再把数据导入

  • 数据库的索引

是一个改进的树形结构,B+树(N叉搜索树)

  1. B树/B-树 (一个节点划分N+1个区间)

2.B+树

  • 也是N叉搜索树
  • 一个节点划分N个区间
  • 每个节点中最后一个=当前子树最大值
  • 父节点的每个key都会以最大值身份出现在子节点对应区间中(key可能重复出现)
  • 使用链表 把叶子节点连接起来(易于完成数据集合遍历/方便获取某个范围的集合)

  • 优点:1)N叉搜索树,树的高度有限,降低IO次数 2)擅长范围查询 3)所有查询都要落在叶子节点,查询与查询之间时间开销稳定 4)叶子节点是全集 会把行数据存在叶子节点上 非叶子节点只是存储一个用来排序的key(比如id)
  • 底层逻辑:将非叶子节点缓存到内存中,虽然硬盘上还是要存非叶子节点,但是查询时把这些节点加载到内存中,比较过程就在内存中进行,进一步减少IO访问次数

1.1相关操作

1.查看索引

show index from 表名;

2.创建索引

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

3.删除索引

drop index 索引名 on 表名;

ps.手动创建的可以手动删除,如果是自动创建的(主键/外键,unique)就不可以删除

2 事务

CPU 负责进行算术运算和逻辑判断,执行任务的核心(大学生)

显卡(GPU)也能进行算术运算和逻辑判断(无数个小学生),比如游戏画面=一系列矩阵运su算,此时用显卡;

2.1回滚

日志的方式(打印出来内容 放在文件里 ) 记录事务中关键操作,这样的记录就是回滚的依据;即便主机掉电,重新启动主机/重启mysql,混滚日志依旧存在;

2.2事务特性

1)原子性 一系列操作要么都执行正确,要么都不执行(恢复如初)

2)一致性 事务执行之前/之后,数据都不能离谱(数据库的约束+一系列检查机制)

3)持久性 事务作出的修改,都是在硬盘持久保存的,重启服务器,数据仍然存在

4)隔离性 事务与事务间的影响力;两个事务间影响越大,隔离性越低;

并发执行,可能会

1.脏读问题 

一个事务A在写数据过程中,事务B读取同一个数据,A又改数据,导致B的数据是一个无效数据(脏数据);

解决:针对写操作加锁(写的时候不能读,都写完最终版了,才可以读)

2.不可重复读

并发执行时,事务A在内部多次读取一个数据时,出现不同的情况,在两次读取之间,B事务修改了数据;

解决:针对读操作加锁(A读的时候B不能写)

3.幻读

一个事务A执行过程中,两次的读取操作,数据内容虽然没变,但是结果集变了(A写完A1,B读A1,同时A又在写A2);

解决:引入串行化的方式,保持绝对串行执行事务(效率最低,数据最准);

2.3隔离级别

效率和正确性不能兼得 根据场景需求去看

可以直接在mysql配置文件中 修改数据库隔离级别

1.read uncommitted(读未提交) 并发程度最高 速度最快 隔离性最低 准确性最低

2.read committed(读已提交) 引入写加锁,只能读写完后提交的版本,并发程度降低,速度降低,隔离性提高,准确性提高

3.repeatable read(可重复读) 引入了写加锁和读加锁,写的时候不能读,读的时候不能写,并发程度降低,速度降低,隔离性提高,准确性提高;

4.serializable(串行化) 严格按照串行方式,并发程度最低,速度最低,隔离性最高,准确性最高;


http://www.hkcw.cn/article/LjSJYYAAse.shtml

相关文章

leetcode hot100刷题日记——32.杨辉三角

class Solution { public:vector<vector<int>> generate(int numRows) {//感觉是不是就是找规律遍历啊//i层共有i1个数字//i层的0和i位置都是1//i层的其他位置j的数字i-1层j-1位置i-1层j位置//注意二维vector数组的初始化vector<vector<int>>res(numRo…

数据中台(大数据平台)之元数据管理

元数据管理是数据管理的基础&#xff0c;数据中台产品要能够提供各类元数据采集的适配器&#xff0c;自动化采集技术元数据&#xff0c;并在技术元数据的基础上补充管理属性和业务属性&#xff0c;为后续的数据资源目录、数据安全管控、报表开发提供统一的口径。并能够在数据集…

TDenigne 集群可视化管理

可视化管理工具 为方便用户更高效地使用和管理 TDengine&#xff0c;TDengine 3.0 版本推出了一个全新的可视化组件 taosExplorer。这个组件旨在帮助用户在不熟悉 SQL 的情况下&#xff0c;也能轻松管理 TDengine 集群。通过 taosExplorer&#xff0c;用户可以轻松查看 TDengi…

【Linux 学习计划】-- 进程地址空间

目录 进程地址的引入 进程地址空间基础原理 区域划分的本质 如何理解进程地址空间 越界访问的本质 进一步理解写时拷贝 重谈 fork 返回值 结语 进程地址的引入 我们先来看一段代码&#xff1a; 首先我们可以看到&#xff0c;父进程和子进程是可以同时可以看到一个变量…

foundationpose位姿检测环境搭建与数据集制作

foundationpose环境搭建数据集制作 注&#xff1a;本教程为在未知明确方法的探索步骤记录&#xff0c;由于时间原因未做整理&#xff0c;可能有不必要步骤&#xff0c;建议先看完整篇文章理清思路在动手制作 创建数据集 保存RGB和Depth图像: 使用data_collect.py脚本来保存R…

某乎x-zse-96 破解(补环境版本)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、总体概述二、请求分析分析请求流程三、逆向分析总结一、总体概述 本文主要实现某乎x-zse-96 破解(补环境版本),相关的链接: https://www.zhihu.com/search?type=content&q=%25E7%258…

智慧物流园区整体解决方案

该智慧物流园区整体解决方案借助云计算、物联网、ICT 等技术,从咨询规划阶段介入,整合供应链上下游资源,实现物流自动化、信息化与智能化。方案涵盖智慧仓储管理(如自动化立体仓储系统、温湿度监控)、智慧物流(运输管理系统 TMS、GPS 监控)、智慧车辆管理(定位、调度、…

车载诊断架构SOVD --- 车辆发现与建连

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

基于 OpenObserve 的轻量级分布式日志存储和追踪方案

一、OpenObserve 介绍 OpenObserve 是一个基于 Rust 开发的开源云原生可观察性平台&#xff0c;专为处理海量数据&#xff08;如日志、指标和追踪数据&#xff09;而设计&#xff0c;具有高性能、低成本和易用性等特点。 核心功能和特点&#xff1a; 低成本存储&#xff1a;…

python分配方案数 2023年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析

python分配方案数 2023全国青少年信息素养大赛Python编程挑战赛复赛真题解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】 1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解 蓝桥杯python省赛真题详解 蓝桥杯python国赛真题详解 2、Py…

【后端高阶面经:架构篇】52、微服务架构:微服务是银弹吗?

一、单体架构的困境:微服务诞生的背景 (一)巨石应用的五大痛点 开发效率低下 单体应用WAR包体积可达数百MB,单次全量编译耗时超30分钟,即使修改一行代码也需重新构建整个项目。案例:某电商早期单体应用包含10万行代码,每次发布需协调15个团队,合并冲突处理耗时占比达4…

C57-断言函数assert

一 基本语法 1. 作用 调试工具&#xff1a;用于运行时检查条件是否成立&#xff0c;若失败则终止程序并报错&#xff08;文件名、行号、条件&#xff09;。 2. 语法 #include <assert.h> assert(condition); // condition为假时触发断言3. 行为 条件为真&#xff1…

免费文本转语音工具体验:祈风TTS使用

简介&#xff1a;语音生成的另一种方式 现在很多人通过视频记录生活&#xff0c;表达观点。拍摄剪辑不难&#xff0c;配音成了常见难题。部分人对自己的声音不够自信&#xff0c;也有人在特定场景下不便出声。文本转语音工具可以成为解决方案。 常见的TTS&#xff08;Text To…

Redis持久化机制详解

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

Mistral 推出全新开发者平台Agents API

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

融智学三阶进化模型的全要素可视化解析

摘要&#xff1a;本文提出一种三阶进化模型&#xff0c;通过可视化图表与数学公式阐述人类智慧与人工智能的融合路径。研究构建Mermaid流程图展示"人类智力→形式化智慧→通用AI→超级AI→人机协同"的演进过程&#xff0c;并引入道函数$f_{\mathrm{Tao}}(\mathrm{Ob}…

颠覆传统!单样本熵最小化如何重塑大语言模型训练范式?

颠覆传统&#xff01;单样本熵最小化如何重塑大语言模型训练范式&#xff1f; 大语言模型&#xff08;LLM&#xff09;的训练往往依赖大量标注数据与复杂奖励设计&#xff0c;但最新研究发现&#xff0c;仅用1条无标注数据和10步优化的熵最小化&#xff08;EM&#xff09;方法…

simulink mask、sfunction和tlc的联动、接口

这里全部是讲的level2 sfunction&#xff08;用m语言编写&#xff09;&#xff0c;基于matlab 2020a。 1.mask的参数操作 1&#xff09;mask通过set_param和get_param这2个函数接口对mask里面定义的Parameters&Dialog的参数的大部分属性进行读写&#xff0c;一般是Value值…

【数据结构】图的存储(邻接矩阵与邻接表)

图的存储结构 因为图中既有节点&#xff0c;又有边(节点与节点之间的关系)&#xff0c;因此&#xff0c;在图的存储中&#xff0c;只需要保存&#xff1a;节点和边关系即可。 节点保存比较简单&#xff0c;只需要一段连续空间即可&#xff0c;那边关系该怎么保存呢&#xff1…

C++修炼:unordered_map和unordered_set的使用和封装

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…