InnoDB和MyISAM的区别 聚簇索引与非聚簇索引 B+树与B树

数据库索引高频面试题梳理 引言 数据库中的索引是用来加快查询速度的 B Tree B+ Tree 聚簇索引和非聚簇索引 索引可分为两个大类: 主键索引:主键本身就是一个索引 辅助索引(也称为非主键索引、二级索引):设置主键之外的其他字段为索引 聚簇索引定义: 索引和数据是放在一块的(一个文件存储,主键索引的B+树的叶子节点中存放了索引值和数据行所有字段) 索引的顺序和数据的物理存储一致(因为字段也在B+树的叶子节点中,因此索引按序则整个数据行也是按序的) 非聚簇索引定义: 索引和数据是分开存放的(两个文件存储,索引的 阅读详情

InnoDB和MyISAM的区别:

  1. 事务支持:InnoDB支持事务处理,具有提交、回滚和崩溃修复能力,而MyISAM不支持事务。
  2. 行级锁定:InnoDB支持行级锁定,而MyISAM只支持表级锁定。
  3. 外键约束:InnoDB支持外键约束,而MyISAM不支持。
  4. 存储结构:InnoDB的存储结构是聚簇索引,而MyISAM是非聚簇索引。
  5. 崩溃恢复:InnoDB在崩溃后能够恢复,而MyISAM可能会丢失数据。

聚簇索引和非聚簇索引的区别:

  1. 数据存储方式:聚簇索引中,数据行和索引是存储在一起的,即表中的数据按照主键的顺序存储。而非聚簇索引中,索引和数据是分开的,索引只是指向数据行的指针。
  2. 索引结构:聚簇索引的叶节点直接包含了行数据,而非聚簇索引的叶节点是行的地址。
  3. 主键要求:在InnoDB中,表必须有一个聚簇索引,通常是主键。如果没有明确指定主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会生成一个隐藏的聚簇索引。而在MyISAM中,可以没有主键。

B+树和B树的区别:

  1. 节点结构:B+树的非叶子节点不保存关键字记录的指针,只进行数据项(关键字)的索引,这使得B+树的非叶子节点相对B树更小,因此I/O操作更频繁,但每次I/O操作的数据量更小。
  2. 叶子节点:B+树的叶子节点保存了父节点的所有关键字记录的指针,且叶子节点本身是根据关键字的大小从小到大顺序链接。这使得范围查询更加简单,只需要找到范围的起始点,然后沿着叶子节点顺序遍历即可。
  3. 分裂与合并:B+树在插入和删除时,只会对叶子节点进行操作,分裂和合并也只在叶子节点进行,这使得B+树的分裂和合并操作更加简单。

B+树和B树的原理:

B+树和B树都是平衡的多路搜索树,它们的原理是通过对树进行分裂和合并操作,保持树的平衡,从而确保搜索、插入和删除操作的效率。B+树和B树的主要区别在于节点的结构和叶子节点的使用方式,这些差异使得B+树在范围查询和磁盘I/O操作上更具优势。

数据库学习03——深入理解 MySQL InnoDB 和 MyISAM 底层 B + 树的区别 InnoDB:聚簇索引叶子节点存储数据,辅助索引叶子节点存储主键值。MyISAM:索引叶子节点存储数据指针,数据单独存储在数据文件。 阅读详情

相关推荐

MySQL索引

MySQL的索引类型包括B+树、聚簇索引、非聚簇索引、哈希索引和空间索引。B+树索引常用于单列、组合索引以及全文检索。其中聚簇索引将数据存储在叶子节点,非聚簇索引通过主键指针查找数据。组合索引遵循最左前缀原则。B树与B+树的区别在于数据存储结构,B+树只在叶子节点存储数据,适合范围查找。MySQL中InnoDB引擎使用聚簇索引,MyISAM则使用非聚簇索引,数据存储和索引结构不同。

xnqwq1314的博客 1406

Mysql引擎 ( myIsam非聚集索引和InnoDB聚集索引)

一.什么是索引? 排好序的快速查找数据结构就是索引。 优势:提高了检索效率,降低了数据库IO成本,通过索引对数据进行排序,降低了CPU消耗。 劣势:大大的增加了查询效率,同时也降低了更新表的速度,每次更新删除插入都要更新索引文件 为什么使用主键自增? ①.如果我们定义主键,那么Innodb会选择主键作为聚集索引,如果没有定义主键,则Innodb会选择第一个不包含有NULL的唯一索引作为主按键索引。 ②数据记录本身被存于主索引(一颗B+树)的叶子节点上,这时候就要求各条数据记录按住键顺序存放,因此每条记录插入

qq_44293253的博客 338

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置)

本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。

weixin_28720767的博客 315

MySQL索引:聚簇索引和非聚簇索引

参考:https://www.cnblogs.com/crazylqy/p/7615393.html 一:MySQL聚簇索引和非聚簇索引 1、聚簇索引 聚簇索引就是对磁盘上的实际数据重新组织以按照特定的一个或者多个列的值排序的算法 特点是存储数据的顺序和索引顺序一致 一般情况下主键会默认生成聚簇索引 且一张表有且只有一个聚簇索引;将数据存储与索引放到了一块,找到索引也就找到了数据。 2、非聚簇索引 非聚簇索引:数据存储和索引分开放,索引结构的叶子节点指向了数据的对应行,myisam通过 key_

a898712940的博客 367

Streamlit(九) widgets-input

st.text_input / st.number_input / st.date_input / st.time_input 源码路径:${python}\Lib\site-packages\streamlit\elements\text_widgets.py(number_input.py, time_widgets.py) st.text_input st.text_input(label, value="", max_chars=None, key=None,\

heianduck的博客 3354

从12摄像头到纯视觉:小鹏AI鹰眼方案如何用LOFIC技术省掉激光雷达?

本文深入解析小鹏汽车AI鹰眼方案如何通过LOFIC技术实现纯视觉自动驾驶,替代传统激光雷达。LOFIC摄像头在动态范围、噪声控制和HDR优化方面表现卓越,结合800万像素双目广角摄像头,达到激光雷达级测距精度。该方案不仅降低成本,还提升系统可靠性和用户体验,展示了纯视觉路线的技术潜力与边界。

t8u9v0w1x的博客 932

B树与B+树的区别是什么? InnoDB和MyISAM的区别是什么? MySQL索引优化、索引失效?

B树与B+树的区别是什么? InnoDB和MyISAM的区别是什么? MySQL常见的索引类型有什么? 索引优化的方法你能说出几个? 索引什么时候失效?

一个喜欢诗和远方的程序媛 1310

大模型风电功率预测:短期,超短期,中长期的完整实现与代码详解

本文全面介绍了基于深度学习大模型的风电功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)三种时间尺度。文章详细阐述了数据准备与特征工程,包括数据收集、预处理和可视化分析。针对不同时间尺度,分别介绍了Temporal Fusion Transformer (TFT)、Informer和N-BEATS模型的构建、训练与评估方法,并提供了完整的开源代码实现。此外,文章还探讨了模型部署与生产环境集成,包括模型保存与加载、实时预测API以及模型监控与再训练。最后,文章总结了关键创新

专注AI大模型,软件混淆,授权 1888

Mysql 索引(二)—— InnoDB 与 MyISAM 索引方式的比较(聚簇索引 VS 非聚簇索引)

Mysql 索引(二)—— InnoDB 与 MyISAM 索引方式的比较(聚簇索引 VS 非聚簇索引)

challenglistic的博客 475

pycharm一直选择不了conda正确路径弹框报错:latinit property envs_dirs has not been initialized...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2911

破盾实录|Vueling航空阿卡迈防护逆向:从503挑战到Cookie生成的全流程拆解

摘要:文章分享了作者在爬取西班牙伏林航空(Vueling)机票数据时,遭遇阿卡迈(Akamai)防护系统的实战经历。起初简单的请求被拦截返回503错误,分析发现阿卡迈通过混淆JS代码实施"挑战-验证"机制,需模拟真实浏览器环境才能获取有效Cookie。作者详细拆解了逆向过程:从抓包分析JS挑战流程,到破解代码混淆和控制流平坦化,最终用Python+Pyppeteer成功模拟浏览器特征,突破防护获取数据。整个过程涉及JS反混淆、环境检测绕过和Cookie生成验证等关键技术点,为类似防护系统

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1642

面渣逆袭:MySQL六十六问!建议收藏

内连接(inner join):取得两张表中满足存在连接匹配关系的记录。外连接(outer join):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足匹配关系的记录。交叉连接(cross join):显示两张表所有记录一一对应,没有匹配关系进行筛选,它是笛卡尔积在SQL中的实现,如果A表有m行,B表有n行,那么A和B交叉连接的结果就有m*n行。

程序员高级码农的博客 1480

大厂面试:字节跳动大数据面试题及参考答案(10万字长文及多张原理图持续更新)

在 Spark 中,宽窄依赖是用来描述 RDD(弹性分布式数据集)之间的依赖关系的概念。窄依赖是指父 RDD 的每个分区最多被一个子 RDD 的分区使用,即子 RDD 的分区可以通过确定的规则从父 RDD 的分区计算得到,并且不需要跨节点进行数据传输。窄依赖通常可以在一个节点上进行计算,不需要进行数据的 shuffle 操作,因此性能较高。宽依赖是指父 RDD 的一个分区可能被多个子 RDD 的分区使用,即子 RDD 的分区需要通过跨节点的数据 shuffle 操作从父 RDD 的多个分区获取数据。

大模型大数据攻城狮的专栏 1650

B树和B+树,聚簇索引和非聚簇索引

索引类型在订单表中的实例核心作用聚簇索引主键order_id自动创建加速按订单ID的精确查询,数据物理顺序与索引一致非聚簇索引(user_id)加速按用户ID的查询(需回表)非聚簇索引(联合)加速按时间范围+状态的查询,支持覆盖索引通过合理设计聚簇索引(绑定主键)和非聚簇索引(针对高频查询字段),可大幅提升订单表的查询效率。

liweiweili126的博客 1191

CDD数据库文件制作(二)——DTC配置

1.DTC库 2.新建DTC DTC相关介绍:https://blog.youkuaiyun.com/LOVE135149/article/details/122565443 ① 选择DTC数据库 ② 点击新建DTC ③ DTC参数编辑 3.将DTC库中的DTC加载到Variant中 找到Fault Memory的DTC Table,鼠标放在DTC Table区域,右键点击选择Copy … Reference from Available DTCs…,即可将DTC库中的故障码加载至Variant中。 虽然选择Co

LOVE135149的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

面试题知识点笔记-MySQL索引

个人学习笔记,记录了MySQL面试时索引相关知识,学习视频来自https://www.bilibili.com/video/BV1N24y1y7a1?p=46&vd_source=6d6a08fa1171692d2a6f755b358208be

qq_51586702的博客 1193

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

B树和B+树

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 B树和B+树前言一、B树和B+树的区别二、不同数据库引擎中B+树的差异 前言 填之前文章的坑,就聊一聊主要区别吧。 面试官:B树和B+树有什么区别?聊一聊吧。 一、B树和B+树的区别 B树的每个节点存储了key和data,key是一条数据记录的键值 ,是唯一的,data存储的是数据记录除key以外的数据。而B+树只在叶子节点存储data数据,这样非叶子节点就能存储更多的key。所以B+树相较于B树来说更加的矮胖,因为索引树很大不能一

weixin_43256529的博客 8214

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【MySQL笔记】正确的理解MySQL的索引机制以及内部实现(二)

正确的理解MySQL的索引机制以及内部实现, 第二部分更倾向于讲解MySQL B+树索引的实现原理

长路漫漫的歇脚处 3965

《MySQL高级篇》四、索引的存储结构

《MySQL高级篇》四、索引的存储结构

LXYDSF的博客 5050

面试【索引】聚簇和非聚簇,非聚簇索引树,Innodb和mysisam,Hash索引和B+树索引优缺点

面试【索引】聚簇和非聚簇,非聚簇索引树,Innodb和mysisam,Hash索引和B+树索引优缺点

qq120631157的博客 287

mysql 聚簇索引和非聚簇索引的用法_聚簇索引和非聚簇索引(通俗易懂 言简意赅)...

总结:InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分;一般建表会用一个自增主键做聚簇索引,没有的话MySQL会默认创建,但是这个主键如果更改代价较高,故建表时要考虑自增ID不能频繁update这点。我们日常工作...

weixin_36015463的博客 668

为什么mysql要使用B+树

思路顺序: 一、首先我们的一个表的数据在磁盘上由于插入顺序的原因肯定不是顺序存放,如果按照表字段内容顺序查找,如果一个500万条数据的表,要找的刚好是第500万个值,则需要与磁盘做500万次IO,效率低下 二、为什么不用二叉树,如果将一个乱序的数据放入二叉树中,效率会高,但是如果数据是有顺序的,比如1、2、3、4、5,则二叉树将会编程一个链表的样式,失去了二叉树的优势 三、为什么不用红黑树,红黑树也叫二叉平衡树,红黑树可以有效解决掉顺序数据一次放入二叉树而导致的形成链表的结果,但是红黑树一个节点只能存

zaoanmiao的博客 2754

MySQL高级第二篇:索引的分类及MyISAM与InnoDB中的索引对比

这个很简单,每个页只存储一条的话,完全没有什么效果,连树的结构都不能形成。针对主键构建的索引,聚簇即数据行和相邻的键值存储在一起。聚簇索引并不是一种单独的索引类型,而是一种。,即所有的用户记录都存储在了叶子结点,可以有多个非聚簇索引。同时为多个列建立索引。

I wanna be myself, where I Belong. 571

MySQL索引详解之索引的存储方式

前言 很多人对数据库索引可能都是知其然却不知其所以然,对索引没有很深入的理解,在使用过程中也一知半解,导致没有办法准确高效地使用索引,甚至存在不少误用的情况,导致使用索引反而降低了系统的性能。下面就以MySQL索引为对象,通过几篇文章来带大家好好的学习下索引的知识。 索引的数据结构 索引的存储方式 索引的利弊以及高效使用 数据存储方式 上篇文章我们了解了索引的数据结构,下面我们再来了解另外一个概念...

X先生说 6450

MySQL 之索引详解(B树 & B+树), B+树数据量计算

一文掌握MySQL索引数据结构、原理和操作。

zwl2220943286的博客 2249

MySQL面试题--最全面-索引

自适应哈希索引是Innodb引擎的一个特殊功能,当它注意到某些索引值被使用的非常频繁时,会在内存中基于B-Tree所有之上再创建一个哈希索引,这就让B-Tree索引也具有哈希索引的一些优点,比如快速哈希查找。这是一个完全自动的内部行为,用户无法控制或配置。使用命令:查看INSERT BUFFER AND ADAPTIVE HASH INDEX;多叉树(multiway tree)允许每个节点可以有更多的数据项和更多的子节点。2-3树,2-3-4树就是多叉树,多叉树通过。

Timebro的博客 3765
上一篇: mysql 的读取流程 bufferpool redolog undolog mvcc流程原理 lru链表
下一篇: redis rdb aof 主从复制 崩溃恢复 过程
vmaps
博客等级 码龄17年 424粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值