本文意图理解以下几个问题。
一、思考
问题一:索引存放在哪里?
问题二:B+树是如何以文件形式存储,如何读取?
二、分析
-
索引文件位置
索引可以理解为一种数据结构,我们按照这种数据结构能快速定位到数据。大家会很容易想到这种类似字典的概念性东西,但是大家有没有思考过索引自身也是数据,其存放在哪里。如何将这种数据结构存放?多个索引如何存放?如何将存放的数据又转换为内存中的数据结构以便查找?即一个索引文件到底是怎样的?
首先我们看下MYSQL数据存放目录(my.ini配置文件可配置):
该目录下文件:
xzgooo:数据库名,每一个数据库一个独立文件夹。
ibdata1:采用共享表空间方式时(所有数据和索引存储在一个或者多个文件中),数据和索引的存放位置。
xx-slow.log:慢日志存放位置。
对于每一个数据库,例如上图xzgooo: