MySQL索引

1. MySQL的执行过程

在这里插入图片描述
索引存在的作用: 就是为了减少磁盘IO的次数。

2. 索引的数据结构选择

  • 索引需要持久化存储吗?

需要的。

  • 索引到底存储了什么数据?

索引关键字段-文件位置-文件的偏移量(地址)

  • 使用什么数据结构?

树和Hash表。

  • 什么是OLAP?其作用是什么?

OLAP表示联机分析处理。是对海量数据进行分析,不要求在短时间内返回结果,应用场景比如数据仓库。

  • 什么是OLTP?其作用是什么?

OLTP是联机事物处理。就是我们所说的增删盖查。应用场景比如说是数据库。

3. 数据结构的选择

cpu读取磁盘中的数据单元(页),每个页的大小由操作系统决定,一般是4k或者8k,程序在读取磁盘数据时,一般读取页的整数倍(16k)。
  • BST:容易退化成链表。
  • AVL-Tree:是严格意义上的平衡二叉树,查找非常OK,但是插入的代价变得很大。适合读多写少的业务。
  • 红黑树: 是不严格平衡二叉树,相当于中和了一下读写的性能消耗。

当节点很多时,二叉树的深度还是会变得不可接受,所以MySQL中选择多叉搜索树。

B-Tree

  • B-树:数据存储在节点中。如上图。
    *B+Tree
  • B+Tree:将数据全部移动到叶子结点上去,那么分支结点只存储指针,假设一个数据块的大小为16kb,那么一个分支结点就可以存储好多个指针。让一个B+树可以支持千万级别的表。B+树的叶子结点是被双相链表所链接起来的。

MySQL Innodb是将数据和索引存放在一个文件当中的。
Innodb索引

MySQL MyISAM是将索引和数据分开来存储的。
MyISAM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值