首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL索引详解-001-MySQL的文件结构

前言

当MySQL不作为内存数据库,而作为磁盘数据库时,所有的文件最终都要放在磁盘中,在下面我们就去看看索引它到底在哪儿?

微信公众号:JavaWeb架构师

MySQL的目录结构

InnoDB数据库引擎

MyISAM数据库引擎

这些文件到底是干什么的呢?下面慢慢开始

与数据库引擎无关的.frm

在上面的目录结构中,不难发现,.frm文件是两个数据库引擎都共有的文件,那么它的存储了哪些信息?有哪些功能呢?

保存表的元数据,包括表结构定义

可以在数据库奔溃的时候恢复表结构(如何恢复?比较简单,文件替换就行,这里就不说了,大家有兴趣的话,可以百度搜索)

MyISAM引擎文件

这种数据库引擎特点是快,所以对文件的划分是比较独立的

.myd:全称 .mydata,存放表数据

.myi:全称 .myindex,存放索引文件

.log:日志文件

InnoDB引擎文件

这种引擎更加关注事务,多以采用表空间的形式来管理数据、存储表数据、存储索引

文件:

ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息、用户数据库表数据、索引

.ibd:单表表空间文件,每个表使用一个表空间文件,存放用户数据库表数据、索引

ib_logfile1、ib_logfile2:日志文件

InnoDB管理主要基于两个文件 表空间数据文件、日志文件。InnoDB可以使用公共表空间或独立表空间

共享表空间

只为每张表单独建立.frm文件,将所有表数据和索引保存到.ibdata1文件中去,缺点是拷贝时需要拷贝整个文件,且删除表后容易造成碎片

独立表空间

为每张表建立一个.frm文件、.ibd文件。.ibd文件用来存储表数据、索引。这时MySQL将数据表信息、索引信息写到.ibd文件中,但结构信息还是写到.ibdata1中

结语

无论是哪种数据库引擎,我们都发现表数据信息和索引信息是单独提出来作为一个单位存放的,索引和表数据到底是什么联系?请继续学习

视频教程

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180606G08V3900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券