MySQL数据库文件介绍

jopen 10年前

mysql的数据储存目录在mysql的配置文件my.ini文件设置,格式如下:
# Uncomment the following rows if you move the MySQL distribution to another
# location
basedir = d:/cyoa/mysql_cy/
datadir = d:/cyoa/mysql_cy/data/    

      其中datadir目录定义了mysql的数据存储位置,MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中(该目录下datadir参数对应的目录下),MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。

MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI
MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,ibdata1、.ibd文件默认存放位置是MySQL安装目录下的data文件夹.

1、MySQL创建并管理的数据库文件:
.frm文件:存储数据表的框架结构,与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等,文件名与表名相同,每个表对应一个同名frm文件与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。
除了必有的.frm文件,根据MySQL所使用的存储引擎的不同(MySQL常用的两个存储引擎是MyISAM和InnoDB),存储引擎会创建各自不同的数据库文件。
.MYD文件:即MY Data,表数据文件
.MYI文件:即MY Index,索引文件
.log文件:日志文件

2、InnoDB采用表空间(tablespace)来管理数据,存储表数据和索引,
      InnoDB数据库文件(即InnoDB文件集,ib-file set),该文件一般存在在mysql的数据目录下,如:ibdata1、ibdata2等系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用.ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止 MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。

3、日志文件: ib_logfile1、ib_logfile2


索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。