八股训练营第 17 天 | MySQL的执行引擎有哪些?MySQL为什么使用B+树来作索引?说一下索引失效的场景?

MySQL的执行引擎有哪些?

MySQL 的执行引擎用于查询的执行和数据的存储,常见的 MySQL 存储引擎包括 InnoDB、MyISAM、Memory。

  • InnoDB:MySQL 的默认存储引擎。支持事务 ACID、行级锁和外键约束。适用于需要事务和高并发的应用。
  • MyISAM:MySQL 早期版本的默认引擎。不支持事务、行级锁和外键约束。采用全文索引。使用于需要访问速度快、数据量不大的场景。
  • Memory:将数据全部放入内存中。访问速度快。但数据库一旦崩溃重启,所有数据都会丢失。

MySQL为什么使用B+树来作索引?

B+ 树是 B 树的变种,提供了更好的数据检索、插入和删除、范围查询性能。

  • 单点查询:B 树的单点查询时间复杂度为 O(logn)。虽然 B 树的单点查询速度更快,但由于 B 树的非叶子节点和叶子节点都存储索引和数据,导致 B 树的查询速度不稳定。而 B+ 树由于非叶子节点只存储索引,叶子节点存储索引和数据,所以 B+ 树的查询速度更加稳定。且在数据量相同的时候,B+ 树的非叶子节点能够存储更多的索引,会比 B 树更加矮胖,磁盘的 I/O 次数更少。
  • 数据的插入和删除:由于 B+ 树有大量冗余节点,在删除节点时很可能只需在叶子节点操作,不涉及非叶子节点的变形。在插入时也最多涉及到一条路径的分裂。而 B 树插入和删除数据时可能会有比较复杂的节点的变形。
  • 范围查询:B+ 树的叶子节点之间用双向链表连接,可以比较方便地进行范围查询。而 B 树叶子节点之间没有双向链表连接,范围查询时需要中序遍历搜索二叉树,磁盘 I/O 次数多,效率低。

说一下索引失效的场景?

索引失效指的是查询操作不能利用索引,可能进行全表查询,从而导致查询性能下降。

  1. 使用 or 操作,前面是索引列,后面不是索引列。
  2. 对索引列使用函数或表达式计算。
  3. 索引列发生了类型转换。
  4. 使用 % 开头的 like 模模匹配。
  5. 联合索引不遵循最左匹配原则。
  6. 联合索引中间使用的范围查询,那么右边的索引会失效。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值