一、索引是什么?

索引是帮助Mysql高效获取数据的排好序的数据结构


二、为什么Mysql使用B+Tree数据结构而不是用B-Tree?

因为大部分情况都需要范围查找,然而B+Tree每个**叶子结点都用指针连接,区间访问**的性能更高


三、介绍一下mysql的存储引擎是什么?

1.MyISAM存储引擎

1)后缀 “MYD“ 存储表数据的 “MYI“ 存储索引的
2)非聚集索引 - (索引文件和表数据文件分开存储
MyISAM存储引擎的结构.png

2.InnoDB存储引擎(mysql5.5以上版本默认)

1)表数据文件本身就是按B+Tree组织的索引结构文件
2)聚集索引(索引和数据存储在一个地方) - 叶子节点包含了完整的数据记录
3)数据文件和索引文件都存储在后缀为idb的文件
InnoDB存储引擎结构.png

3.为什么mysql默认使用InnoDB作为存储引擎?

1)MyISAM
没有事务处理机制(数据有可能丢失,不安全),只有表级锁,而不是性能更优的行级锁,在备份数据的时候需要把整张表都锁住,导致其他客户端要操作时只能等待
2)InnoDB
支持事务、行级锁、外键和缓存,他的高并发的支持也比较好,因为要锁也只是锁住一行,而不是整张表,所以InnoDB的功能和性能会比较好